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 и готово 🙂