Fail2ban adalah applikasi bruteforce detection menggunakan file log sebagai dasar pendeteksian.
yum install fail2ban -y
Defaultnya log fail2ban ada di /var/log/messages dan untuk membuat custom log file fail2ban sbb
nano /etc/fail2ban/fail2ban.conf
ubah logtarget menjadi seperti ini
logtarget = /var/log/fail2ban.log
Kami menggunakan fail2ban untuk membaca log haproxy dan memblokirnya dengan CSF. Log yang kami baca adalah aktifitas login menggunakan mekanisme POST pada url wp-login.php
nano /etc/fail2ban/filter.d/haproxy-wp.conf
kami isi
[INCLUDES] before = common.conf [Definition] _daemon = haproxy failregex = ^.*haproxy\[[0-9]+\]*: <HOST>:.* "POST /wp-login.php HTTP/1.1"$ ignoreregex =
Pastikan anda sudah menguji regular expresion tersebut dengan menggunakan
fail2ban-regex /var/log/haproxy.log /etc/fail2ban/filter.d/haproxy-wp.conf
dan apabila regex nya benar hasilnya seperti ini
Results ======= Failregex: 7660 total |- #) [# of hits] regular expression | 1) [7660] ^.*haproxy\[[0-9]+\]*: <HOST>:.* "POST /wp-login.php HTTP/1.1"$ `- Ignoreregex: 0 total Date template hits: |- [# of hits] date format | [520991] (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?: Year)? `- Lines: 520991 lines, 0 ignored, 7660 matched, 513331 missed [processed in 126.74 sec]
sekitar 7660 baris match dengan regex tersebut.
selanjutnya adalah membuat jail
nano /etc/fail2ban/jail.d/haproxy-wp.conf
isi dengan
[haproxy-wp] enabled = true bantime = 36000 findtime = 120 maxretry = 6 filter = haproxy-wp logpath = /var/log/haproxy.log port = http,https action = csf-ip-deny
selanjutnya membuat action yang di integrasikan dengan CSF.
nano /etc/fail2ban/action.d/csf-ip-deny.conf
isi dengan
# CSF / fail2ban integration from The Digital FAQ (digitalFAQ.com) [Definition] actionstart = actionstop = actioncheck = actionban = csf -d <ip> Added by Fail2Ban for <name> actionunban = csf -dr <ip> [Init] name = haproxy-wp