- Implementatie van een dynamisch IP-blokkeringssysteem gebaseerd op de analyse van toegangslogboeken.
- Gebruik van .local-configuratiebestanden om te voorkomen dat instellingen verloren gaan tijdens systeemupdates.
- Beveiliging via meerdere kanalen voor kritieke services zoals SSH, webservers, databases en FTP.
- Realtime beheer van verbanningen en opheffingen met behulp van de fail2ban-client commandoregeltool.

Een Linux-server die aan het netwerk is blootgesteld, is in feite een magneet voor bots. Als u geen beveiligingsmaatregelen hebt getroffen, staan er waarschijnlijk al duizenden mislukte inlogpogingen in uw logboeken; geautomatiseerde machines proberen voortdurend verschillende gebruikersnaam- en wachtwoordcombinaties uit om via brute-force-aanvallen de controle over uw server over te nemen.
Hier komt Fail2ban in beeld, een tool die fungeert als een onvermoeibare waakhond. Het is geen firewall in de strikte zin van het woord, maar het analyseert systeemlogboeken en, wanneer het detecteert dat iemand probeert in te breken, slaat het de deur in het gezicht dicht door het IP-adres te blokkeren met behulp van tools zoals iptables of nftables. Laten we eens kijken hoe je het configureert om je server een lastige tegenstander te maken.
Wat is Fail2ban precies en hoe werkt het?
Simpel gezegd is Fail2ban een daemon die continu de logbestanden van uw services controleert. Wanneer het verdachte patronen vindt die overeenkomen met vooraf gedefinieerde regels, filters genaamd , begint het de mislukte pogingen te tellen. Als een IP-adres binnen een bepaalde tijd de limiet van toegestane pogingen bereikt, voert het programma een actie uit , meestal door dat IP-adres aan de zwarte lijst van de firewall toe te voegen.
Deze configuraties zijn georganiseerd in zogenaamde jails . Een jail is in principe een set regels die van toepassing zijn op een specifieke service (zoals SSH, Apache of MySQL). Op deze manier kunt u een zeer strikt beleid hebben voor toegang op afstand en een meer permissief beleid voor de webserver, waardoor indringers automatisch worden geblokkeerd zonder dat u elke vijf minuten handmatig de logbestanden hoeft te controleren.

Installatie volgens uw Linux-distributie.
Afhankelijk van het systeem dat je gebruikt, verschilt de installatieopdracht enigszins, maar over het algemeen is het beschikbaar in bijna alle officiële repositories.
- Op Ubuntu en Debian: Het is heel simpel, je hoeft alleen maar te rennen.
sudo apt updategevolgd doorsudo apt install fail2ban. - Op Rocky Linux of AlmaLinux: Aangezien dit Enterprise-distributies zijn, moet u eerst de EPEL-repository inschakelen met
sudo dnf install epel-releaseen installeer vervolgens het pakket metsudo dnf install fail2ban fail2ban-firewalld. - In Alpine Linux: Gebruik de APK-manager met
sudo apk add fail2banEn aangezien het OpenRC gebruikt, moet je het inschakelen metsudo rc-update add fail2ban defaulten begin ermeesudo rc-service fail2ban start.

Hoofdconfiguratie: Het geheim van het .local-bestand
Een veelgemaakte fout is om het bestand direct te bewerken. jail.confDoe het niet! Dat bestand kan worden overschreven wanneer je het systeem bijwerkt. De gouden regel is om een kopie te maken met de naam jail.localAlle parameters die u aan dit tweede bestand toevoegt, hebben voorrang op het originele bestand en uw wijzigingen worden overschreven. veilig voor updates.
Om te beginnen kunt u het originele bestand klonen met sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local en open het vervolgens met je favoriete editor, zoals nano of vim. In het gedeelte [STANDAARD] Hier definieer je het algemene gedrag van het systeem:
- bantijd: De tijdsduur dat het kwaadwillige IP-adres geblokkeerd blijft. Dit kan in seconden of met 'm' voor minuten worden aangegeven (bijv. 10m).
- findtime: Het tijdsinterval waarin Fail2ban controleert op fouten. Als iemand 5 keer binnen een uur een foutmelding geeft, maar de controletijd 10 minuten is, wordt die persoon niet geblokkeerd.
- maxretry: Het aantal toegestane mislukte pogingen voordat het systeem het volgende aangeeft: Genoeg en blokkeer het IP-adres..
- negeer IP-adres: Essentieel om te voorkomen dat je jezelf blokkeert. Hier moet je je gegevens invoeren. openbaar IP-adres of uw VPN-bereik.

