Sådan sikrer du din Linux-server med fail2ban

Med fail2ban blokerer din Linux-computer automatisk IP-adresser, der har for mange forbindelsesfejl. Det er selvregulerende sikkerhed! Vi viser dig, hvordan du bruger det.

Sikkerhed Sikkerhed Sikkerhed

hertuginde af Windsor, Wallis Simpson, sagde engang berømt: “Du kan aldrig blive for rig eller for tynd.” Vi har opdateret dette til vores moderne, indbyrdes forbundne verden: Du kan aldrig være for forsigtig eller for sikker.

Hvis din computer accepterer indgående forbindelsesanmodninger, som f.eks Sikker Shell (SSH) forbindelser, eller fungerer som en web- eller e-mail-server, skal du beskytte den mod brute-force-angreb og adgangskode-gættere.

For at gøre det skal du overvåge forbindelsesanmodninger, der ikke kommer ind på en konto. Hvis de gentagne gange undlader at autentificere inden for en kort periode, bør de have forbud mod at gøre yderligere forsøg.

Den eneste måde, dette kan opnås praktisk talt på, er at automatisere hele processen. Med en lille smule simpel konfiguration vil fail2ban håndtere overvågning, forbud og ophævelse af forbud for dig.

fail2ban integreres med Linux firewall iptables. Det håndhæver forbuddet mod de mistænkelige IP-adresser ved at tilføje regler til firewallen. For at holde denne forklaring overskuelig bruger vi iptables med et tomt regelsæt.

Selvfølgelig, hvis du er bekymret for sikkerheden, har du sandsynligvis en firewall konfigureret med et veludfyldt regelsæt. Kun fail2ban tilføjer og fjerner sine egne regler– dine almindelige firewall-funktioner forbliver uberørte.

Vi kan se vores tomme regelsæt ved hjælp af denne kommando:

sudo iptables -L

Installerer fail2ban

Installation af fail2ban er enkelt på alle de distributioner, vi brugte til at undersøge denne artikel. På Ubuntu 20.04 er kommandoen som følger:

sudo apt-get install fail2ban

På Fedora 32 skal du skrive:

sudo dnf install fail2ban

På Manjaro 20.0.1 brugte vi pacman:

sudo pacman -Sy fail2ban

Konfigurerer fail2ban

fail2ban installationen indeholder en standard konfigurationsfil kaldet jail.conf. Denne fil overskrives, når fail2ban opgraderes, så vi mister vores ændringer, hvis vi foretager tilpasninger til denne fil.

  Sådan installeres brugerdefinerede temaer og ikoner i Linux

I stedet kopierer vi jail.conf-filen til en kaldet jail.local. Ved at placere vores konfigurationsændringer i jail.local, vil de fortsætte på tværs af opgraderinger. Begge filer læses automatisk af fail2ban.

Sådan kopierer du filen:

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

Åbn nu filen i din foretrukne editor. Vi vil bruge gedit:

sudo gedit /etc/fail2ban/jail.local

Vi leder efter to sektioner i filen: [DEFAULT] og [sshd]. Pas dog på at finde de faktiske sektioner. Disse etiketter vises også øverst i et afsnit, der beskriver dem, men det er ikke det, vi ønsker.

Du finder [DEFAULT] afsnit et sted omkring linje 40. Det er et langt afsnit med en masse kommentarer og forklaringer.

Rul ned til omkring linje 90, og du vil finde følgende fire indstillinger, du skal vide om:

ignoreip: En hvidliste over IP-adresser, der aldrig vil blive forbudt. De har et permanent Get Out of Jail Free-kort. Det localhost IP-adresse (127.0.0.1) er som standard på listen sammen med dets IPv6-ækvivalent (::1). Hvis der er andre IP-adresser, du ved aldrig bør forbydes, skal du tilføje dem til denne liste og efterlade et mellemrum mellem hver enkelt.
bantime: Den varighed, hvor en IP-adresse er forbudt (‘m’et’ står for minutter). Hvis du indtaster en værdi uden “m” eller “h” (i timer), vil den blive behandlet som sekunder. En værdi på -1 vil forbyde en IP-adresse permanent. Vær meget forsigtig med ikke at låse dig selv permanent ude.
findtime: Den tid, inden for hvilken for mange mislykkede forbindelsesforsøg vil resultere i, at en IP-adresse bliver forbudt.
maxretry: Værdien for “for mange mislykkede forsøg.”

Hvis en forbindelse fra den samme IP-adresse laver maxretry mislykkede forbindelsesforsøg inden for findtime-perioden, bliver de forbudt i løbet af bantiden. De eneste undtagelser er IP-adresserne i ignoreip-listen.

fail2ban sætter IP-adresserne i fængsel i en bestemt periode. fail2ban understøtter mange forskellige jails, og hver af dem repræsenterer hold, som indstillingerne gælder for en enkelt forbindelsestype. Dette giver dig mulighed for at have forskellige indstillinger for forskellige forbindelsestyper. Eller du kan have fail2ban til kun at overvåge et udvalgt sæt forbindelsestyper.

  Sådan vælger du den rigtige Linux-distribution

