SSH beveiligen met Fail2Ban op Ubuntu 12.04 / 14.04

Bekeken: 280 keer - Laatste update: 27 Jul 2017, 11:55:20

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 Ubuntu 12.04 of 14.04 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 Ubuntu repository:

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

Fail2Ban zou standaard op moeten starten op het moment dat u de VPS opnieuw opstart. Dit kunt u controleren met het door het volgende commando in te geven:

ls -al /etc/init.d/fail2ban && ls -al /etc/rc*.d/ | grep fail2ban

Als u Fail2Ban in de output naar voren ziet komen weet u zeker dat deze bij een herstart van uw VPS wordt opgestart. Als dit niet het geval is kunt u het volgende commando gebruiken om ervoor te zorgen dat dit alsnog gebeurt:

update-rc.d fail2ban enable


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

# "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 en/of komma 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: sshd


Conclusie

U zou nu moeten weten hoe u Fail2Ban configureert op Ubuntu 12.04 en 14.04, 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



Heeft u vragen naar aanleiding van bovenstaande uitleg? Neem dan gerust contact met ons op.

Woordenlijst

De woordenlijst is een alfabetisch gerangschikte lijst met technische termen die in de artikelen voorkomen.

1999-2017 Argeweb BV | Algemene voorwaarden | Privacy verklaring | Prijzen excl. 21% BTW