Hvordan installere Fail2Ban for å beskytte SSH på CentOS/RHEL 8


Fail2ban er et gratis, åpen kildekode og mye brukt verktøy for å forhindre inntrenging som skanner loggfiler for IP-adresser som viser ondsinnede tegn som for mange passordfeil og mye mer, og det forbyr dem (oppdaterer brannmurregler for å avvise IP-adressene) . Som standard leveres den med filtre for ulike tjenester, inkludert sshd.

I denne artikkelen vil vi forklare hvordan du installerer og konfigurerer fail2ban for å beskytte SSH og forbedre SSH-serversikkerheten mot brute force-angrep på CentOS/RHEL 8.

Installerer Fail2ban på CentOS/RHEL 8

Fail2ban-pakken er ikke i de offisielle depotene, men den er tilgjengelig i EPEL-depotet. Etter å ha logget på systemet, får du tilgang til et kommandolinjegrensesnitt, og aktiver deretter EPEL-depotet på systemet ditt som vist.

# dnf install epel-release
OR
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Etterpå, installer Fail2ban-pakken ved å kjøre følgende kommando.

# dnf install fail2ban

Konfigurerer Fail2ban for å beskytte SSH

Fail2ban-konfigurasjonsfilene er plassert i /etc/fail2ban/-katalogen og filtre lagres i /etc/fail2ban/filter.d/-katalogen (filterfilen for sshd er /etc/fail2ban/filter.d/sshd.conf) .

Den globale konfigurasjonsfilen for fail2ban-serveren er /etc/fail2ban/jail.conf, men det anbefales ikke å endre denne filen direkte, da den sannsynligvis vil bli overskrevet eller forbedret i tilfelle en pakkeoppgradering i fremtiden.

Som et alternativ anbefales det å opprette og legge til konfigurasjonene dine i en jail.local-fil eller separate .conf-filer under katalogen /etc/fail2ban/jail.d/. Merk at konfigurasjonsparametere satt i jail.local vil overstyre det som er definert i jail.conf.

For denne artikkelen vil vi lage en egen fil kalt jail.local i /etc/fail2ban/-katalogen som vist.

# vi /etc/fail2ban/jail.local

Når filen er åpen, kopierer og limer du inn følgende konfigurasjon i den. [DEFAULT]-delen inneholder globale alternativer og [sshd] inneholder parametere for sshd-fengselet.

[DEFAULT] 
ignoreip = 192.168.56.2/24
bantime  = 21600
findtime  = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd

[sshd] 
enabled = true

La oss kort forklare alternativene i konfigurasjonen ovenfor:

  • ignoreip: spesifiserer listen over IP-adresser eller vertsnavn som ikke skal utestenges.
  • bantime: spesifisert antall sekunder som en vert er utestengt for (dvs. effektiv utestengelsesvarighet).
  • maxretry: spesifiserer antall feil før en vert blir utestengt.
  • findtime: fail2ban vil utestenge en vert hvis den har generert «maxretry» i løpet av de siste «findtime»-sekunder.
  • banaction: forbud mot handling.
  • backend: spesifiserer backend som brukes for å få loggfilendringer.

Konfigurasjonen ovenfor betyr derfor at hvis en IP har feilet 3 ganger i løpet av de siste 5 minuttene, sper den i 6 timer og ignorer IP-adressen 192.168.56.2.

Deretter starter og aktiverer du fail2ban-tjenesten for nå og kontrollerer om den er oppe og kjører ved å bruke følgende systemctl-kommando.

# systemctl start fail2ban
# systemctl enable fail2ban
# systemctl status fail2ban

Overvåking mislykket og utestengt IP-adresse ved hjelp av fail2ban-klient

Etter å ha konfigurert fail2ban for å sikre sshd, kan du overvåke mislykkede og utestengte IP-adresser ved å bruke fail2ban-klienten. For å se gjeldende status til fail2ban-serveren, kjør følgende kommando.

# fail2ban-client status

For å overvåke sshd-fengselet, kjør.

# fail2ban-client status sshd

For å fjerne en IP-adresse i fail2ban (i alle fengsler og databaser), kjør følgende kommando.

# fail2ban-client unban 192.168.56.1

For mer informasjon om fail2ban, les følgende man-sider.

# man jail.conf
# man fail2ban-client

Det oppsummerer denne guiden! Hvis du har spørsmål eller tanker du vil dele om dette emnet, ikke nøl med å kontakte oss via tilbakemeldingsskjemaet nedenfor.