SSH — основной способ администрирования Linux-серверов и главная мишень автоматизированных атак. Грамотный hardening снижает риск взлома на 95%.
Базовая конфигурация /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
MaxSessions 5
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no
AllowTcpForwarding no
AllowUsers deploy admin
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group14-sha256
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
sshd -t && systemctl reload sshd
Не закрывайте текущую сессию! После изменения порта откройте новое соединение в другой вкладке. Убедитесь что вход работает — только потом закрывайте старую сессию.
Генерация и настройка SSH-ключей
ssh-keygen -t ed25519 -C "server-key-2026" -f ~/.ssh/myserver_ed25519
ssh-copy-id -i ~/.ssh/myserver_ed25519.pub -p 22 user@server
Двухфакторная аутентификация (TOTP)
apt install libpam-google-authenticator -y
google-authenticator
Добавить в /etc/pam.d/sshd: auth required pam_google_authenticator.so
В sshd_config: ChallengeResponseAuthentication yes и AuthenticationMethods publickey,keyboard-interactive
Чеклист SSH Hardening
| Настройка | Значение | Приоритет |
|---|---|---|
| Нестандартный порт | 2222 или другой | Средний |
| PermitRootLogin no | Обязательно | Высокий |
| PasswordAuthentication no | После настройки ключей | Высокий |
| AllowUsers | Только нужные | Высокий |
| MaxAuthTries 3 | Ограничить попытки | Средний |
| fail2ban | Блокировка атакующих IP | Высокий |
| 2FA (TOTP) | Дополнительный фактор | Средний |
Мониторинг попыток входа
journalctl -u ssh --since "1 hour ago" | grep "Failed"
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -20
fail2ban-client status sshd
Максимальная защита: Не открывайте SSH в интернет вообще. Используйте Cloudflare Access или WireGuard VPN как прослойку — SSH доступен только через защищённый туннель.