Het beschermen van je server tegen brute force-aanvallen is een must. De vraag is, hoe precies? Gelukkig voor jou staat Fail2Ban klaar om je server te beschermen, maar de standaardconfiguratie van Fail2Ban heeft wat aanpassingen nodig voor optimale beveiliging. Maak je echter geen zorgen, deze tutorial heeft alles voor je geregeld.
In deze tutorial leer je hoe je Fail2Ban instelt en brute force-aanvallen afweert door je SSH-server te beveiligen.
Klaar? Lees verder om de beveiliging van je SSH-server te optimaliseren!
Vereisten
Deze tutorial bestaat uit stapsgewijze instructies. Als je wilt volgen, zorg er dan voor dat je het volgende hebt:
- Een Ubuntu- en Debian-server – Deze tutorial gebruikt een server die Ubuntu 18.04 LTS draait om Fail2Ban in te stellen en een Debian 10-server om Fail2Ban-verbanningsconfiguraties te testen.
- Root toegang of sudo rechten op de server om commando’s uit te voeren als supergebruiker.
- Fail2Ban geïnstalleerd op een Ubuntu- of Debian-server.
Het opzetten van een basisfirewall
Fail2Ban beschermt uw server door de logs te controleren en IP-adressen te blokkeren die te veel inlogpogingen doen binnen een bepaald tijdsbestek. Maar eerst zult u een basisfirewall opzetten waar u regels kunt toevoegen om kwaadwillige handelingen op uw server te blokkeren.
1. Voer eerst het service
-commando hieronder uit om Fail2Ban (fail2ban stop
) te stoppen met draaien. Stop Fail2Ban wanneer u wijzigingen aanbrengt in uw configuratiebestanden, zodat u de wijzigingen kunt testen en ervoor kunt zorgen dat ze werken zoals verwacht.

2. Voer het apt install
-commando uit om Sendmail
en IPTables-persistent
te installeren. Sendmail is een programma dat Fail2Ban gebruikt om u op de hoogte te stellen wanneer het een IP-adres blokkeert. IPTables-persistent is een programma dat uw gewijzigde configuratie-instellingen opslaat in het /etc/sysconfig/iptables bestand.
Het hebben van deze geïnstalleerde programma’s zorgt ervoor dat je firewall-instellingen intact blijven, zelfs als er iets onverwachts gebeurt, zoals een stroomstoring.
Voer nu elk iptables
-commando hieronder uit om je firewall in te stellen. Deze commando’s genereren geen output, maar voegen vier regels toe aan je firewall. Deze regels staan ofwel verbindingen naar je server toe of blokkeren ze.

4. Voer het iptables
-commando hieronder uit om een samenvatting te bekijken van wat je hebt ingesteld in je firewall.
Hieronder worden de regels die je aan je firewall hebt toegevoegd, gemarkeerd.

5. Voer vervolgens de volgende commando’s uit om je regels op te slaan in het bestand /etc/sysconfig/iptables-config en de Fail2Ban-service te starten. Het bestand iptables-config bevat al je permanente firewallregels.
Fail2Ban voegt automatisch een paar regels toe aan je firewall om je server te beschermen.
6. Voer tot slot het iptables
-commando hieronder opnieuw uit om je firewallregels te bekijken.
Zoals hieronder te zien is, worden de nieuwe regels die Fail2Ban aan je firewall heeft toegevoegd, rood gemarkeerd.

Aanpassen van je lokale Fail2Ban-configuratie
Nu je een basisfirewall hebt draaien, is het tijd om je lokale Fail2Ban-configuratiebestand aan te passen om meer controle te krijgen over de beveiliging van je server. Deze tutorial gebruikt het configuratiebestand /etc/fail2ban/jail.conf, aangezien het alle noodzakelijke opties bevat om de wereldwijde instellingen voor de Fail2Ban-toepassing te configureren.
Misschien wil je aangepaste regels maken voor je SSH-server. Als dat het geval is, maak je een nieuw bestand genaamd jail.local (gebaseerd op het bestand jail.conf) en plaats je de SSH-specifieke regels in het bestand jail.local. Op deze manier kun je instellingen in het bestand jail.conf overschrijven voor je server.
1. Voer de awk
-opdracht hieronder uit om het volgende te doen:
- Druk de inhoud af (
'{ printf "# "; print; }'
) van het bestand/etc/fail2ban/jail.conf
af. - Maak een bestand met de naam jail.local (gebaseerd op het bestand jail.conf), dat kan worden gebruikt om de standaardinstellingen in het bestand jail.conf over te schrijven.
- Leid de inhoud van het bestand
/etc/fail2ban/jail.conf
naar detee
-opdracht. Hierdoor wordt de inhoud van het bestandjail.conf
naar je lokale bestandssysteem geschreven (/etc/fail2ban/jail.local
).

2. Zodra je het bestand jail.local hebt aangemaakt, voer dan de ls
-opdracht hieronder uit. De opdracht toont de inhoud van de Fail2Ban-map van je server (/etc/fail2ban
) om te controleren of je jail.local-bestand correct is aangemaakt.
Als je het nieuwe jail.local-bestand ziet, zoals hieronder weergegeven, dan is je lokale bestand correct aangemaakt.

3. Open het bestand /etc/fail2ban/jail.local in je favoriete teksteditor en ga naar de [ssh]-sectie.
Verwijder het #-symbool voor de [sshd]– en enabled-opties, zoals hieronder weergegeven, om SSH in te schakelen.
Vanaf dit punt tot het einde van de tutorial, verwijder het #-symbool voor secties of opties om ze in te schakelen.

