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 Fail2ban på Rocky 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.