Zoeken op website

Hoe Fail2ban te gebruiken om uw Linux-server te beveiligen


Het verbeteren van uw serverbeveiliging zou een van uw topprioriteiten moeten zijn als het gaat om het beheren van een Linux-server. Als u uw serverlogboeken bekijkt, kunt u vaak verschillende pogingen tegenkomen voor brute force login, web floods, het zoeken naar exploits en vele andere.

Met inbraakpreventiesoftware zoals fail2ban kunt u uw serverlogboeken onderzoeken en extra iptables-regels toevoegen om problematische IP-adressen te blokkeren.

Lees ook: Fail2Ban installeren om SSH op CentOS/RHEL 8 te beschermen

Deze tutorial laat je zien hoe je fail2ban installeert en de basisconfiguratie instelt om je Linux-systeem te beschermen tegen brute-force-aanvallen.

Vereisten

Fail2ban is geschreven in Python en de enige vereiste is dat Python geïnstalleerd is:

  • Fail2ban branch 0.9.x vereist Python >=2.6 of Python >=3.2
  • Fail2ban branch 0.8.x vereist Python >=2.4
  • Root-toegang tot uw systeem
  • Optioneel iptables of showewall en sendmail

Hoe Fail2Ban op Linux-systemen te installeren

Installatie van fail2ban is relatief eenvoudig:

Installeer Fail2Ban op CentOS/RHEL

Update eerst uw pakketten, schakel de Epel repository in en installeer fail2ban zoals weergegeven.

yum update
yum install epel-release
yum install fail2ban

Installeer Fail2Ban op Debian/Ubuntu

Update eerst uw pakketten en installeer fail2ban zoals weergegeven.

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

Optioneel kunt u sendmail installeren als u e-mailondersteuning (voor e-mailmeldingen) wilt inschakelen.

yum install sendmail                   [On CentOS/RHEL]
apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

Om fail2ban en sendmail in te schakelen, gebruikt u de volgende opdrachten:

systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail

Hoe Fail2ban in Linux-systemen te configureren

Standaard gebruikt fail2ban de .conf bestanden in /etc/fail2ban/ die als eerste worden gelezen. Deze kunnen echter worden overschreven door .local-bestanden die zich in dezelfde map bevinden.

Het bestand .local hoeft dus niet alle instellingen uit het bestand .conf te bevatten, maar alleen de instellingen die u wilt overschrijven. Wijzigingen moeten worden aangebracht in de .local bestanden, niet in de .conf. Dit voorkomt dat wijzigingen worden overschreven bij het upgraden van het fail2ban-pakket.

Voor het doel van deze tutorial kopiëren we het bestaande bestand fail2ban.conf naar fail2ban.local.

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

Nu kunt u de wijzigingen aanbrengen in het bestand .local met behulp van uw favoriete teksteditor. De waarden die u kunt bewerken zijn:

  • loglevel – dit is het detailniveau dat moet worden gelogd. Mogelijke opties zijn:

    • KRITIEK
    • FOUT
    • WAARSCHUWING
    • KENNISGEVING
    • INFO
    • DEBUGGEN
  • logtarget – log de acties in een specifiek bestand. De standaardwaarde is /var/log/fail2ban.log. U kunt dit echter wijzigen in:

    • STDOUT – voer alle gegevens uit
    • STDERR – voer eventuele fouten uit
    • SYSLOG – op berichten gebaseerde logboekregistratie
    • Bestand – uitvoer naar een bestand
  • socket – map waarin het socketbestand wordt geplaatst.
  • pidfile – locatie van het pidbestand.

Configureer Fail2ban jail.local

Eén van de belangrijkste bestanden in fail2ban is jail.conf, dat uw jails definieert. Hier definieert u de services waarvoor fail2ban moet worden ingeschakeld.

Zoals we eerder vermeldden, kunnen .conf-bestanden tijdens upgrades worden gewijzigd. Daarom moet u een jail.local-bestand maken waarin u uw wijzigingen kunt toepassen.

Een andere manier om dit te doen is door simpelweg het .conf bestand te kopiëren met:

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

Als je CentOS of Fedora gebruikt, moet je de backend in jail.local wijzigen van “auto ” naar “systemd ”.

Als u Ubuntu/Debian gebruikt, hoeft u deze wijziging niet aan te brengen, ook al gebruiken zij ook systemd.

Het jailbestand schakelt SSH standaard in voor Debian en Ubuntu, maar niet voor CentOS. Als u dit wilt inschakelen, wijzigt u eenvoudigweg de volgende regel in /etc/fail2ban/jail.local:

