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.