Het stap voor stap beschermen van specifieke diensten.
Zodra de algemene instellingen zijn geconfigureerd, is het tijd om de jails te activeren voor de services die voor u het belangrijkst zijn. Om een beveiliging te laten werken, moet u de volgende instellingen configureren: enabled = true in het betreffende gedeelte binnen jail.local.
SSH-toegang (het meest cruciale punt)
Poort 22 is het belangrijkste doelwit. Een robuuste configuratie zou het volgende definiëren: maxretry = 3 en een bantime = 3600 (één uur). Fail2ban leest het bestand. /var/log/auth.log (op Debian/Ubuntu) of / Var / log / secure (op CentOS/RHEL) om authenticatiefouten te detecteren en de toegang voor de aanvaller te blokkeren.
Webservers (Apache en Nginx)
Als u een website of webwinkel heeft, zullen bots proberen toegang te krijgen tot gevoelige routes zoals /wp-admin o /login.phpJe kunt aangepaste filters maken in /etc/fail2ban/filter.d/ om deze patronen te detecteren. Bijvoorbeeld om Bescherm WordPressFoutmeldingen met nummer 403 of mislukte pogingen worden gemonitord in wp-login.phpHet IP-adres wordt geblokkeerd als het de limieten overschrijdt die zijn ingesteld in de Apache- of Nginx-jail.
Databases en FTP
Voor MySQL kunt u het foutenlogboek controleren op de betreffende zin. Toegang geweigerd voor gebruikerIn het geval van FTP (zoals ProFTPD) is het van cruciaal belang ervoor te zorgen dat de logpath Zorg ervoor dat het pad naar uw logbestanden overeenkomt, want als Fail2ban het logbestand niet kan vinden, werkt de beveiliging simpelweg niet.
Geavanceerd beheer met fail2ban-client
Je hoeft niet altijd bestanden te bewerken en de service opnieuw op te starten om snel wijzigingen aan te brengen. De opdracht fail2ban-client Hiermee kunt u het systeem direct vanaf de console beheren.
Om te zien welke jails actief zijn en hoeveel IP-adressen geblokkeerd zijn, kunt u gebruikmaken van sudo fail2ban-client statusAls je dieper in een service wilt duiken, zoals SSH, voer dan het volgende commando uit: sudo fail2ban-client status sshdBovendien, indien dit per ongeluk gebeurt, Je hebt een collega geblokkeerd. Of je kunt het IP-adres zelf snel vrijgeven met het commando. sudo fail2ban-client set sshd unbanip IP_A_DESBLOQUEAR.
Mantenimiento en oplossen van problemen
Als je merkt dat Fail2ban niet blokkeert zoals het hoort, is het raadzaam om eerst het logbestand van de tool zelf te controleren. /var/log/fail2ban.log. Gebruik makend van tail -f Je kunt in realtime zien wie er wordt geblokkeerd en waarom.
Houd er rekening mee dat Fail2ban de vergrendelingsstatus opslaat in een SQLite-database. /var/lib/fail2ban/fail2ban.sqlite3Als je de server opnieuw opstart, worden de geblokkeerde IP-adressen dus weer gedeblokkeerd. blijft geblokkeerd totdat uw sanctieperiode afloopt. Vergeet niet om wijzigingen in configuratiebestanden toe te passen met sudo systemctl restart fail2ban.
Door deze tool te implementeren, verandert uw server van een gemakkelijk doelwit in een geautomatiseerd fort. De CPU-belasting wordt verminderd doordat kwaadaardig verkeer op netwerkniveau wordt geblokkeerd, waardoor u met een gerust hart kunt slapen in de wetenschap dat bots geen brute-force-aanvallen kunnen uitvoeren. Door het gebruik van .local-bestanden, het beheer van specifieke jails en continue logmonitoring te combineren, creëert u een gelaagd beveiligingssysteem dat essentieel is voor elke Linux-systeembeheerder.