Как защитить SSH на Linux VPS

Автор: Инженерная команда ONIE · Обновлено 12 ноября 2026 г. · 2 мин чтения

Публичный VPS получает автоматические попытки входа в течение нескольких минут после запуска. Эти шаги значительно усложняют атаку на SSH. Инструкция написана для Ubuntu или Debian. Если сервер ещё не создан, вы можете арендовать Linux VPS и начать с чистого образа. Не закрывайте текущую SSH-сессию, пока не проверите новые настройки из второго окна.

1. Создайте обычного пользователя с sudo

adduser deploy
usermod -aG sudo deploy

2. Используйте SSH-ключи вместо паролей

На своём компьютере:

ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IP

Войдите с ключом один раз, чтобы убедиться, что он работает, и только потом отключайте вход по паролю.

3. Отключите вход по паролю и под root

Создайте файл /etc/ssh/sshd_config.d/99-hardening.conf:

PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3

Проверьте синтаксис и перезагрузите службу. В Ubuntu и Debian она называется ssh, в системах на базе RHEL — sshd:

sudo sshd -t && sudo systemctl reload ssh

Откройте второй терминал и войдите снова. Только после этого закройте старую сессию.

4. Включите файрвол

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose

Откройте только нужные порты, например 80 и 443 для веб-сервера. Также можно ограничить SSH вашим IP-адресом с помощью правила файрвола в панели управления облаком.

5. Блокируйте повторные неудачные попытки с помощью Fail2ban

sudo apt install -y fail2ban

Создайте файл /etc/fail2ban/jail.local:

[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

6. Устанавливайте обновления безопасности автоматически

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

7. Дополнительные меры

  • Смена порта SSH уменьшает количество записей в логах, но сама по себе не является мерой безопасности.
  • Защитите приватный ключ парольной фразой и храните его резервную копию в надёжном месте.
  • Просматривайте входы командами last и sudo journalctl -u ssh --since today.
  • После настройки сервера сделайте снимок, чтобы можно было вернуться к чистому состоянию.

Если доступ к серверу потерян, войдите через консоль браузера в панели облака и исправьте конфигурацию. Следующий уровень защиты описан в нашем руководстве по защите от DDoS.

Часто задаваемые вопросы

Безопасно ли отключить вход под root?

Да, если сначала вы создали пользователя с sudo и проверили, что его ключ работает. Административные команды по-прежнему можно выполнять через sudo.

Нужен ли Fail2ban, если я использую только ключи?

Это необязательно. Когда вход по паролю отключён, подбор пароля не даст результата, но Fail2ban уменьшает количество записей в логах и нагрузку.

Что делать, если я потерял SSH-ключ?

Войдите через консоль в панели облака, добавьте новый открытый ключ в ~/.ssh/authorized_keys и удалите старый.

Источники и дополнительное чтение

Другие руководства по VPS