4. Scroll naar beneden en verwijder het commentaar voor de [DEFAULT]-sectie zoals hieronder weergegeven. In deze sectie configureer je de standaardinstellingen voor Fail2Ban. Instellingen in deze sectie worden toegepast op alle jails die Fail2Ban beheert.

5. Ga vervolgens naar de bantime-sectie en stel een bantime in voor 60 minuten. De bantime-optie bepaalt de tijd, in minuten, dat een IP-adres wordt geblokkeerd na een mislukte aanmeldingspoging.
De standaard instelling voor bantijd is 600 seconden (10 minuten). U kunt deze instelling naar wens aanpassen, maar het is belangrijk op te merken dat hoe lager de bantijd is ingesteld, hoe meer belasting uw server zal ervaren.

6. Ga naar de findtime en maxretry opties. Houd de findtime zoals deze is (10m) en verlaag de maxretry naar 3.
De findtime optie stelt de hoeveelheid tijd in, in minuten, dat een IP-adres kan falen om in te loggen voordat het wordt verbannen. Terwijl de maxretry optie het aantal mislukte inlogpogingen instelt voordat een IP-adres wordt verbannen.
De standaard findtime instelling is 10 minuten, en maxretry is 5 minuten. Als gevolg hiervan wordt een IP-adres dat 5 keer binnen een periode van 10 minuten niet kan inloggen, verbannen.

7. Scroll naar beneden, verwijder de opmerkingstekens en configureer de destemail, sender, en mta opties:
- destemail – Voer een e-mailadres in waar Fail2Ban meldingen naartoe stuurt.
- sender – Stel het “Van”-veld in de e-mail in die Fail2Ban naar destemail stuurt.
- mta – Houd de standaardwaarde (sendmail) zoals deze is. De mta optie stelt de e-mailbezorgingsagent in die Fail2Ban gebruikt om meldingen te verzenden.

8. Navigeren naar de actie opties, zoals hieronder getoond, en de action_mwl optie uitcommentariëren. Hierdoor kan Fail2Ban logwatch e-mails naar jou sturen. Je kunt logwatch e-mails bekijken om eventuele potentiële beveiligingsproblemen op je server verder te onderzoeken.
Bewaar de wijzigingen en verlaat de teksteditor.

9. Voer nu de onderstaande commando’s uit om je fail2ban
service te herstarten.
10. Voer tot slot het onderstaande commando uit om de status van je fail2ban
service te controleren. sudo service fail2ban status
Als de Fail2Ban-service werkt, krijg je een output zoals hieronder weergegeven.
Als de Fail2Ban-service werkt, krijg je een output zoals hieronder weergegeven.

Testen van je Banning Configuraties
Je hebt zojuist Fail2Ban geconfigureerd, dus het is tijd om te testen of de verbanningsconfiguraties daadwerkelijk werken. Probeer meerdere mislukte SSH-inlogpogingen naar je Fail2Ban-server vanaf een secundaire server en kijk of die secundaire server wordt verbannen.
1. Log in op je secundaire server (Debian) en voer het onderstaande commando uit om SSH te verbinden met je Fail2Ban-server.
Deze demo gebruikt een Debian 10-server met een IP-adres van 134.122.20.103 om naar de fail2ban
-server te ssh
-en die een IP-adres heeft van 69.28.83.134
.
2. Voer een willekeurig wachtwoord in wanneer daarom wordt gevraagd en druk op Enter.
Bij de eerste poging zal de Fail2Ban-server de SSH-inlogpoging stoppen en het bericht Permission denied afdrukken, zoals hieronder weergegeven. Herhaal de SSH-inlogpoging nog twee tot drie keer en de Fail2Ban-server zal uiteindelijk stoppen met reageren op uw SSH-inlogpoging.
Op dit punt krijgt u niet langer een bericht Permission denied maar een leeg scherm. Een leeg scherm geeft aan dat uw tweede server (Debian) is verbannen van de Fail2Ban-server.

Maar misschien heeft u al een lijst met IP-adressen om te blokkeren vanaf uw Fail2Ban-server. Zo ja, open het bestand jail.local en ga naar de sectie [DEFAULT]. Haal het commentaar weg bij de optie ignoreip en stel de IP-adressen in die geblokkeerd moeten worden, zoals hieronder weergegeven.
Het adres kan meerdere afzonderlijke IPv4- of IPv6-vermeldingen zijn, of anders gescheiden door komma’s.

3. Op uw Fail2Ban-server (Ubuntu), voer het onderstaande iptables
-commando opnieuw uit om uw firewallregels te bekijken.
Let hieronder op dat er een nieuwe regel is die SSH-inlogpogingen van het IP-adres 134.122.20.103 afwijst.
U ontvangt ook een e-mail van Fail2Ban, bij een succesvolle ban, met een bijgevoegd logbestand als u sendmail heeft ingesteld op uw Fail2Ban-server. De e-mailmelding geeft aan dat Fail2Ban succesvol een brute force-aanval heeft gestopt en uw server heeft beschermd tegen mogelijke schade.

Conclusie
Gedurende deze handleiding heb je geleerd hoe je Fail2Ban kunt configureren op een Ubuntu-server. Op dit punt zou je goed uitgerust moeten zijn met de kennis om je SSH-server te beschermen tegen brute-force aanvallen.
Waarom neem je deze nieuwe kennis niet een stap verder? Misschien beginnen met het blokkeren van IP-adressen op alle poorten met Fail2Ban op een docker-host?