Effectief werken met Fail2Ban: Beveiligingsoptimalisatie gids op basis van praktijkvoorbeelden

1. Inleiding

Wanneer je een Linux-server beheert, krijg je te maken met talloze inlogpogingen, alleen al door de SSH-poort open te zetten. Een veelgebruikte tool om dit te stoppen is Fail2Ban. Maar alleen installeren en instellen is niet voldoende. Bij langdurige werking kunnen de banlijsten zich ophopen tot honderden of duizenden, waardoor de serverprestaties in gevaar komen.

In dit artikel deel ik hoe je Fail2Ban effectiever en efficiënter kunt gebruiken op basis van echte serverervaring.

Als je benieuwd bent naar de installatie en de basisinstellingen van Fail2Ban, kun je mijn eerdere artikel raadplegen! De beschermer van je Linux-server, Fail2Ban


2. Praktische ervaring: 1.113 IP's geblokkeerd in 3 weken

Na ongeveer 3 weken waarbij ik fail2ban op mijn test-Linux-server had ingesteld, voerde ik op een dag onderstaand commando uit:

sudo fail2ban-client status sshd

Het resultaat was als volgt:

Current failed: 1
Total failed: 5330
Current banned: 1110
Total banned: 1113

In 3 weken waren er 1.113 IP's geblokkeerd, waarvan 1.110 nog steeds geblokkeerd waren. Dit kwam doordat ik het bantime = -1 had ingesteld voor permanente blokkade.

In het begin dacht ik: “Eén poging is er één te veel!” en heb ik de instellingen zo gekozen. Maar toen duizenden geblokkeerde IP's zich ophoopten in iptables, begon ik me zorgen te maken over het verbruik van systeembronnen en de beheerefficiëntie.

Uiteindelijk begon ik na te denken over een duurzame en strategische manier om Fail2Ban te beheren.


Tux die recidive gevangenis bewaakt

3. Verbeterstrategieën voor Fail2Ban instellingen

✅ Pas bantime dynamisch aan

  • Een tijdgebaseerde blokkade is realistischer dan een permanent blokkade.
  • Voorbeeld:
  • bantime = 86400        # 1 dag blokkade
    findtime = 600         # binnen 10 minuten
    maxretry = 3           # bij 3 mislukte pogingen

Fail2Ban blokkade stroomdiagram

✅ Gebruik van recidive gevangenis

🔎 Wat is recidive gevangenis?

fail2ban monitort het fail2ban.log bestand, en als een specifieke IP herhaaldelijk in meerdere gevangenissen geblokkeerd wordt, dan wordt die IP langdurig opnieuw geblokkeerd. Het is in feite een systeem van extra straffen voor recidivisten.

Over het algemeen worden individuele gevangenissen zoals sshd, nginx, en ftp voor korte tijd geblokkeerd, maar de recidive gevangenis blokkeert alleen IP's met een 'opgebouwde criminele geschiedenis' voor een langere tijd.

  • Toepassen van langdurige blokkade voor alleen die IP's die herhaaldelijk geblokkeerd worden
  • Algemene aanvallers verdwijnen na een dag, maar herhaalde aanvallers kunnen gefilterd worden
  • Voorbeeldinstellingen:
  • [recidive]
    enabled = true
    logpath = /var/log/fail2ban.log
    bantime = 604800        # 1 week
    findtime = 86400
    maxretry = 5

✅ Automatisering van logbeheer

  • Voorkom dat /var/log/fail2ban.log te groot wordt door logrotate in te stellen voor automatische opruiming
  • Stuur samenvattingen van fail2ban-client status resultaten per e-mail met cron of systemd timer

4. Voorbeeld van een referentiescript

#!/bin/bash
fail2ban-client status sshd > /tmp/sshd-status.log
echo "Huidig aantal blokkades: $(grep 'Currently banned' /tmp/sshd-status.log)" | mail -s "Fail2Ban SSHD Status" your@email.com

5. Conclusie: Fail2Ban is geen wapen, maar een tool

Fail2Ban is een zeer nuttige tool om brute force aanvallen te stoppen, maar overmatige werking kan geen doel op zich zijn, maar in plaats daarvan de oorzaak worden van serveroverbelasting.

Met een realistisch blokkadebeleid en geautomatiseerde beheertools wordt Fail2Ban een betrouwbare beveiligingspartner in plaats van een probleem.


Aankondiging van het volgende artikel

Ik zal het hebben over hoe je de groei van de fail2ban logbestanden /var/log/fail2ban.log kunt voorkomen door logrotate instellingen. Geïnteresseerden kunnen zich abonneren!