Сетевой блокнот

Базовая защита SSH на новом сервере

Ubuntu 22.04 LTS · чтение 4 минуты

Сразу после создания сервера в журнале появляются попытки подбора паролей. Несколько простых настроек убирают большую часть этого шума и делают вход предсказуемым.

1. Отдельный пользователь и ключ

Создайте ключ на своём компьютере и скопируйте открытую часть на сервер:

ssh-keygen -t ed25519 -f ~/.ssh/server_ed25519
ssh-copy-id -i ~/.ssh/server_ed25519.pub admin@server.example

Закрытый ключ остаётся только у вас. Защитите его парольной фразой.

2. Настройка sshd

Вместо правки основного файла положите свои параметры в отдельный, он читается раньше и не затрётся при обновлении пакета:

sudo tee /etc/ssh/sshd_config.d/10-hardening.conf >/dev/null <<'EOF'
PasswordAuthentication no
PermitRootLogin no
KbdInteractiveAuthentication no
MaxAuthTries 3
LoginGraceTime 20
EOF

3. Проверка без потери доступа

Ошибка в конфигурации может закрыть вход. Порядок безопасных действий:

  1. Оставьте текущую сессию открытой.
  2. Проверьте синтаксис: sudo sshd -t.
  3. Примените: sudo systemctl reload ssh.
  4. В новом окне убедитесь, что вход по ключу работает, и только потом закрывайте старую сессию.

4. Ограничение подбора

Если порт SSH открыт всему интернету, добавьте защиту от перебора. Подойдёт fail2ban или правило брандмауэра с ограничением частоты:

sudo ufw limit 22/tcp
sudo ufw enable

Перед ufw enable убедитесь, что порт SSH разрешён.

Что проверить в итоге

КомандаОжидаемый результат
sudo sshd -T | grep -i passwordauthpasswordauthentication no
ss -tlnp | grep :22sshd слушает порт
journalctl -u ssh --since todayВидны только успешные входы по ключу и отклонённые попытки