Защита 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