SSH — это не просто удобный инструмент удалённого доступа к серверам, а настоящие ворота в вашу инфраструктуру. И эти ворота ежесекундно атакуют тысячи ботов по всему миру, пытаясь подобрать пароль методом грубой силы. Защита SSH от брутфорса — не рекомендация, а обязательный минимум безопасности для любого системного администратора и владельца VPS. В этом руководстве мы разберём не только базовые методы, но и продвинутые техники, которые сделают ваш SSH практически неуязвимым.
Почему SSH — главная цель атак?
Протокол SSH по умолчанию использует порт 22, который сканируется автоматическими ботами постоянно. Злоумышленники используют словари распространённых паролей, уязвимости в старых версиях ПО и человеческий фактор. Успешный взлом даёт полный контроль над сервером — от установки вредоносного ПО до кражи данных и организации ботнета.
Важно: По данным Shodan, более 15 миллионов SSH-серверов доступны в интернете, и значительная часть из них использует стандартные настройки или слабые пароли.
Базовые методы защиты: обязательный минимум
1. Смена порта по умолчанию
Самый простой, но эффективный метод — перенести SSH с порта 22 на любой другой (например, 2222, 48222). Это не скроет сервис от целенаправленного сканирования, но резко сократит количество автоматических атак.
2. Отказ от парольной аутентификации
Полностью отключите вход по паролю в файле /etc/ssh/sshd_config, установив PasswordAuthentication no. Используйте только ключи SSH.
- Сгенерируйте пару ключей на клиенте:
ssh-keygen -t ed25519 - Загрузите публичный ключ на сервер:
ssh-copy-id -p порт user@host - Обязательно настройте парольную фразу для приватного ключа
3. Ограничение пользователей
Разрешите доступ по SSH только определённым пользователям через директиву AllowUsers. Никогда не разрешайте вход под root напрямую.
Продвинутая защита: профессиональный уровень
Fail2ban — автоматический бан атакующих
Эта утилита анализирует логи SSH и автоматически блокирует IP-адреса после нескольких неудачных попыток входа.
- Установка:
apt install fail2ban(Debian/Ubuntu) - Настройка времени бана и количества попыток в
/etc/fail2ban/jail.local - Мониторинг:
fail2ban-client status sshd
Совет: Настройте Fail2ban на отправку уведомлений о блокировках на email или в Telegram. Это поможет отслеживать активность атак в реальном времени.
Geoblocking — географическая фильтрация
Если ваш сервер обслуживает пользователей только из определённых стран, заблокируйте все остальные регионы через iptables или облачные firewall (например, в DigitalOcean, AWS).
Port knocking — скрытый порт
Техника, при которой порт SSH открывается только после отправки специальной последовательности пакетов на другие порты. Для злоумышленника сервер выглядит как система без открытых SSH-портов.
Двухфакторная аутентификация (2FA)
Даже при использовании ключей можно добавить дополнительный фактор через Google Authenticator или Duo Security. Настройка требует установки PAM-модулей, но обеспечивает максимальный уровень безопасности.
Мониторинг и анализ логов
Регулярно проверяйте логи SSH: journalctl -u ssh или /var/log/auth.log. Обращайте внимание на:
- Неудачные попытки входа (особенно под разными пользователями)
- Подозрительные IP-адреса (из неожиданных стран)
- Аномальную активность в нерабочее время
Чего следует избегать
- Слабые пароли — даже если парольная аутентификация отключена, убедитесь, что у всех пользователей установлены сложные пароли
- Устаревшие версии OpenSSH — регулярно обновляйте ПО
- Излишние разрешения — не давайте SSH-доступ пользователям, которым он не нужен
- Игнорирование логов — мониторинг не менее важен, чем настройка
FAQ: Ответы на частые вопросы
Можно ли полностью защититься от брутфорса?
Да, комбинация ключей SSH вместо паролей, Fail2ban и смены порта делает взлом методом грубой силы практически невозможным.
Что надёжнее: длинный пароль или ключ SSH?
Ключ SSH (особенно ed25519 или RSA 4096 бит) математически более безопасен, чем любой запоминаемый пароль. Ключи не подвержены словарным атакам.
Как часто нужно менять SSH-ключи?
При использовании стойких алгоритмов (ed25519) и защищённых клиентов менять ключи можно раз в 1-2 года. Чаще меняйте при подозрении на компрометацию.
Может ли Fail2ban заблокировать меня самого?
Да, если вы несколько раз ошибётесь при вводе пароля или ключа. Всегда имейте альтернативный способ доступа к серверу (консоль в панели управления VPS).
Достаточно ли только смены порта?
Нет. Это только первый шаг. Смена порта защищает от массовых атак, но не от целенаправленного взлома. Всегда используйте ключи и дополнительные средства защиты.