Du har måske gættet det ud fra [DEFAULT] sektionsnavn, men de indstillinger, vi har set på, er standardindstillingerne. Lad os nu se på indstillingerne for SSH-fængslet.

Konfiguration af et fængsel

Jails lader dig flytte forbindelsestyper ind og ud af fail2bans overvågning. Hvis standardindstillingerne ikke stemmer overens med dem, du ønsker anvendt i fængslet, kan du indstille specifikke værdier for bantime, findtime og maxretry.

Rul ned til omkring linje 280, og du vil se [sshd] afsnit.

Det er her du kan indstille værdier for SSH-forbindelsesfængslet. For at inkludere dette fængsel i overvågningen og forbuddet, skal vi skrive følgende linje:

enabled = true

Vi skriver også denne linje:

maxretry = 3

Standardindstillingen var fem, men vi vil være mere forsigtige med SSH-forbindelser. Vi sænkede det til tre, og gemte og lukkede derefter filen.

Vi tilføjede dette fængsel til fail2bans overvågning og tilsidesatte en af ​​standardindstillingerne. Et fængsel kan bruge en kombination af standard- og fængselsspecifikke indstillinger.

Aktiverer fail2ban

Indtil videre har vi installeret fail2ban og konfigureret det. Nu skal vi aktivere den til at køre som en automatisk start-tjeneste. Derefter skal vi teste det for at sikre, at det fungerer som forventet.

For at aktivere fail2ban som en tjeneste bruger vi systemctl kommando:

sudo systemctl enable fail2ban

Vi bruger det også til at starte tjenesten:

sudo systemctl start fail2ban

Vi kan også tjekke status for tjenesten ved hjælp af systemctl:

sudo systemctl status fail2ban.service

Alt ser godt ud – vi har fået grønt lys, så alt er godt.

Lad os se om fail2ban stemmer overens:

sudo fail2ban-client status

Dette afspejler, hvad vi har sat op. Vi har aktiveret et enkelt fængsel, navngivet [sshd]. Hvis vi inkluderer navnet på fængslet med vores tidligere kommando, kan vi tage et dybere kig på det:

sudo fail2ban-client status sshd

Dette viser antallet af fejl og forbudte IP-adresser. Selvfølgelig er alle statistikker nul i øjeblikket.

  Sådan installeres SuperTuxKart på Linux

Tester vores fængsel

På en anden computer vil vi lave en SSH-forbindelsesanmodning til vores testmaskine og bevidst indtaste adgangskoden forkert. Du får tre forsøg på at få adgangskoden rigtigt ved hvert forbindelsesforsøg.

Maxretry-værdien udløses efter tre mislykkede forbindelsesforsøg, ikke tre mislykkede adgangskodeforsøg. Så vi skal indtaste en forkert adgangskode tre gange for at mislykkes i forbindelsesforsøg et.

Vi vil derefter gøre endnu et forsøg på at oprette forbindelse og indtaste adgangskoden forkert yderligere tre gange. Det første forkerte adgangskodeforsøg i den tredje forbindelsesanmodning skulle udløse fail2ban.

Efter den første forkerte adgangskode på den tredje forbindelsesanmodning, får vi ikke et svar fra fjernmaskinen. Vi får ingen forklaring; vi får bare den kolde skulder.

Du skal trykke på Ctrl+C for at vende tilbage til kommandoprompten. Hvis vi prøver igen, får vi et andet svar:

ssh [email protected]

Tidligere var fejlmeddelelsen “Tilladelse nægtet.” Denne gang er forbindelsen direkte afvist. Vi er persona non grata. Vi er blevet forbudt.

Lad os se på detaljerne i [sshd] fængsel igen:

sudo fail2ban-client status sshd

Der var tre fejl, og en IP-adresse (192.168.4.25) blev forbudt.

Som vi nævnte tidligere, håndhæver fail2ban forbud ved at tilføje regler til firewall-regelsættet. Lad os se på regelsættet igen (det var tomt før):

sudo iptables -L

En regel er blevet tilføjet til INPUT-politikken, der sender SSH-trafik til f2b-sshd-kæden. Reglen i f2b-sshd-kæden afviser SSH-forbindelser fra 192.168.4.25. Vi har ikke ændret standardindstillingen for bantime, så om 10 minutter vil denne IP-adresse blive ophævet og kan lave nye forbindelsesanmodninger.

Hvis du indstiller en længere udelukkelsesvarighed (som flere timer), men ønsker at tillade en IP-adresse at lave en ny forbindelsesanmodning hurtigere, kan du prøveløser den tidligt.

Vi skriver følgende for at gøre dette:

sudo fail2ban-client set sshd unbanip 192.168.5.25

Hvis vi på vores fjerncomputer foretager en anden SSH-forbindelsesanmodning og indtaster den korrekte adgangskode, får vi lov til at oprette forbindelse:

ssh [email protected]

Enkelt og effektivt

Enklere er normalt bedre, og fail2ban er en elegant løsning på et vanskeligt problem. Det kræver meget lidt konfiguration og pålægger næsten ingen driftsomkostninger – for dig eller din computer.