Hvordan installere Fail2ban på Rocky Linux og AlmaLinux


Skrevet i Python, Fail2ban er et gratis og åpen kildekode Intrusion Prevention System (IPS) som beskytter serveren mot brute-force-angrep.

Etter et spesifisert antall feil passordforsøk blir klientens IP-adresse utestengt fra å få tilgang til systemet i en spesifisert periode eller inntil systemadministratoren opphever blokkeringen. På denne måten er systemet beskyttet mot gjentatte brute-force-angrep fra en enkelt vert.

Fail2ban er svært konfigurerbart og kan settes opp for å sikre en myriade av tjenester som SSH, vsftpd, Apache og Webmin.

I denne veiledningen fokuserer vi på hvordan du kan installere og konfigurere Fail2banRocky Linux og AlmaLinux.

Trinn 1: Sørg for at brannmuren kjører

Som standard kommer Rocky med brannmur kjørende. Men hvis dette ikke er tilfelle på systemet ditt, start Brannmur ved å utføre:

sudo systemctl start firewalld

Aktiver deretter den til å starte ved oppstartstid:

sudo systemctl enable firewalld

Bekreft deretter statusen til Firewalld

sudo systemctl status firewalld

I tillegg kan du bekrefte alle Brannmur-reglene som for øyeblikket håndheves ved å bruke kommandoen:

sudo firewall-cmd --list-all

Trinn 2: Installer EPEL i Rocky Linux

Som et krav for installasjon av fail2ban og andre nødvendige pakker, må du installere EPEL-depotet som gir ekstra høykvalitetspakker for RHEL-baserte distribusjoner.

sudo dnf install epel-release

Trinn 3: Installer Fail2ban i Rocky Linux

Med EPEL installert, fortsett og installer fail2ban og fail2ban-firewalld-pakken.

sudo dnf install fail2ban fail2ban-firewalld

Dette installerer fail2ban-serveren og brannmurkomponenten sammen med andre avhengigheter.

Når installasjonen av fail2ban er fullført, start fail2ban-tjenesten.

sudo systemctl start fail2ban

Og la den starte ved oppstartstid.

sudo systemctl enable fail2ban

Du kan bekrefte statusen til fail2ban-tjenesten ved å kjøre kommandoen:

sudo systemctl status fail2ban

Utgangen er en bekreftelse på at Fail2ban kjører som vi forventer.

Trinn 4: Konfigurere Fail2ban i Rocky Linux

Når vi går videre, må vi konfigurere fail2ban for at det skal fungere etter hensikten. Ideelt sett ville vi redigere hovedkonfigurasjonsfilen – /etc/fail2ban/jail.conf. Dette frarådes imidlertid. Som en løsning vil innholdet i jail.conf-konfigurasjonsfilen kopieres til jail.local-filen.

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

Nå åpner du jail.local-filen ved å bruke ditt foretrukne redigeringsprogram.

sudo vim /etc/fail2ban/jail.local

Under [STANDARD]-delen, sørg for at du har følgende innstillinger slik de vises.

bantime = 1h
findtime = 1h
maxretry = 5

La oss definere attributtene:

  • bantime-direktivet angir hvor lang tid en klient vil bli utestengt etter mislykkede autentiseringsforsøk.
  • findtime-direktivet er varigheten eller perioden som fail2ban vil vurdere når man vurderer gjentatte feil passordforsøk.
  • Parameteren maxretry er det maksimale antallet feil passordforsøk før den eksterne klienten blir blokkert fra å få tilgang til serveren. Her vil klienten bli låst ute etter 5 autentiseringsfeil.

Som standard fungerer fail2ban med iptables. Dette har imidlertid blitt avskrevet til fordel for brannmuren. Vi må konfigurere fail2ban til å fungere sammen med brannmur i stedet for iptables.

Så kjør med kommandoen:

sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local

For å bruke endringene, start fail2ban på nytt:

sudo systemctl restart fail2ban

Trinn 5: Sikring av SSH-tjeneste med Fail2ban

Som standard blokkerer ikke fail2ban noen ekstern vert før du aktiverer fengselskonfigurasjon for en tjeneste du ønsker å sikre. Jail-konfigurasjonen er spesifisert i /etc/fail2ban/jail.d-banen og vil overstyre konfigurasjonen spesifisert i jail.local-filen.

I dette eksemplet vil vi lage en konfigurasjonsfil for fengsel for å beskytte SSH-tjenesten. Opprett derfor SSH-fengselsfilen.

sudo vim /etc/fail2ban/jail.d/sshd.local

Deretter limer du inn følgende linjer:

[sshd]
enabled = true

Override the default global configuration
for specific jail sshd
bantime = 1d
maxretry = 3

I konfigurasjonen ovenfor vil en ekstern vert utestenges fra å få tilgang til systemet i 1 dag etter 3 mislykkede SSH-påloggingsforsøk. Lagre endringene og start fail2ban-tjenesten på nytt.

sudo systemctl restart fail2ban

Deretter bekrefter du fengselskonfigurasjonsstatusen ved å bruke fail2ban-client kommandolinjeverktøy.

sudo fail2ban-client status

Fra utgangen kan vi se at vi har 1 fengsel konfigurert for en tjeneste kalt 'sshd'.

I tillegg kan du bekrefte maxretry-verdien til sshd-fengselet ved å bruke get-alternativet.

sudo fail2ban-client get sshd maxretry

3

Verdien skrevet ut 3 skal samsvare med det du spesifiserte i sshd.local-filen.

Trinn 6: Testing av Fail2ban-konfigurasjon

Etter å ha satt opp fail2ban og opprettet en fengselskonfigurasjonsfil for SSH-tjenesten, skal vi utføre en testkjøring og simulere 3 mislykkede pålogginger ved å spesifisere et feil passord for hver passordforespørsel.

Så gå over til et eksternt Linux-system og prøv å logge på med feil passord. Etter 3 mislykkede forsøk vil tilkoblingen bli avbrutt og ethvert påfølgende forsøk på å koble til på nytt vil bli blokkert inntil utestengelsens varighet utløper.

For å få innsikt om klientsystemene som er blokkert, sjekk fengselsstatusen.

sudo fail2ban-client status sshd

For å fjerne eller fjerne klienten fra fengselet, kjør kommandoen:

sudo fail2ban-client unban 192.168.2.102

Igjen, sjekk fengselsstatusen for å sikre at klienten ikke er inkludert i den forbudte IP-listen.

sudo fail2ban-client status sshd

Som vi har sett, er Fail2ban et veldig nyttig verktøy for å avverge inntrengere som prøver å bryte Linux-systemet ditt. Det fungerer sammen med Firewalld for å utestenge klientsystemer for en spesifisert varighet etter et spesifikt antall mislykkede påloggingsforsøk. Ved å gjøre det gir det et ekstra lag med beskyttelse for Linux-serveren din.