Использование Fail2Ban

В качестве системы обнаружения и предотвращения вторжений в РОСА Виртуализация используется система Snort. Система Snort способна в реальном времени осуществлять анализ трафика.# Использование Fail2Ban

Fail2Ban — это сервис, который отслеживает log-файлы согласно установленным правилам поиска подозрительной активности и блокирует IP- адреса нарушителей с помощью Firewall.

Для установки пакета fail2ban требуется включить репозиторий DVD и примонтировать диск в директорию /mnt:

dnf config-manager --set-enabled DVD
mount -t iso9660 -o ro /dev/sr0 /mnt

Затем нужно установить пакет fail2ban:

dnf install fail2ban

Базовая настройка Fail2Ban

В качестве примера будет выполнена настройка мониторинга активности для log-файла сервиса SSHD. Для удобства настройки fail2ban необходимо создать файл /etc/fail2ban/jail.d/default.conf с параметрами по умолчанию для всех сервисов:

[DEFAULT]
maxretry = 5
findtime = 300
bantime = 900
ignoreip = 127.0.0.1/8 ::1

Согласно таким настройкам после обнаружения 5 случаев подозрительной активности (maxretry), произошедших в течении 300 секунд (findtime), IP-адрес нарушителя будет заблокирован на 900 секунд (bantime). Все действия с IP-адресов 127.0.0.1/8::1 (ignoreip) игнорируются.

Далее нужно создать файл /etc/fail2ban/jail.d/service.conf, в котором будут прописаны индивидуальные настройки для каждого сервиса:

[sshd]
enabled = true
port = ssh
filter = sshd

Такие настройки включают мониторинг log-файла для SSHD (enabled), который запущен на стандартном порту (port). Для фильтрации подозрительных действий применяется фильтр с названием SSHD (filter).

После всех выполненных настроек необходимо включить и запустить сервис fail2ban:

systemctl enable --now fail2ban.service

Если обнаруженные подозрительные действия в контролируемом log-файле будут соответствовать всем установленным критериям, то IP-адрес нарушителя будет заблокирован с помощью соответствующего правила для firewalld:

firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160 ovirtmgmt
sources:
services: cockpit dhcpv6-client ipsec libvirt-tls ovirt-imageio ovirt-vmconsole snmp ssh vdsm
ports: 22/tcp 4789/udp 6081/udp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="192.168.210.69" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"

Статистика Fail2Ban

C помощью утилиты fail2ban-client можно получить статистику по мониторингу сервиса SSHD:

fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     69
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd _COMM=sshd-session
`- Actions
|- Currently banned: 1
|- Total banned:     1
`- Banned IP list:   192.168.210.69

В файле /var/log/fail2ban.log сохраняется подробный отчёт по работе сервиса fail2ban.