Blokowanie skanera w00tw00t za pomocą fail2ban
Fail2Ban już świeżo po instalacji gotowy jest do współpracy z wieloma najpopularniejszymi usługami sieciowymi (m.in. ssh, ftp, smtp, http(s), pop3, imap). Nie można jednak z góry przewidzieć ataków, które pojawią się w przyszłości i tu uwidacznia się uniwersalność omawianego narzędzia. Drugim przypadkiem jest aplikacja generująca logi, które nie są zdefiniowane w standardowych filtrach. Sami możemy tworzyć nowe definicje filtrów lub szukać ich w Internecie.
Dobrym przykładem będzie blokada popularnego i zarazem upierdliwego skanera w00tw00t.at.ISC.SANS.DFind:) testującego serwery www (apache, nginx, lighttpd...) pod kontem zabezpieczeń a raczej ich braku.
W tym przykładzie użyty został jako serwer www - Nginx, natomiast równie dobrze mogłby być to Apache, ponieważ oba mają kompatybilny format logów, chyba że zmieniliśmy domyślny format. Dokonują takiej zmiany musimy sami stworzyć odpowiednie reguły filtrowania.
Zakładają, że juz mamy zainstalowane narzędzie Fail2Ban, dodanie blokady na skaner w00tw00t.at.ISC.SANS.DFind:) lub w00tw00t.at.ISC.SANS.Win32:) sprowadza się do kilku kroków:
- Definiujemy odpowiedni filtr: nano /etc/fail2ban/filter.d/scanner-w00tw00t.conf i wklejamy poniższą zawartość:
[Definition]
# Option: failregex
# Notes.: regex to match the w00tw00t scan messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching.
# Values: TEXT
failregex = ^ .*"GET \/w00tw00t\.at\.ISC\.SANS\..+\:\).*?"
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
ignoreregex =
#
# HTTP servers
#
[apache]
enabled = false
port = http,https
filter = apache-auth
...
...
...
[scanner-w00tw00t]
enabled = true
port = http,https # jeśli https jeśli nasz serwer www nasłuchuje na 443
filter = scanner-w00tw00t
action = iptables-allports[name=scanner-w00tw00t]
#logpath = /var/log/nginx/access.log
logpath = /var/log/nginx/*.access.log
maxretry = 1
bantime = 86400
2013-11-22 13:55:52,754 fail2ban.server : INFO Exiting Fail2ban
2012-12-12 12:12:12,372 fail2ban.server : INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.x
2012-12-12 12:12:12,374 fail2ban.jail : INFO Creating new jail 'ssh'
2012-12-12 12:12:12,374 fail2ban.jail : INFO Jail 'ssh' uses poller
...
...
2012-12-12 12:12:12,632 fail2ban.jail : INFO Jail 'scanner-w00tw00t' uses poller
2012-12-12 12:12:12,635 fail2ban.filter : INFO Added logfile = /var/log/nginx/domena.pl.access.log
2012-12-12 12:12:12,637 fail2ban.filter : INFO Added logfile = /var/log/nginx/subdomena1.domena.pl.access.log
2012-12-12 12:12:12,639 fail2ban.filter : INFO Added logfile = /var/log/nginx/subdomena2.domena.pl.access.log
2012-12-12 12:12:12,641 fail2ban.filter : INFO Added logfile = /var/log/nginx/domena.org.access.log
2012-12-12 12:12:12,643 fail2ban.filter : INFO Added logfile = /var/log/nginx/sudomena1.domena.org.access.log
2012-12-12 12:12:12,648 fail2ban.filter : INFO Added logfile = /var/log/nginx/sudomena2.domena.org.access.log
2012-12-12 12:12:12,646 fail2ban.filter : INFO Added logfile = /var/log/nginx/main.access.log
2012-12-12 12:12:12,653 fail2ban.filter : INFO Set maxRetry = 1
2012-12-12 12:12:12,659 fail2ban.filter : INFO Set findtime = 600
2012-12-12 12:12:12,660 fail2ban.actions: INFO Set banTime = 86400
...
...
2012-12-12 12:12:12,689 fail2ban.jail : INFO Jail 'scanner-w00tw00t' started
2013-12-12 14:14:14,167 fail2ban.actions: WARNING [scanner-w00tw00t] Ban 80.50.50.200
Powrót »