Гайд

Первые 30 минут: чек-лист усиления VPS

Свежий VPS получает первый SSH-скан в течение минут после получения IP. Вот точная последовательность, которую я выполняю на каждом новом боксе — готово к копипасту для Debian 13, с таблицей чек-листа в конце.

Допущения: свежий образ Debian 13 из вашего деплоя VPSRento, вы вошли как root по SSH, и пример IP — 185.220.101.14 — подставьте свой. Общее время: около получаса. Выполняйте шаги по порядку; шаг 2 может заблокировать вас, если поспешить.

1. Создайте своего sudo-пользователя

Работа под root — это как опечатки превращаются в инциденты. Создайте реального пользователя, дайте ему sudo и делайте всё оттуда:

# create the user (you'll set a password — still useful for sudo)
adduser ops

# grant sudo
usermod -aG sudo ops

Всё ниже этого пункта выполняется как ops , если не указано иное.

2. Только SSH-ключи — никаких паролей, никакого root-логина

Парольная аутентификация — самая большая дыра на интернет-ориентированном боксе. Боты долбят порт 22 списками учёток весь день, каждый день. Ключи делают весь класс атак неактуальным. На вашей локальной машине:

# generate a keypair if you don't have one (ed25519, no passphrase tradeoff is yours)
ssh-keygen -t ed25519 -C "ops@atlas"

# push the public key to the server
ssh-copy-id [email protected]

Убедитесь, что можете войти с ключом в новом терминал — ssh [email protected] — перед тем как трогать конфиг. Держите существующую root-сессию открытой как запасной выход. Затем отредактируйте /etc/ssh/sshd_config:

# /etc/ssh/sshd_config — the three lines that matter
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
# validate the config, then reload (Debian 13 uses ssh.service)
sshd -t && systemctl reload ssh

prohibit-password вместо плоского no для root намеренно: root всё ещё может аутентифицироваться с ключом с вашей рабочей станции, что иногда полезно для восстановления через консоль провайдера — но никакой пароль никогда не сработает, ни для кого, ниоткуда. Подтвердите с помощью sshd -T | grep -E 'passwordauthentication|permitrootlogin'.

3. Файрвол: запрет по умолчанию, разрешайте только то, что запускаете

ufw в Debian — тонкий, адекватный слой поверх nftables. Политика — это безопасность; правила — лишь исключения из неё:

apt update && apt install -y ufw

ufw default deny incoming
ufw default allow outgoing

# SSH stays open — add this BEFORE enabling
ufw allow 22/tcp comment 'SSH'

# whatever your box actually serves, e.g.:
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'

ufw enable
ufw status verbose

Каждый открытый порт должен иметь имя и причину. Если вы не можете назвать, для чего порт, — ему не место в правилах.

4. fail2ban: замедлите ботов до ползания

С отключённой парольной аутентификацией брутфорс уже мёртв — но fail2ban держит ваши логи читаемыми и банит сканеры, которые тыкаются во всё остальное:

apt install -y fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled  = true
port     = ssh
maxretry = 5
findtime = 10m
bantime  = 1h
systemctl enable --now fail2ban

# watch it work
fail2ban-client status sshd

5. Автоматические обновления безопасности

Незапатченная CVE — больший риск, чем перезагрузка. unattended-upgrades в Debian устанавливает обновления безопасности сам:

apt install -y unattended-upgrades

# answer Yes to auto-install updates
dpkg-reconfigure -plow unattended-upgrades

Конфиг по умолчанию в /etc/apt/apt.conf.d/50unattended-upgrades тянет только из security-репозитория — что и нужно на сервере: исправления безопасности автоматически, всё остальное — когда вы решите.

6. Отключите то, что не запускаете

Каждый работающий сервис — это поверхность атаки, которую придётся патчить. Посмотрите, что реально слушает:

# who is listening, on what, as which process
ss -tulpn

# everything enabled at boot
systemctl list-unit-files --state=enabled

# example: you don't run a print server — nobody does
systemctl disable --now cups

Правило: если вы не можете сказать, что делает слушатель, — выясните, прежде чем позволить ему жить. На минимальном образе VPSRento должно быть очень мало кроме sshd и вашего собственного приложения.

7. Опционально, но рекомендуется: плоскость управления WireGuard

Самая сильная версия безопасности SSH — это SSH, который вообще не выходит в интернет. Запустите WireGuard на сервере, разрешите SSH только внутри туннеля, и порт 22 исчезнет из поля зрения всех сканеров на земле:

apt install -y wireguard

# /etc/wireguard/wg0.conf — minimal management tunnel
# [Interface] Address = 10.8.0.1/24, ListenPort = 51820

# open the tunnel, not the shell
ufw allow 51820/udp comment 'WireGuard'
ufw allow in on wg0 to any port 22 proto tcp comment 'SSH via WG'
ufw delete allow 22/tcp

systemctl enable --now wg-quick@wg0

После этого вы ssh [email protected] через туннель, и публичный IP отвечает ровно на один UDP-порт. Полное руководство по WireGuard — ключи, пиры, конфиги клиентов, QR-коды для телефона — в сопутствующем руководстве.

Контрольный список из 10 пунктов

Пройдитесь по этой таблице после каждого нового деплоя и снова после каждого добавленного сервиса:

#ПунктГде находитсяПроверить с помощью
1Не-root sudo пользователь/etc/passwdid ops
2SSH-аутентификация только по ключамsshd_configsshd -T | grep passwordauth
3Вход root по паролю отключенsshd_configsshd -T | grep permitrootlogin
4Файрвол: запрет входящих по умолчаниюufwufw status verbose
5Открыты только именованные портыufwufw status numbered
6Тюрьма fail2ban sshd активнаjail.localfail2ban-client status sshd
7Автоматические обновления безопасностиaptsystemctl status unattended-upgrades
8Нет необъяснимых слушателейss -tulpn
9Управление через WireGuard (опционально)wg0.confwg show
10Снапшот после укрепленияДополнение в клиентской зоне, $1.99/месУслуги → ваш VPS → снапшоты

Пункт 10 заслуживает одного предложения: сначала укрепление, потом снапшот, в таком порядке — снапшот чистого укрепленного сервера — это ваш откат для любой будущей ошибки. Ежедневные внешние снапшоты — это дополнение за $1.99/мес в клиентской зоне. Тридцать минут профилактики, один клик страховки.

Разверните чистый сервер и укрепите его самостоятельно.

Образ Debian 13, полный root за 55 секунд, чистый IP проверен по 40+ черным спискам. От $5.99/мес.

Русский