Практика Руководство

Защита игрового сервера от подбора паролей: настройка fail2ban, SSH-ключи и non-standard порт

Защита игрового сервера от брутфорса SSH: генерация ключей Ed25519, отключение входа по паролю и под root, смена порта на 2222 и автоматическая блокировка атак в fail2ban.

Защита игрового сервера от подбора паролей: настройка fail2ban, SSH-ключи и non-standard порт

Выделенные виртуальные и физические серверы для игр круглосуточно подвергаются сканированию автоматизированными ботнетами. Тысячи ботов безостановочно перебирают стандартные пароли к порту 22 по протоколу SSH, пытаясь получить доступ к учетным записям root, admin, steam или minecraft. Успешная компрометация сервера приводит к установке майнеров, использованию ноды в DDoS-атаках и полному уничтожению игровых миров.

В этом практическом руководстве мы пошагово разберём перевод аутентификации на криптографические ключи Ed25519, отключение парольного доступа, перенос SSH на нестандартный порт и настройку утилиты fail2ban для автоматической блокировки атакующих IP-адресов.

Генерация стойких ключей Ed25519#

Аутентификация по паролям уязвима к словарным атакам и перехвату. Современный криптографический стандарт Ed25519 обеспечивает максимальную скорость подтверждения подлинности и устойчивость к взлому.

Сгенерируйте ключевую пару на вашем локальном компьютере:

bash
ssh-keygen -t ed25519 -C "gamehost-admin"

Скопируйте публичный ключ на целевой игровой сервер с помощью утилиты ssh-copy-id или вручную добавьте строку в файл ~/.ssh/authorized_keys.

Аудит конфигурации демона OpenSSH#

Перед внесением изменений проверьте текущие настройки демона SSH:

bash
sudo grep -E "Port|PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config

Если директива PasswordAuthentication имеет значение yes, любой злоумышленник в сети может пытаться подобрать пароль к вашей учетной записи.

Настройка изолированного конфигурационного файла SSH#

Чтобы избежать конфликтов при системных обновлениях пакета openssh-server, создайте отдельный конфигурационный файл /etc/ssh/sshd_config.d/99-hardened.conf:

ini
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
MaxAuthTries 3
  • Port 2222 — перенос службы с порта 22 отсекает до 99% фонового паразитного трафика и журнального мусора.
  • PermitRootLogin no — запрещает прямой вход суперпользователя root, заставляя использовать непривилегированного пользователя с sudo.
  • PasswordAuthentication no — полностью отключает приём текстовых паролей.

Проверка синтаксиса и перезапуск службы#

Критически важно проверить конфигурацию перед перезапуском, чтобы не заблокировать собственный доступ к серверу:

bash
sudo sshd -t && sudo systemctl restart ssh

Если команда не вернула ошибок, не закрывайте текущую SSH-сессию. Откройте второе окно терминала и проверьте успешность подключения: ssh -p 2222 user@server_ip.

Установка и конфигурирование fail2ban#

Утилита fail2ban отслеживает журнал аутентификации системы и автоматически добавляет правила блокировки в фаервол при превышении лимита неудачных попыток входа.

Установите пакет в Ubuntu/Debian:

bash
sudo apt update && sudo apt install -y fail2ban

Создайте локальный конфигурационный файл правил /etc/fail2ban/jail.local:

ini
[DEFAULT]
bantime = 86400
findtime = 600
maxretry = 3
banaction = ufw

[sshd]
enabled = true
port = 2222
mode = aggressive

При 3 неудачных попытках ввода в течение 10 минут атакующий IP-адрес блокируется на 24 часа (bantime = 86400).

Активация службы и проверка заблокированных адресов#

Включите службу fail2ban в автозапуск и проверьте статус изолятора:

bash
sudo systemctl enable --now fail2ban && sudo fail2ban-client status sshd

Команда выведет текущее количество отслеживаемых неудачных попыток и список адресов, находящихся в бане.

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

Источники#