Задание №9: Защита службы SSH с помощью Fail2ban на HQ-SRV
В данном задании на сервере главного офиса (HQ-SRV) настраивается система предотвращения вторжений Fail2ban для защиты службы OpenSSH, работающей на нестандартном порту 2026.
Для считывания событий журнала используется модуль интеграции с systemd (python3-module-systemd). При обнаружении 3 неудачных попыток аутентификации подряд IP-адрес клиента автоматически блокируется на 1 минуту (1m).
Где выполнять
- HQ-SRV — установка пакетов, переключение на бэкенд
systemd, настройка изолятораsshd.confв/etc/fail2ban/jail.d/и запуск службы. - HQ-CLI — проверка срабатывания бана при 3 неверных вводах пароля.
1. Пошаговая инструкция на сервере HQ-SRV
Выполните следующие команды под пользователем root на сервере HQ-SRV:
Шаг 1. Установка пакетов Fail2ban и модуля интеграции с systemd
apt-get update && apt-get install fail2ban python3-module-systemd -yШаг 2. Переключение путей логов на systemd в ALT Linux
В конфигурационном файле /etc/fail2ban/jail.conf переключаем базовые пути на чтение из журнала systemd:
sed -i 's/before = paths-altlinux.conf/before = paths-altlinux-systemd.conf/' /etc/fail2ban/jail.confШаг 3. Создание конфигурации изолятора /etc/fail2ban/jail.d/sshd.conf
Создаём отдельный файл параметров для защиты сервиса SSH:
cat << "EOF" > /etc/fail2ban/jail.d/sshd.conf
[sshd]
enabled = true
port = 2026
filter = sshd
backend = systemd
maxretry = 3
bantime = 1m
EOFРазбор параметров конфигурации
enabled = true— активирует данное правило защиты.port = 2026— нестандартный порт SSH согласно настройкам Модуля №1.filter = sshd— стандартный фильтр распознавания сбоев авторизации OpenSSH.backend = systemd— получение логов напрямую через сокетsystemd-journald.maxretry = 3— количество разрешённых ошибок авторизации до блокировки.bantime = 1m— длительность бана (1 минута / 60 секунд).
Шаг 4. Включение автозапуска и старт службы Fail2ban
systemctl enable --now fail2banПроверяем статус службы:
systemctl status fail2ban.serviceШаг 5. Проверка состояния изолятора sshd
fail2ban-client status sshdПример вывода:
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:2. Проверка работы защиты с рабочей станции HQ-CLI
Перейдите на клиентскую машину HQ-CLI (в консоль терминала):
Шаг 1. Имитация атаки подбора пароля
Подключаемся по SSH к серверу HQ-SRV:
ssh -p 2026 sshuser@hq-srv3 раза намеренно вводим неверный пароль.
После 3-й попытки соединение разрывается сервером.
Шаг 2. Проверка блокировки на сервере HQ-SRV
Возвращаемся на сервер HQ-SRV и проверяем статус:
fail2ban-client status sshdВ выводе в строке Banned IP list: должен появиться заблокированный IP-адрес рабочей станции:
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 192.168.2.10При попытке повторного подключения с HQ-CLI соединение будет сброшено (Connection refused).
Через 1 минуту блокировка снимется автоматически, и доступ восстановится.
