< Blog

Frank, 16/07/2014

IP adressen blokkeren met Fail2Ban

Soms komt het voor dat het noodzakelijk is een systeem met via ssh toegankelijk te maken aan de wereld. Uiteraard timmer je de boel goed dicht, zorg je dat root niet kan inloggen en maak je gebruik van private en public key systemen. Misschien maak je zelfs wel gebruik van 2 factor authentication. Toch blijft het vervelend dat er continue aan de poort gerammeld wordt, als was het maar vanwege de logvervuiling. Gelukkig is daar een mooie oplossing voor Fail2Ban. Met deze tool is het mogelijk poortrammelaars en script kiddies te weren. Fail2Ban scant logfiles en op basis van verdachte handelingen worden ip adressen geblokkeerd via iptables. Simpel en doeltreffend.

Op http://www.fail2ban.org/wiki/index.php/Main_Page is uitgebreide informatie te vinden. Voor de meeste systemen zijn rpm’s of packages te vinden. In mijn geval heb ik ik fail2ban via een repository op mijn systeem geinstalleerd. Een kind kan de was doen. Na de installatie van fail2ban moeten er nog wel een paar stappen genomen worden. Ten eerste moet in de configuratie van fail2ban aangegeven worden wat er geband mag gaan worden. Ik pas hiervoor de file /etc/fail2ban/jail.local aan. Dat is een kopie van jail.conf zodat deze ongewijzigd als referentie kan blijven staan.

De volgende secties pas ik aan:
[DEFAULT]
# Voeg aan localhost eventueel ook het locale subnet toe
ignoreip = 127.0.0.1/8 10.1.1.0/24

[ssh-iptables]
# enable het ssh template, pas ook de email adressen aan!
enabled = true

Op mijn systeem moet ik er alleen ook nog voor zorgen dat inlopogingen in de file /var/log/sshd.log terecht komen. Dat doe ik door in de file /etc/syslog-ng/sysog-ng.conf de volgende regels toe te voegen:

filter f_sshd { match('^sshd\[[0-9]+\]:'); };
destination sshd { file("/var/log/sshd.log"); };
log { source(src); filter(f_sshd); destination(sshd); flags(final); };

Uiteraard moeten zowel de syslog als fail2ban services herstart worden om de configuarties in te lezen. Daarna testen en je kan met minder zorgen je systeem aan de wereld hangen.

Met fail2ban kunnen nog veel meer services in de gaten gehouden worden. In de bijgeleverde configuratie staan bijvoorbeeld nog templates voor apache, postfix, ftp, etc. Heb je een systeem wat publiek toegankelijk is, dan is deze tool echt een must!