Fail2ban – это простенький сервис который поможет отслеживать и блокировать атаки анализируя лог файлы службы. При обнаружении атаки fail2ban может занести ip источника в таблица фаервола, уведомить по электронный почте итд. Сервис очень гибок в настройке, написан на python
Будем защищать ssh сервис в связке с pf.
Обновляем порты
Устанавливаем
cd /usr/ports/security/py-fail2ban
make install clean
После установки переходим в каталог /usr/local/etc/fail2ban и преступаем к конфигурированию.
В папке находятся 2 подпапки.
action.d – Хранятся конфиг файлы, в которых описываются команды при срабатывании правил.
filter.d – Хранятся так называемые шаблоны, в которых описываются с помощью регулярных выражений, на что же будет срабатывать fail2ban.
Нам же нужен файл jail.conf и редактируем.
Для начала пробежимся по глобальной секции.
[DEFAULT] ignoreip = 127.0.0.1 #Fil2ban будет игнорировать указанные адреса, подсети, имена.
Можно указать список через пробел.
bantime = 7200 #Тут я думаю понятно. Время в секундах на протяжении которого хостбудет блокирован.
maxretry = 5 #Кол-во попыток, после которого хост будет блокирован.
[ssh-pf]
enabled = true
filter = sshd
action = pf[table=ssh-brut] # Указываем профиль pf и передаем переменную table в
которой указываем название таблицы
sendmail[name=SSH on Gateway,dest=root@mydomain.com,sender=fail2ban@mydomain.com]#Отсылать на мыло предуприждение о срабатывании.
logpath = /var/log/auth.log #Путь до лог файла
ignoreip = 192.168.1.0/24 #На всякий случай, а то мало ли.
Далее создаем профиль для управления pf.
vi action.d/pf.conf
[Definition]actionban = /sbin/pfctl -t <table> -T add <ip>
actionunban = /sbin/pfctl -t <table> -T delete <ip>
Правим файл правил pf и добавляем блокировку по по ssh порту всех кто в таблице ssh-brut
block in log quick on $EXT_IF proto tcp from <shh-brut> to $EXT_IF port ssh
Добавляем в rc.conf
echo ‘fail2ban_enable=”YES”‘ >> /etc/rc.conf
И запускаем
/usr/local/etc/rc.d/fail2ban start
Собственно все. Ждем мыло когда кто нибудь попадется.
Fail2ban очень гибок. в jail.conf есть примеры конфигурация для различных сервисов.