Bloker for angrebsforsøg med fail2ban

Når du har haft din første server på nettet i et par uger vil du uden tvivl opdage at alt muligt rakkerpak på nettet står og banker på døren konstant … det kan være alt fra rigtigt hackere til scriptkiddies og automatiserede bots, orme og vira … alt i alt en masse ting som vi rigtig gerne vil undgå at blive forstyrret af 🙂

Vi starter som altid med at installere software:

root@lab1:~# apt-get install fail2ban

Dernæst skynder jeg mig og white-liste min egen ip … særligt når jeg eksperimenterer med opsætningen, jeg redigerer /etc/fail2ban/jail.conf og i linie ca 15-20 ser du flg:

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 
bantime  = 600

Der tilføjer jeg min egen IP:

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.1.5
bantime  = 600

Derefter genstarter jeg fail2ban og starter en tail på logfilen:

root@lab1:~# tail -f /var/log/fail2ban.log 
2012-05-10 20:52:39,750 fail2ban.jail   : INFO   Jail 'ssh' stopped
2012-05-10 20:52:39,750 fail2ban.server : INFO   Exiting Fail2ban
2012-05-10 20:52:40,003 fail2ban.server : INFO   Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.4-SVN
2012-05-10 20:52:40,004 fail2ban.jail   : INFO   Creating new jail 'ssh'
2012-05-10 20:52:40,004 fail2ban.jail   : INFO   Jail 'ssh' uses poller
2012-05-10 20:52:40,016 fail2ban.filter : INFO   Added logfile = /var/log/auth.log
2012-05-10 20:52:40,017 fail2ban.filter : INFO   Set maxRetry = 6
2012-05-10 20:52:40,018 fail2ban.filter : INFO   Set findtime = 600
2012-05-10 20:52:40,018 fail2ban.actions: INFO   Set banTime = 600
2012-05-10 20:52:40,083 fail2ban.jail   : INFO   Jail 'ssh' started

Som du måske har regnet ud så handler fail2ban ligeså meget generelt om serveren som om selve Apache, og lige her i første omgang er den sat op til at tage sig af ssh-syndere … det er jo dejlig nemt at teste … jeg finder en offentlig maskine, som ikke er den jeg lige har whitelistet, og laver et ulovligt loginforsøg:

lab2:~# ssh lab1.mikjaer.com -l root
root@lab1.mikjaer.com's password: 
Permission denied, please try again.
root@lab1.mikjaer.com's password: 
Permission denied, please try again.
root@lab1.mikjaer.com's password: 
Permission denied (publickey,password).

og så modtager vi flg. på vores log:

2012-05-10 20:54:44,257 fail2ban.actions: WARNING [ssh] Ban 192.168.1.10

og mit næste forsøg resulterer i flg:

lab1:~# ssh lab1.mikjaer.com -l root
ssh: connect to host lab1.mikjaer.com port 22: Connection timed out

Kort og kontant … effektivt! Efter 600 sekunder (ban time) kommer den her automatisk:

2012-05-10 20:58:34,529 fail2ban.actions: WARNING [ssh] Unban 192.168.1.10

Lad os aktivere et af filtrene til apache, på linie ca. 152:

[apache]

enabled = false
port    = http,https
filter  = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6

Det er meget svært og gætte hvad der skal ændres ikke? Korrekt!, enables = true:

[apache]

enabled = true
port    = http,https
filter  = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6

Så genstarter jeg fail2ban … og forsøger at gætte mit htaccess password, og efter 6 forsøg bliver jeg blacklistet 😀

Det er nemt selv at skrive regler, og der er en masse forudefinerede relger 🙂 Så se og kom igang og vær proaktiv med sikkerheden.

Dette indlæg blev udgivet i Apache, Knowledge Base, Linux, Networking, Old Base. Bogmærk permalinket.

Skriv et svar