Для примера защитим ssh в связке с pf.
Обновляем порты
make install clean
action.d – файлы, в которых описываются команды при срабатывании правил.
filter.d – шаблоны, в которых описываются с помощью регулярных выражений, на что будет срабатывать fail2ban.
cp jail.conf jail.conf.dist
vim jail.conf
[DEFAULT]
ignoreip = 127.0.0.1 188.134.XXX.XXX #Fil2ban будет игнорировать
bantime = 7200 #. Время в секундах на протяжении которого хост в дауне
maxretry = 5 #Кол-во попыток, после которого хост будет блокирован.
[ssh-pf]
enabled = true
filter = sshd
action = pf[table=ssh-brut] # Указываем профиль pf и передаем переменную table в которой указываем название таблицы
sendmail[name=SSH onGateway,dest=admin@iamroot.ru,sender=fail2ban@iamroot.ru]
#Отсылать на мыло предуприждение о срабатывании.
logpath = /var/log/auth.log #Путь до лог файла
ignoreip = 192.168.21.0/24 #На всякий, внутряшка
cd action.d/
cp pf.conf pf.conf.dis
vim 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
echo ‘fail2ban_enable=»YES»‘ >> /etc/rc.conf
/usr/local/etc/rc.d/fail2ban start
Собственно и всё