Vandaag staan we van 9:00 – 15:45 voor je klaar
Vandaag zijn we gesloten

SSH beveiligen met Fail2Ban op Debian 8

Laatste update: 19 Aug 2020

Verbinding maken met een VPS middels het SSH-protocol is een veilige manier om een server te benaderen. Doordat de SSH daemon constant met het internet verbonden is om correct te kunnen functioneren, wordt deze ook meteen een doelwit voor aanvallers. Een kwaadwillende partij kan duizenden keren per minuut in proberen te loggen met verschillende gebruikersgegevens, ook wel een ‘brute-force aanval’ genoemd. Hierdoor zal hij in theorie op een bepaald moment toegang krijgen tot de server wanneer de juiste gebruikersgegevens zijn geraden.

Het is van belang om uw VPS te beschermen tegen dit soort aanvallen. Dit kan worden gedaan met Fail2Ban. Deze software houdt uw logs in de gaten en zal aan de hand hiervan blokkades instellen, zoals bijvoorbeeld wanneer een IP-adres meerdere malen met foutieve gegevens in probeert te loggen. Zo voorkomt u dat deze IP-adressen oneindig veel inlogpogingen kunnen doen.

In dit artikel leggen we uit hoe u Fail2Ban installeert op een Debian 8 VPS wanneer u als een gebruiker met root-rechten bent ingelogd. Houd er rekening mee dat de onderstaande uitleg is geschreven voor Apache en daarom af kan wijken gebruikers van NGINX.

 

Installeer Fail2Ban

Door de volgende commando in te geven kunt u Fail2Ban installeren en doen ook meteen een update van de Debian repository:

apt-get update && apt-get install fail2ban -y

Fail2Ban is nu niet alleen geïnstalleerd, ook is de software meteen opgestart met de standaard instellingen. Ook zou Fail2Ban standaard op moeten starten bij een herstart van de VPS.


Configureer Fail2ban

Standaard is Fail2Ban ingesteld om alleen ongeldige inlogpogingen te verbannen die op het SSH-protocol plaatsvinden. Overige "jails”, protocollen waar de software op filtert, zijn standaard niet ingeschakeld. Deze kunnen echter volledig naar wens worden ingesteld.

Alle configuratie van Fail2Ban kan onder het pad ‘/etc/fail2ban/’ gevonden worden. Hier staat onder meer de ‘jail.conf’, waarin de standaard waardes gevonden kunnen worden waar Fail2Ban gebruik van maakt. Het is echter aan te raden om geen wijzigingen in dit bestand uit te voeren, aangezien deze met een update van Fail2Ban ongedaan gemaakt zullen worden. Daarentegen kan er een kopie worden gemaakt met de naam ‘jail.local’. Dit kan worden gedaan met het volgende commando:

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

Open vervolgens het nieuwe configuratiebestand:

vi /etc/fail2ban/jail.local

Er zijn een aantal standaardwaardes in Fail2Ban aanwezig waar de meeste ‘jails’ gebruik van maken. Deze kunnen hieronder gevonden worden:

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not

# ban a host which matches an address in this list. Several addresses can be

# defined using space separator.

ignoreip = 127.0.0.1/8

# External command that will take an tagged arguments to ignore, e.g. <ip>,

# and return true if the IP is to be ignored. False otherwise.

#

# ignorecommand = /path/to/command <ip>

ignorecommand =

# "bantime" is the number of seconds that a host is banned.

bantime = 600

# A host is banned if it has generated "maxretry" during the last "findtime"

# seconds.

findtime = 600

maxretry = 3

In de regel van ‘ignoreip’ kunt u uw IP-adres plaatsen, zodat deze niet verbannen zal worden op het moment dat u zelf teveel foutieve inlogpogingen doet. Ieder IP-adres dat u opgeeft dient hierbij met een spatie gescheiden te worden.

In het bovenstaande voorbeeld ziet u eveneens de ‘findtime’ en ‘maxretry’ waardes. Dit zijn condities die bepalen wanneer een IP-adres verbannen moet worden. De ‘maxretry’ waarde bepaald hoe vaak een IP-adres verkeerde gebruikers op mag geven, en de ‘findtime’ bepaald binnen hoeveel tijd ditzelfde adres dit mag doen. De ‘bantime’ bepaalt vervolgens hoe lang dit IP-adres wordt verbannen op het moment dat het boven de eerder genoemde waardes uitkomt.

In het voorbeeld hierboven zal een IP-adres worden verbannen op het moment dat deze 5 keer met verkeerde gebruikersgegevens probeert in te loggen binnen 10 minuten tijd (600 seconden). Vervolgens blijft dit adres voor 10 minuten (600 seconden) verbannen. Door bijvoorbeeld de ‘bantime’ te verhogen naar 3600 zorgt u dat de verbannen tijd wordt verhoogd van 10 minuten naar een uur.

 

SSH beveiliging controleren

Als alles goed is gegaan staat Fail2Ban nu aan en monitort deze inkomend verkeer op het SSH-protocol. Dit kan worden bevestigd door te controleren of de SSH ‘jail’ is ingesteld met het volgende commando:

fail2ban-client status

Dit zou de volgende output moeten geven:

Status

|- Number of jail: 1

`- Jail list: ssh


Conclusie

U zou nu moeten weten hoe u Fail2Ban configureert op Debian 8 en aanpassingen toebrengt in de configuratie. Vergeet niet bij iedere wijziging die u uitvoert in het ‘jail.local’ bestand Fail2Ban te herstarten, omdat deze wijzigingen anders niet actief worden. U kunt de Fail2Ban service herstarten door het volgende commando in te geven:

service fail2ban restart

Een .nl domein registreren? Eerste jaar slechts 3,99
Check mijn domein