Hoe SSH te beveiligen met Fail2Ban

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.

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.

sudo service fail2ban stop
Stopping the fail2ban service

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.

sudo apt install sendmail iptables-persistent -y

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.

## Eerste regel - Accepteert alle verkeer gegenereerd door de server (lo-interface) 
sudo iptables -A INPUT -i lo -j ACCEPT
## Tweede regel - Accepteert al het verkeer dat deel uitmaakt van een gevestigde of gerelateerde verbinding
## Derde regel - Staat SSH-verkeer op poort 22 toe
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
## Vierde regel - Blokkeert al het andere verkeer
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

sudo iptables -A INPUT -j DROP
Adding four rules to your firewall

4. Voer het iptables-commando hieronder uit om een samenvatting te bekijken van wat je hebt ingesteld in je firewall.

sudo iptables -S

Hieronder worden de regels die je aan je firewall hebt toegevoegd, gemarkeerd.

Checking your firewall rules

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.

sudo dpkg-reconfigure iptables-persistent
sudo service fail2ban start

6. Voer tot slot het iptables-commando hieronder opnieuw uit om je firewallregels te bekijken.

sudo iptables -S

Zoals hieronder te zien is, worden de nieuwe regels die Fail2Ban aan je firewall heeft toegevoegd, rood gemarkeerd.

Previewing your firewall rules

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 de tee-opdracht. Hierdoor wordt de inhoud van het bestand jail.conf naar je lokale bestandssysteem geschreven (/etc/fail2ban/jail.local).
awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local
Creating the jail.local file

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.

ls /etc/fail2ban

Als je het nieuwe jail.local-bestand ziet, zoals hieronder weergegeven, dan is je lokale bestand correct aangemaakt.

Checking the newly created local file (jail.local)

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.

Enabling the [ssh] section

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.

Uncommenting the [DEFAULT] option

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.

Setting a ban duration

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.

Setting a Window Time for an IP Address to Login Before Getting Banned

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.
Configuring destemail, sender, and mta options

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.

Enabling Logwatch Emails

9. Voer nu de onderstaande commando’s uit om je fail2ban service te herstarten.

sudo service fail2ban stop
sudo service fail2ban start

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.

sudo service fail2ban status

Als de Fail2Ban-service werkt, krijg je een output zoals hieronder weergegeven.

Checking the Fail2Ban Service Status

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.

Testing if a server gets banned from Fail2Ban server after several failed logins

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.

Setting IP Addresses to Block from Fail2Ban Server

3. Op uw Fail2Ban-server (Ubuntu), voer het onderstaande iptables-commando opnieuw uit om uw firewallregels te bekijken.

sudo iptables -S

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.

Checking additional firewall rules

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?

Source:
https://adamtheautomator.com/fail2ban-ssh/