Fail2ban installeren en instellen op Ubuntu 22.04

Fail2ban is gratis en open-source IPS (Intrusion Prevention Software) die beheerders helpt Linux servers te beveiligen tegen kwaadwillige login en brute-force aanvallen. Fail2ban is geschreven in Python en wordt geleverd met filters voor verschillende diensten zoals Apache2, SSH, FTP, enz. Fail2ban vermindert kwaadwillige inlogpogingen door de IP adressen van de bronaanvallen te blokkeren.

Fail2ban werkt door logbestanden van diensten te scannen (bv. /var/log/auth.log) en IP adressen te weren die kwaadaardige inlogpogingen vertonen, zoals te veel onjuiste wachtwoorden, exploits zoeken, enz. Fail2ban ondersteunt ook meerdere firewall backend, zoals iptables, ufw, en firewalld. Ook kun je een e-mail notificatie instellen voor elke geblokkeerde aanmeldpoging.

In deze handleiding laten we je zien hoe je Fail2ban installeert en configureert om een Ubuntu 22.04 server te beveiligen. Deze gids behandelt ook de basiscommando’s van fail2ban-client voor het beheer van de Fail2ban dienst en jails.

Vereisten

  • Een Ubuntu server 22.04
  • Een niet-root gebruiker met sudo privileges.

Instellen UFW Firewall

Voordat je begint met de installatie van Fail2ban, moet je de Firewall op je Ubuntu server instellen.

De standaard Ubuntu server installatie wordt geleverd met de UFW Firewall, die gemakkelijker te beheren is dan een andere firewall zoals iptables.

Controleer nu de UFW firewall status met het volgende commando.

sudo ufw status

Als je de uitvoermelding krijgt zoals “Status: inactive“, dan is je UFW firewall nog niet gestart. Maar als je de uitvoermelding krijgt zoals “Command ufw not found”, dan is de UFW firewall niet op je server geïnstalleerd.

Om het UFW firewall pakket te installeren, voer je het onderstaande apt commando uit.

sudo apt install ufw -y

Nadat de installatie van UFW voltooid is, voer je het onderstaande commando uit om de SSH dienst aan de UFW firewall toe te voegen.

sudo ufw allow ssh

Voer daarna het onderstaande commando uit om de UFW firewall te starten en in te schakelen.

sudo ufw enable

Voer y in om te bevestigen en de UFW firewall te starten.

Controleer tenslotte nogmaals de UFW firewall met het volgende commando.

sudo ufw status

Hieronder zie je de UFW firewall“Status: active” met de SSH poort 22 toegevoegd aan de firewall regels.

setup ufw firewall

Fail2ban installeren op Ubuntu 22.04

Nadat je de UFW firewall geïnstalleerd en geconfigureerd hebt, installeer je nu het Fail2ban pakket op je server.

Voer het volgende commando uit om je Ubuntu repository bij te werken en te verversen.

sudo apt update

Installeer nu het Fail2ban pakket met het onderstaande commando.

sudo apt install fail2ban -y

De installatie zal beginnen.

fail2ban 22.04 installeren

Nadat de installatie van Fail2ban voltooid is, schakel je de Fail2ban dienst in en start je de dienst met het onderstaande commando.

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Controleer ten slotte de status van de Fail2ban dienst met het volgende commando.

sudo systemctl status fail2ban

In de onderstaande schermafbeelding zie je dat de Fail2ban dienst draait op de Ubuntu 22.04 server.

start en verifieer fail2ban service

Fail2ban instellen

Nadat je de Fail2ban geïnstalleerd hebt, is het nu tijd om de Fail2ban in te stellen en te configureren.

Alle Fail2ban configuratie wordt opgeslagen in de /etc/fail2ban directory. Hieronder gedetailleerde Fail2ban configuratie die je moet kennen:

  • De configuratie fail2ban.conf is de hoofdconfiguratie van Fail2ban.
  • De configuratie jail.conf is een voorbeeld van de Fail2ban jail configuratie.
  • De directory action.d bevat instellingen voor fail2ban acties, zoals mail instellingen en firewall instellingen.
  • De map jail.d bevat aanvullende configuratie voor de fail2ban jail.

Om te beginnen met het configureren van Fail2ban, moet je de standaard jail configuratie jail.conf kopiëren naar jail.local met het volgende commando.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Bewerk nu de configuratie jail.local met nano editor.

sudo nano /etc/fail2ban/jail.local

Haal eerst het commentaar weg bij de ignoreip optie en voeg je IP adres toe. Alle IP adressen binnen de ignoreip optie zullen niet geblokkeerd worden door Fail2ban.

ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 192.168.10.20

Voor de ban instellingen kun je de configuratie veranderen zoals je nodig hebt. In dit voorbeeld wordt de globale bantijd 1dag, de vindtijd wordt 10minuten, en de maxretry is tot 5 maal.

De bantime optie is de tijd dat een IP adres geen toegang meer mag krijgen tot de server. De findtime optie is de tijdsduur tussen het aantal mislukkingen vóór de ban actie. En de maxretry optie is het aantal mislukkingen voor IP adressen om gebanned te worden.