[sshd]
enabled = true
Tijden voor verbod en opnieuw proberen

U kunt de omstandigheid configureren waarna een IP-adres wordt geblokkeerd. Voor dat doel gebruikt fail2ban bantime, findtime en maxretry.

  • bantime – dit is het aantal seconden dat een IP-adres verbannen blijft (standaard 10 min).
  • findtime – de hoeveelheid tijd tussen inlogpogingen, voordat de host wordt verbannen. (standaard 10 min.). Met andere woorden, als fail2ban is ingesteld om een IP-adres te blokkeren na 3 mislukte inlogpogingen, moeten die 3 pogingen worden gedaan binnen de vindtijdperiode (10 minuten).
  • maxretry – aantal pogingen dat moet worden gedaan voordat een verbod wordt toegepast. (standaard 3).
IP-adres op witte lijst zetten

Natuurlijk wilt u bepaalde IP-adressen op de witte lijst zetten. Om dergelijke IP-adressen te configureren, opent u /etc/fail2ban/jail.local met uw favoriete teksteditor en verwijdert u de commentaar op de volgende regel:

ignoreip = 127.0.0.1/8  ::1

Vervolgens kunt u de IP-adressen invoeren die u wilt negeren. IP-adressen moeten worden gescheiden van een spatie of komma.

email waarschuwingen

Als u e-mailwaarschuwingen over de gebeurtenis wilt ontvangen, moet u de volgende instellingen configureren in /etc/fail2ban/jail.local:

  • destemail – e-mailadres, waar u de melding ontvangt.
  • Naam afzender – de afzender die u ziet wanneer u het bericht ontvangt.
  • afzender – e-mailadres van waaruit fail2ban de e-mails zal verzenden.

De standaard mta (mail transfer agent) is ingesteld op sendmail.

Om e-mailmeldingen te ontvangen, moet u ook de instelling “actie” wijzigen van:

Action = %(action_)s

Naar een van deze:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s – zal de host verbannen en een e-mail sturen met een whois-rapport.
  • %(action_mwl)s – zal de host verbannen, whois-informatie en alle relevante informatie uit het logbestand verstrekken.

Aanvullende Fail2ban Jail-configuratie

Tot nu toe hebben we gekeken naar de basisconfiguratieopties. Als u een gevangenis wilt configureren, moet u deze inschakelen in het bestand jail.local. De syntaxis is vrij eenvoudig:

[jail_to_enable]
. . .
enabled = true

Waar je jail_to_enable moet vervangen door de daadwerkelijke jail, bijvoorbeeld “sshd ”. In het bestand jail.local zijn de volgende waarden vooraf gedefinieerd voor de ssh-service:

[sshd]

port = ssh
logpath = %(sshd_log)s

U kunt een filter inschakelen waarmee u kunt identificeren of een regel in het logboek een mislukte regel is. De filterwaarde is feitelijk een verwijzing naar een bestand met de servicenaam gevolgd door .conf. Bijvoorbeeld: /etc/fail2ban/filter.d/sshd.conf.

De syntaxis is:

filter = service

Bijvoorbeeld:

filter = sshd

U kunt de bestaande filters bekijken in de volgende map: /etc/fail2ban/filter.d/.

Gebruik fail2ban-client

Fail2ban wordt geleverd met een client die kan worden gebruikt voor het bekijken en wijzigen van de huidige configuratie. Omdat het veel opties biedt, kun je de handleiding doornemen met:

man fail2ban-client 

Hier ziet u enkele basiscommando's die u kunt gebruiken. Om de huidige status van fail2ban of voor een specifieke gevangenis te bekijken, kunt u het volgende gebruiken:

fail2ban-client status

Het resultaat zal er ongeveer zo uitzien:

Voor individuele gevangenissen kunt u het volgende uitvoeren:

fail2ban-client status sshd

In de onderstaande schermafbeelding ziet u dat ik met opzet meerdere aanmeldingen heb mislukt, zodat fail2ban het IP-adres kan blokkeren waarmee ik verbinding probeerde te maken:

Conclusie

Fail2ban is een uitstekend, goed gedocumenteerd systeem voor inbraakpreventie, dat extra beveiliging biedt aan uw Linux-systeem. Het vergt enige tijd om te wennen aan de opzet en syntaxis, maar zodra u er vertrouwd mee bent, kunt u de regels ervan wijzigen en uitbreiden.