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.