Slik bruker du Fail2ban for å sikre Linux-serveren din


Å forbedre serversikkerheten bør være en av toppprioriteringene dine når det gjelder å administrere en linux-server. Ved å gå gjennom serverloggene dine kan du ofte finne forskjellige forsøk på brute force-pålogging, nettflom, utnyttelsessøking og mange andre.

Med en programvare for beskyttelse mot inntrenging som fail2ban kan du undersøke serverloggene dine og legge til ekstra iptables-regler for å blokkere problematiske IP-adresser.

Denne opplæringen vil vise deg hvordan du installerer fail2ban og konfigurerer grunnleggende konfigurasjon for å beskytte Linux-systemet ditt mot brute-force-angrep.

Fail2ban er skrevet i python og det eneste kravet er å ha python installert:

  • Fail2ban branch 0.9.x krever Python >=2.6 eller Python >=3.2
  • Fail2ban branch 0.8.x krever Python >=2.4
  • Roottilgang til systemet ditt
  • Valgfritt, iptables eller showewall og sendmail

Hvordan installere Fail2Ban i Linux-systemer

Installasjon av fail2ban er relativt enkelt:

Først, oppdater pakkene dine, aktiver Epel-depotet og installer fail2ban som vist.

# yum update
# yum install epel-release
# yum install fail2ban

Først oppdaterer du pakkene og installer fail2ban som vist.

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

Hvis du ønsker å aktivere e-poststøtte (for e-postvarsler), kan du eventuelt installere sendmail.

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

For å aktivere fail2ban og sendmail, bruk følgende kommandoer:

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

Hvordan konfigurere Fail2ban i Linux-systemer

Som standard bruker fail2ban .conf-filene som ligger i /etc/fail2ban/ som leses først. Disse kan imidlertid overstyres av .local-filer som ligger i samme katalog.

Dermed trenger ikke .local-filen inkludere alle innstillingene fra .conf-filen, men bare de du ønsker å overstyre. Endringer bør gjøres i .local-filene, ikke i .conf. Dette vil forhindre overskriving av endringer ved oppgradering av fail2ban-pakken.

For formålet med denne opplæringen vil vi kopiere den eksisterende fail2ban.conf-filen til fail2ban.local.

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

Nå kan du gjøre endringene i .local-filen ved å bruke ditt favoritttekstredigeringsprogram. Verdiene du kan redigere er:

  • loggnivå – dette er detaljnivået som skal logges. Mulige alternativer er:
    • KRITISK
    • FEIL
    • ADVARSEL
    • MERKNAD
    • INFO
    • DEBUG

    • STDOUT – skriv ut alle data
    • STDERR – skriv ut eventuelle feil
    • SYSLOG – meldingsbasert logging
    • Fil – utdata til en fil

    En av de viktigste filene i fail2ban er jail.conf som definerer fengslene dine. Det er her du definerer tjenestene som fail2ban skal være aktivert for.

    Som vi nevnte tidligere kan .conf-filer endres under oppgraderinger, derfor bør du lage en jail.local-fil der du kan bruke endringene dine.

    En annen måte å gjøre dette på er å kopiere .conf-filen med:

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

    I tilfelle du bruker CentOS eller Fedora, må du endre backend i jail.local fra \auto til \systemd.

    Hvis du bruker Ubuntu/Debian, er det ikke nødvendig å gjøre denne modifikasjonen, selv om de også bruker systemd.

    Fengselsfilen vil aktivere SSH som standard for Debian og Ubuntu, men ikke på CentOS. Hvis du ønsker å aktivere det, endrer du bare følgende linje i /etc/fail2ban/jail.local:

    [sshd]
    enabled = true
    

    Du kan konfigurere omstendighetene etter at en IP-adresse blokkeres. Til det formål bruker fail2ban bantime, findtime og maxretry.

    • bantime – dette er antall sekunder som en IP-adresse forblir utestengt (standard 10 min).
    • findtime – hvor lang tid det går mellom påloggingsforsøk før verten blir utestengt. (standard 10 min). Med andre ord, hvis fail2ban er satt til å blokkere en IP-adresse etter 3 mislykkede påloggingsforsøk, må disse 3 forsøkene gjøres innen finnetidsperioden (10 minutter).
    • maxretry – antall forsøk som må gjøres før et forbud påføres. (standard 3).

    Selvfølgelig vil du hviteliste visse IP-adresser. For å konfigurere slike IP-adresser, åpne /etc/fail2ban/jail.local med din favoritt tekstredigerer og fjern kommentaren på følgende linje:

    ignoreip = 127.0.0.1/8  ::1
    

    Deretter kan du legge inn IP-adressene som du vil skal ignoreres. IP-adresser bør skilles fra mellomrom eller komma.

    Hvis du ønsker å motta e-postvarsler etter hendelsen, må du konfigurere følgende innstillinger i /etc/fail2ban/jail.local:

    • destemail – e-postadresse, hvor du vil motta varselet.
    • Avsendernavn – avsenderen du vil se når du mottar meldingen.
    • avsender – e-postadresse som fail2ban vil sende e-postene fra.

    Standard mta (postoverføringsagent) er satt til sendmail.

    For å motta e-postvarsler, må du også endre \handling-innstillingen fra:

    Action = %(action_)s
    

    Til en av disse:

    action = %(action_mw)s
    action = %(action_mwl)s
    

    • %(action_mw)s – vil utestenge verten og sende en e-post med en whois-rapport.
    • %(action_mwl)s – vil utestenge verten, gi whois-informasjon og all relevant informasjon fra loggfilen.

    Ytterligere Fail2ban-fengselskonfigurasjon

    Så langt har vi sett på de grunnleggende konfigurasjonsalternativene. Hvis du ønsker å konfigurere et fengsel, må du aktivere det i filen jail.local. Syntaksen er ganske enkel:

    [jail_to_enable]
    . . .
    enabled = true
    

    Hvor du bør erstatte jail_to_enable med det faktiske fengselet, for eksempel \sshd. I jail.local-filen vil følgende verdier være forhåndsdefinert for ssh-tjenesten:

    [sshd]
    
    port = ssh
    logpath = %(sshd_log)s
    

    Du kan aktivere filter som vil hjelpe med å identifisere om en linje i loggen er en mislykket. Filterverdien er faktisk en referanse til en fil med tjenestenavnet etterfulgt av .conf. For eksempel: /etc/fail2ban/filter.d/sshd.conf.

    Syntaksen er:

    filter = service
    

    For eksempel:

    filter = sshd
    

    Du kan se gjennom de eksisterende filtrene i følgende katalog: /etc/fail2ban/filter.d/.

    Fail2ban kommer med en klient som kan brukes til å gjennomgå og endre gjeldende konfigurasjon. Siden den gir mange alternativer, kan du gå gjennom manualen med:

    # man fail2ban-client 
    

    Her vil du se noen av de grunnleggende kommandoene du kan bruke. For å se på gjeldende status for fail2ban eller for spesifikt fengsel, kan du bruke:

    # fail2ban-client status
    

    Resultatet vil se slik ut:

    For individuelt fengsel kan du kjøre:

    # fail2ban-client status sshd
    

    I skjermbildet nedenfor vil du se at jeg med vilje har mislyktes med flere pålogginger, så fail2ban kan blokkere IP-adressen som jeg prøvde å koble til:

    Fail2ban er et utmerket, godt dokumentert inntrengingsforebyggende system, som gir ekstra sikkerhet til ditt Linux-system. Det krever litt tid å venne seg til oppsettet og syntaksen, men når du først har gjort deg kjent med det, vil du gjerne endre og utvide reglene.