SSH beveiligen met Fail2Ban op CentOS 6
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 CentOS 6 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
Fail2Ban is niet opgenomen in de standaard CentOS repository. Deze kan gevonden worden in het EPEL-project, wat staat voor ‘Extra Packages voor Enterprise Linux’. EPEL kan geïnstalleerd en geconfigureerd worden door de volgende commando’s uit te voeren:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
Zodra de installatie is voltooid heeft u de mogelijkheid om Fail2Ban te installeren. Dit kunt u doen middels het volgende commando:
yum install fail2ban –y
Vervolgens kunt u met het volgende commando ervoor zorgen dat Fail2Ban automatisch wordt opgestart bij het opstarten van uw VPS:
chkconfig fail2ban on
Configureer Fail2ban
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”, protocollen zoals SSH waar de software op filtert, gebruik van maken. Deze kunnen hieronder gevonden worden:
[DEFAULT]
#
# MISCELLANEOUS OPTIONS
#
# "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 (and/or comma) 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" is the number of failures before a host get banned.
maxretry = 5
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 instellen
Zoek in het ‘/etc/fail2ban/jail.local’ bestand het volgende op:
[sshd]
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Dit vak bevat de individuele configuratie voor de SSH jail. Echter is deze nog niet geactiveerd en wordt er daarom op het SSH-protocol nog geen filtering toegepast. Vervang het bovenstaande vak daarom met volgende:
[sshd]
enabled = true
port = ssh
logpath = /var/log/secure
backend = %(sshd_backend)s
Sla vervolgens het ‘jail.local’ bestand op en start Fail2Ban met het volgende commando:
service fail2ban start
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:
service fail2ban 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 CentOS 6 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
Categorieën
Woordenlijst
De woordenlijst is een alfabetisch gerangschikte lijst met technische termen die in de artikelen voorkomen.