haproxy fail2ban configuration

Идеята е fail2ban да се грижи за сигурността на нашият load balancer сървър – в случая – haproxy. 1. HAProxy трябва да може да логва всички конекции като опишем следните опции в /etc/haproxy/haproxy.cfg :

        option  httplog clf
option tcplog clf
# option dontlognull
log 127.0.0.1 local5 info

2. Да имаме работещ rsyslog и да добавим следното в конфигуранционният му файл:
$ModLoad imudp
$UDPServerRun 514
local5.* /var/log/haproxy.log


3. Logrotate – това не е задължително но е хубаво да го имаме. Добавяме в /etc/logrotate.d/haproxy.cfg :
/var/log/haproxy*.log
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}

4. Следва и самият код за fail2ban в /etc/fail2ban/filter.d/haproxy-get-dos.conf # Haproxy Fail2Ban Regex using CLF format # [Definition] failregex = haproxy\[\d+\]: .* “(GET|POST) .*https?:// ignoreregex = 5. След това в /etc/fail2ban/jail.conf:

[haproxy-get-dos]
enabled = true
port = http,https
filter = haproxy-get-dos
logpath = /var/log/haproxy*
maxretry = 500
findtime = 120
bantime = 3600
action = tarpit[name=HTTP, port=http, protocol=tcp]
sendmail-whois[name=haproxy-get-dos, dest=alerts@root.bg, sender=fail2ban@root.bg]

6. Следва инсталирането на пакета xtables който е необходим да работи TARPIT 7. Добавяме следното в /etc/fail2ban/action.d/tarpit.conf :
# Tarpit trap
[Definition]
actionstart = iptables -N fail2ban-TARPIT-
iptables -A fail2ban-TARPIT- -j RETURN
iptables -I INPUT -p -j fail2ban-TARPIT-
actionstop = iptables -D INPUT -p -j fail2ban-TARPIT-
iptables -F fail2ban-TARPIT-
iptables -X fail2ban-TARPIT-
actioncheck = iptables -n -L INPUT | grep -q fail2ban-TARPIT-
actionban = iptables -I fail2ban-TARPIT- 1 -s -j TARPIT
actionunban = iptables -D fail2ban-TARPIT- -s -j TARPIT[Init]
name = default
port = http
protocol = tcp

8. Рестартираме haproxy и fail2ban и готово 🙂