bantime  = 1d
findtime  = 10m
maxretry = 5

De standaard actie voor Fail2ban is alleen het verbannen van het IP adres. Maar je kunt ook een e-mail notificatie instellen wanneer een IP adres verbannen wordt.

Verander de actie optie zoals hieronder en verander het standaard afzender en bestemmings mail adres.

action = %(action_mw)s
destemail = [email protected]
sender = [email protected]

Vervolgens moet je voor de UFW firewall integratie de banaction optie veranderen in ufw zoals hieronder.

banaction = ufw

Tenslotte voor de jails configuratie. In dit gedeelte voeg je je dienst toe en beveilig je die met fail2ban.

In dit voorbeeld schakelen we de jail in voor de SSH dienst, maar we overschrijven ook de globale standaard instelling voor de sshd jail. De bantijd wordt 1week met maxretry van mislukkingen 3maal en de vindtijd in 10minuten.

[sshd]
enabled   = true
maxretry  = 3
findtime  = 1d
bantime   = 1w

port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Bewaar en sluit het bestand als je klaar bent.

Voer nu het volgende commando uit om de Fail2ban dienst opnieuw te starten en de nieuwe wijzigingen in de jail.local configuratie toe te passen.

sudo systemctl restart fail2ban

Je hebt nu de Fail2ban configuratie voltooid met e-mail notificatie ingeschakeld en de sshd jail ingeschakeld voor het beveiligen van de SSH dienst.

Fail2ban-client gebruiken om de status van Fail2ban te verifiëren

De fail2ban levert een command-line fail2ban-client voor interactie met de Fail2ban dienst. Hiermee kun je de Fail2ban vanaf de commandoregel beheren en configureren, en ook Fail2ban jails beheren.

Om de installatie en configuratie van fail2ban te controleren, voer je het onderstaande commando fail2ban-client uit.

sudo fail2ban-client ping

Als je de uitvoermelding krijgt zoals“Server replied: pong“, betekent dit dat de Fail2ban zonder fout draait.

Voer vervolgens het onderstaande commando fail2ban-client uit om de status van de sshd jail te controleren.

sudo fail2ban-client status sshd

Hieronder zie je de gedetailleerde status van de sshd jail. Dit omvat het logbestand voor de SSH dienst en de lijst van gebannen IP adressen op de sshd jail.

controleer sshd jail status

Als je nu een gedetailleerde configuratie van de sshd jail wilt krijgen, kun je het fail2ban-client commando gebruiken zoals hieronder.

Bekijk de bantime configuratie voor de sshd jail. Je krijgt hier de uitvoer van de bantijd in seconden.

sudo fail2ban-client get sshd bantime

Bekijk de maxrtey configuratie voor de sshd jail. Je ziet dat de maxretry hier 3 is, omdat die overschreven is van de globale configuratie, die maxrety 5times is.

sudo fail2ban-client get sshd maxretry

Voor de banactie in de sshd jail kun je het volgende commando gebruiken. En je zou de uitvoer van ufw moeten krijgen als de standaard banactie voor sshd jail.

sudo fail2ban-client get sshd actions

Voor de findtime zie je hier ook de override waarde fr de sshd jail. De uitvoer zal ook hier in seconden formaat zijn.

sudo fail2ban-client get sshd findtime

Tenslotte kun je ook de standaard ignoreip voor sshd jail controleren met het onderstaande commando. En je zult zien dat de ignoreip dezelfde waarde heeft als de globale Fail2ban configuratie.

sudo fail2ban-client get sshd ignoreip

controleer sshd details

Ban en Unban IP met Fail2ban-client

Een ander belangrijk ding over Fail2ban is hier hoe je IP adressen kunt bannen en unbannen op Fail2ban. Om dat te doen, kun je ook het fail2ban-client commando gebruiken.

Om IP adressen handmatig op de sshd jail te bannen, kun je het onderstaande fail2ban-client commando gebruiken. Verander het IP adres met het IP adres dat je wilt bannen.

sudo fail2ban-client set sshd banip IP-ADDRESS

Om het IP adres uit de sshd jail te bannen, kun je het onderstaande fail2ban-client commando gebruiken. Let er wel op dat je het IP adres verandert met het IP adres dat je wilt unbannen.

sudo fail2ban-client set sshd unbanip IP-ADDRESS

Nadat je nu een IP adres handmatig geband hebt of een IP adres unban hebt, kun je met het onderstaande fail2ban-client commando verifiëren.

sudo fail2ban-client status sshd

Als je een IP adres handmatig verbant, controleer dan of het IP adres voorkomt op de lijst van gebande IP adressen. Maar als je een IP adres unban, controleer dan of het IP adres uit de lijst van gebande IP adressen verdwijnt.

Conclusie

Gefeliciteerd! Je hebt nu met succes Fail2ban geïnstalleerd en ingesteld voor het beveiligen van Ubuntu 22.04. Je hebt ook geleerd hoe je de UFW firewall inschakelt, en hoe je Fail2ban integreert met de UFW firewall. Tenslotte heb je ook geleerd hoe je Fail2ban kunt beheren met het fail2ban-client commando, waaronder het bannen en unbannen van IP adressen van Fail2ban.