Fail2ban¶
Achtergrondinformatie
-
Fail2ban: een intrusion prevention tool die logbestanden monitort (bijv.
/var/log/auth.log) en automatisch IP-adressen blokkeert die verdachte activiteiten vertonen, zoals herhaalde mislukte inlogpogingen. -
Beveiligingsfunctie: Fail2ban werkt vaak in combinatie met een firewall (bijv. UFW of iptables).
Zodra een IP wordt gedetecteerd dat brute-force probeert, wordt er automatisch een tijdelijke ban toegepast. -
Voordeel: automatiseert bescherming tegen aanvallen zonder dat je continu handmatig IPโs hoeft te blokkeren.
Je kunt eenvoudig instellen hoeveel pogingen zijn toegestaan, hoe lang een ban duurt en welke diensten beschermd moeten worden (SSH, FTP, webservers, etc.).
Alternatieven
- DenyHosts (ouder, minder flexibel, alleen voor SSH)
- CSF (ConfigServer Security & Firewall) (meer functies, vaak gebruikt op hostingservers)
- PortSentry (richt zich meer op detectie van port scans)
1. Controleren of Fail2ban al aanwezig is¶
๐ Voorbeeld output
Handleiding¶
2. Installatie¶
Voorbeeld output
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
fail2ban
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 700 kB of archives.
After this operation, 3,500 kB of additional disk space will be used.
Selecting previously unselected package fail2ban.
(Reading database ... 105000 files and directories currently installed.)
Preparing to unpack .../archives/fail2ban_0.11.2-3_all.deb ...
Unpacking fail2ban (0.11.2-3) ...
Setting up fail2ban (0.11.2-3) ...
Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service โ /lib/systemd/system/fail2ban.service.
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for systemd (249.11-0ubuntu3.6) ...
Configuratiebestanden kopiรซren¶
Na installatie wordt het aangeraden om de standaard jail.conf niet direct te bewerken.
In plaats daarvan maak je een kopie naar jail.local zodat updates van het pakket je instellingen niet overschrijven:
3. Fail2ban beheren¶
Wanneer Fail2ban is geรฏnstalleerd, moet de service geactiveerd en gestart worden zodat inbraakpogingen automatisch geblokkeerd worden. Hieronder zie je de belangrijkste commandoโs en hun functie:
-
Commandoโs
- Zorgt ervoor dat Fail2ban automatisch start bij het opstarten van het systeem. - Start Fail2ban direct, zodat je beveiligingsregels meteen actief zijn. - Controleert de huidige status van Fail2ban en toont of deze actief draait. -
Voorbeeld output
systemctl enable fail2bansystemctl status fail2banโ fail2ban.service - Fail2Ban Service Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-01-10 12:34:56 UTC; 10s ago Main PID: 2456 (fail2ban-server) Tasks: 5 (limit: 1111) Memory: 12.3M CGroup: /system.slice/fail2ban.service โโ2456 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
4. Fail2ban gebruiken¶
Met Fail2ban kun je inlogpogingen beperken en brute-force aanvallen automatisch blokkeren. Dit gebeurt via jails die logbestanden monitoren en IP-adressen blokkeren na te veel mislukte pogingen.
Lijst alle actieve jails (regels die actief IPโs monitoren):
Controleer details van een specifieke jail, bijvoorbeeld sshd:
Voorbeeld output:
Blokkeer een IP direct (bijvoorbeeld bij verdachte activiteit):
Haal een IP weer van de banlijst:
Maak altijd een lokale kopie van de configuratie in /etc/fail2ban/jail.local
(wijzig liever niet direct jail.conf).
Typische instellingen:
enabled: Jail activerenmaxretry: Aantal pogingen voor banbantime: Tijd (in seconden) dat een IP geblokkeerd blijft
Extra nuttige commandoโs (Fail2ban)¶
Toon een overzicht van alle actieve jails:
Controleer details van een specifieke jail, bijvoorbeeld sshd:
Geeft informatie over mislukte pogingen en geblokkeerde IPโs.
Blokkeer een IP handmatig (los van automatische detectie):
Pas wijzigingen in configuratiebestanden toe zonder volledige reboot:
Of via systemd:
Stop Fail2ban tijdelijk:
En zet automatisch starten uit:
Reset bans en herstart alle jails:
Waarschuwing
Dit verwijdert alle huidige bans en start alle jails opnieuw.
Gebruik dit alleen als je opnieuw wilt beginnen.
Logging en Debugging (Fail2ban)¶
Wanneer je problemen hebt met Fail2ban of bans die niet werken zoals verwacht, kan logging en debugging veel inzicht geven.
Controleer of Fail2ban draait en welke jails actief zijn:
Zie gebande IPโs en mislukte pogingen in een specifieke jail:
De logbestanden vind je hier:
Of live meekijken:
Start Fail2ban in debugmodus voor uitgebreide foutopsporing:
Of herstart via systemd met extra logging:
Waarom debugmodus?
In debugmodus zie je exact welke regels en filters toegepast worden.
Dit is handig als bans niet werken of filters niet correct matchen.
Configuratiebestanden (Fail2ban)¶
Het hoofdconfiguratiebestand van Fail2ban.
Hierin stel je basisopties in, zoals:
- loglevel (bijv. INFO, WARNING, DEBUG)
- logtarget (bijv. syslog, file of systemd-journal)
- socket en pidfile-locaties
Het standaardbestand waarin alle jails zijn gedefinieerd.
Een jail koppelt een filter (wat zoeken in logs) aan een actie (bijv. een IP bannen via iptables of UFW).
โ ๏ธ Belangrijk: wijzig dit bestand niet rechtstreeks.
Gebruik in plaats daarvan jail.local.
Het aanbevolen bestand om eigen configuraties en overrides in te plaatsen.
Hier stel je o.a. in:
- Welke jails actief zijn (enabled = true)
- Banneduur (bantime)
- Maximale mislukte pogingen (maxretry)
- Welke logbestanden gecontroleerd worden
Bevat filterdefinities in .conf-bestanden.
Deze filters bepalen welke logregels een ban triggeren.
Voorbeelden:
- sshd.conf โ blokkeert brute-force SSH-aanvallen
- nginx-http-auth.conf โ blokkeert foute loginpogingen bij Nginx
Wil je een eigen filter maken? Kopieer een .conf-bestand en pas de regex aan.
Bevat actieprofielen in .conf-bestanden.
Deze bepalen wat er gebeurt zodra een filter een ban triggert.
Voorbeelden:
- iptables-multiport.conf โ blokkeer via iptables
- ufw.conf โ blokkeer via UFW
- sendmail.conf โ stuur een e-mailmelding bij een ban
Het hoofdlogbestand van Fail2ban.
Hierin zie je o.a.:
- Nieuwe bans (Ban)
- Opheffingen (Unban)
- Debug- of foutmeldingen
Fail2ban volledig verwijderen (Debian/Ubuntu)¶
Ja, het is technisch mogelijk om Fail2ban volledig te verwijderen,\ maar dit wordt alleen aangeraden als je een alternatief beveiligingsmechanisme gebruikt\ (bijv. een externe firewall, WAF of IDS/IPS).
Als je Fail2ban verwijdert zonder alternatief, kan je server kwetsbaar worden voor brute-force aanvallen.
Verwijder het pakket¶
Verwijder configuratiebestanden¶
Verwijder logbestanden¶
Let op
Het verwijderen van Fail2ban haalt een belangrijke extra beveiligingslaag weg.
Overweeg dit alleen in een testomgeving of wanneer je zeker weet dat je een alternatief
(zoals een strikte firewall of externe beveiligingsoplossing) hebt geconfigureerd.
Hardening Tips (Fail2ban)¶
Aanbevelingen voor extra veiligheid
-
Gebruik
jail.localin plaats vanjail.conf
Zet je eigen instellingen altijd in/etc/fail2ban/jail.local, zodat updates van Fail2ban je configuratie niet overschrijven. -
Verhoog de bantijd voor hardnekkige aanvallers
Bijvoorbeeld 1 uur of langer:
-
Progressieve straffen instellen
Gebruikbantime.incrementvoor telkens langere bans bij herhaalde aanvallen:
-
Controleer het aantal pogingen (
maxretry)
Zet dit laag (bijv. 3โ5) om brute-force sneller te blokkeren:
-
Extra jails inschakelen
Bescherm ook Nginx, Postfix of andere services met de juiste filters:
-
Whitelist vertrouwde IPโs
Voorkom dat je jezelf buitensluit door je eigen IP toe te voegen:
-
Fail2ban logging uitbreiden
ZetloglevelopINFOofDEBUGvoor meer details:
-
Controleer status regelmatig
Bekijk welke jails actief zijn en welke IPโs geblokkeerd zijn:
โ
Met deze maatregelen is je Fail2ban-configuratie strakker beveiligd en beperk je brute-force risicoโs tot het minimum.
Na elke wijziging altijd even herstarten en controleren: