Минимальная защита SSH на свежем VPS
Публичный IP начинают перебирать по SSH буквально через минуты после запуска сервера. Это не персональная атака, а фоновый шум интернета. Ниже минимальный набор шагов, который я делаю на каждом новом сервере.
Ключ вместо пароля
Генерируем ключ Ed25519 на своём компьютере. Параметр -a 100 задаёт число раундов KDF и усложняет перебор passphrase, если приватный ключ утечёт.
ssh-keygen -t ed25519 -a 100 -C "laptop"
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
Настройки в отдельном файле
Современный OpenSSH читает файлы из /etc/ssh/sshd_config.d/. Важная деталь: для большинства параметров действует первое найденное значение, поэтому файл с префиксом 01- перекроет, например, 50-cloud-init.conf.
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
AllowAgentForwarding no
Проверить до перезапуска
sudo sshd -t && sudo systemctl restart ssh
sudo sshd -T | grep -Ei 'passwordauth|permitroot'
Текущую сессию не закрываю, пока не проверю вход из второго окна. Это самая дешёвая страховка от потери доступа.
Что проверить снаружи
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password user@server
# ожидаем: Permission denied (publickey)
Настройки sshd одинаково действуют на IPv4 и IPv6. А вот файрвол нужно проверять для обоих стеков отдельно.