Beveiliging is een zeer breed begrip, er is niet één tool die ervoor zorgt dat hackers geen kans hebben om in te breken op je servers. Optimale veiligheid bereik je door een een juiste verhouding na te streven tussen beleid en techniek.
Één van de tools die bijdraagt aan veiligheid door middel van techniek is Fail2ban. Fail2ban houdt realtime de logbestanden van je server in de gaten. Het blokkeert i.p.-adressen die kwaadaardige handelingen uit proberen te voeren, zoals veel authenticatiefouten of zoeken naar bekende exploits in software.
Optioneel kun je Fail2ban een e-mail laten sturen als er een i.p.-adres wordt geblokkeerd. Er worden, door middel van een WHOIS worden er ook ook gegevens achterhaald van een i.p.-adres. Bijvoorbeeld:
-------- Original Message -------- Subject: [Fail2Ban] SSH: banned 116.10.191.222 Date: Wed, 18 Jun 2014 19:05:54 +0000 From: Fail2Ban <fail2ban@mijnserver.nl> To: beheer@marsman-ic.nl Hi, The IP 116.10.191.222 has just been banned by Fail2Ban after 5 attempts against SSH. Here are more information about 116.10.191.222: [Querying whois.arin.net] [Redirected to whois.apnic.net] [Querying whois.apnic.net] [whois.apnic.net] % [whois.apnic.net] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html % Information related to '116.8.0.0 - 116.11.255.255' inetnum: 116.8.0.0 - 116.11.255.255 netname: CHINANET-GX descr: CHINANET Guangxi province network descr: Data Communication Division descr: China Telecom country: CN admin-c: CR76-AP tech-c: BD37-AP status: ALLOCATED PORTABLE remarks: service provider mnt-by: APNIC-HM mnt-lower: MAINT-CHINANET mnt-lower: MAINT-CHINANET-GX <knip> ...... </knip> % This query was served by the APNIC Whois Service version 1.69.1-APNICv1r0 (WHOIS1) Regards, Marsman ICT Consultancy - Fail2Ban
In bovenstaande e-mail zie je dat i.p.-adres 116.10.191.222 is geblokkeerd omdat er 5 maal vanaf dit i.p.-adres met een verkeerde login is geprobeerd in te loggen via SSH. Dit is ook te zien in het log op de server (/var/log/secure):
Jun 18 19:04:00 mijnserver sshd[7059]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.10.191.222 user=root
Tijd voor de installatie
Voor de installatie maak ik gebruik van een Debian-based besturingssysteem (LInux mint). Fail2ban is opgenomen in veel distributies of anders te installeren vanaf source.
- Gebruik de package manager van je distributie om Fail2ban te installeren:
mijnserver ~ # sudo apt-get install fail2ban
Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: python-gamin The following NEW packages will be installed: fail2ban 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 108 kB of archives. After this operation, 501 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ saucy/universe fail2ban all 0.8.10-3 [108 kB] Fetched 108 kB in 0s (164 kB/s) Selecting previously unselected package fail2ban. (Reading database ... 226197 files and directories currently installed.) Unpacking fail2ban (from .../fail2ban_0.8.10-3_all.deb) ... Processing triggers for man-db ... Processing triggers for ureadahead ... ureadahead will be reprofiled on next reboot Setting up fail2ban (0.8.10-3) ... * Starting authentication failure monitor fail2ban [ OK ]
Zoals je ziet wordt Fail2ban netjes geïnstalleerd en gestart als daemon met de standaard instellingen.
- Stel de configuratie in naar wens: In /etc/fail2ban/ vind je de bestanden om Fail2ban in te stellen. fail2ban.conf hoeft niet te worden aangepast. In dit voorbeeld zal ik in het bestand jail.conf een aantal parameters toelichten en de jail doornemen voor SSH.
mijnserver /etc/fail2ban # vim jail.conf [DEFAULT] # Standaard instellingen die per jail kunnen worden over overruled. ignoreip = 127.0.0.1/8 # Zet hier vooral je eigen I.P.-adres in!> bantime = 600 # Aantal seconden dat een I.P.-adres geblokkeerd wordt. findtime = 600 # Tijd waarbinnen het aantal 'maxretry's' moet plaatsvinden. maxretry = 3 # Hoeveel foute pogingen er worden toegestaan binnen de 'findtime' backend = auto # Welke techniek er moet worden gebruikt. destemail = beheer@marsmanic.nl # Waar de mail heen moet gaan (zie hierboven). banaction = iptables-multiport # Wat te gebruiken om te bannen? mta = sendmail # Welke MTA moet er worden gebruikt om te mailen? protocol = tcp # Standaard protocol chain = INPUT # Als bij banaction iptables wordt gebruikt, in welke chain?
De SSH Jail:
[ssh] # De jail enabled = true # Is de jail actief? port = ssh # Welke poort? In dit geval 22 filter = sshd # Waar moet fail2ban op fileren in het log? logpath = /var/log/auth.log # welk logbestand moet er worden gebruikt? maxretry = 3 # hoeveel foute inlogpogingen worden er toegestaan?
- Herstart en wacht af!
mijnserver # sudo /etc/init.d/fail2ban restart * Restarting authentication failure monitor fail2ban [ OK ]
Je kunt nu vanaf een andere machine proberen 3x achter elkaar in te loggen met een fout wachtwoord. De vierde keer zal er een timeout optreden en zul je een mail ontvangen van je ‘inbraakpoging’.
Mocht je er niet uitkomen of wil je de installatie door Marsman ICT Consultancy laten uitvoeren, kun je altijd contact opnemen.
–Martijn