← К вики

Защита SSH

Как ограничить доступ к SSH и снизить риск взлома сервера.

Время: 15 мин · Сложность: ★★☆☆☆

Подходит: ✓ Ubuntu 22.04 · ✓ Debian 12 · ✓ AlmaLinux 9


Краткое описание

SSH — основной способ управления VPS. По умолчанию он открыт для всего интернета, принимает пароли и разрешает вход root. Изменив несколько параметров в конфигурации, вы закроете большинство векторов атак: перебор паролей, прямой взлом root-аккаунта и сканирование стандартного порта.

Когда пригодится

  • После первого подключения к новому серверу
  • Если в логах (/var/log/auth.log) видите сотни неудачных попыток входа
  • Перед тем как открыть сервер для публичного доступа

Что понадобится

  • Доступ к серверу по SSH
  • Заранее добавленный SSH-ключ в ~/.ssh/authorized_keys (обязательно перед отключением паролей)
  • Текстовый редактор (nano, vim)

Пошаговая инструкция

Откройте конфигурационный файл SSH:

nano /etc/ssh/sshd_config

Найдите и измените (или добавьте) следующие параметры:

# Отключить парольный вход — только ключи
PasswordAuthentication no

# Запретить вход root напрямую
PermitRootLogin no

# Разрешить только конкретных пользователей
AllowUsers youruser

# Сменить порт (опционально, снижает шум в логах)
Port 2222

# Ограничить число попыток аутентификации
MaxAuthTries 3

Замените youruser на имя вашего пользователя. Если планируете сменить порт — не забудьте открыть его в файрволе до перезапуска SSH.

Проверьте конфигурацию на синтаксические ошибки:

sshd -t

Если ошибок нет, перезапустите службу:

systemctl restart sshd

Не закрывайте текущую SSH-сессию. Откройте новое окно терминала и проверьте, что вход по ключу работает — только после этого можно быть уверены в корректности настроек.

Проверка результата

Попытайтесь войти с паролем из нового терминала:

ssh -o PreferredAuthentications=password user@your-server

Ответ должен быть:

Permission denied (publickey).

Если меняли порт, проверьте подключение явно:

ssh -p 2222 user@your-server

Возможные ошибки

Потеряли доступ к серверу — бывает, если отключили пароли до того как убедились что ключ работает. Откройте VNC-консоль в панели VMmanager, войдите как root и верните PasswordAuthentication yes, затем перезапустите sshd.

sshd не запускается после изменений — скорее всего синтаксическая ошибка в конфиге. Запустите sshd -t чтобы найти строку с ошибкой, исправьте и повторите.

AllowUsers не пускает нужного пользователя — убедитесь что имя написано без опечаток и без лишних пробелов. Директива чувствительна к регистру.

Порт уже занят — проверьте ss -tlnp | grep 2222. Выберите другой свободный порт.

FAQ

Нужно ли менять порт? Это не обязательная мера безопасности, но сокращает количество попыток перебора в логах. Если у вас настроен Fail2Ban, смена порта менее критична.

Можно ли разрешить несколько пользователей в AllowUsers? Да, перечислите их через пробел: AllowUsers alice bob deploy.

Как добавить SSH-ключ если я ещё этого не сделал? С вашего локального компьютера выполните: ssh-copy-id user@your-server. Или вручную добавьте содержимое ~/.ssh/id_rsa.pub в файл ~/.ssh/authorized_keys на сервере.

Что такое MaxAuthTries? Максимальное количество попыток аутентификации за одно соединение. После достижения лимита SSH разрывает соединение.

Полезные ссылки

  • man sshd_config — полная документация по параметрам конфигурации
  • /var/log/auth.log — лог попыток входа (Ubuntu/Debian)
  • /var/log/secure — лог входов на AlmaLinux

Следующие статьи

Сейчас работают только те cookie, без которых сайт не откроется. Разрешите ещё аналитические — будем видеть, где интерфейс мешает, и чинить это.