Hur Säker Din Linux-Server med fail2ban

0
55
Fatmawati Achmad Zaenuri/Shutterstock

Med fail2ban, din Linux-dator som automatiskt blockerar IP-adresser som har för många samband fel. Det är självreglerande säkerhet! Vi kommer att visa hur du använder det.

Säkerhet Säkerhet Säkerhet

Hertiginnan av Windsor, Wallis Simpson, en gång berömda sade, “Du kan aldrig vara för rik eller för smal.” Vi har uppdaterat detta i våra moderna, sammankopplade världen: Du kan aldrig vara för försiktig eller alltför säker.

Om din dator accepterar inkommande anslutningar, såsom Secure Shell (SSH) anslutningar, eller fungerar som en webb-eller e-postserver, du behöver för att skydda det från brute force-attacker och lösenord-guessers.

För att göra detta, måste du övervaka anslutning begär att misslyckas med att få till ett konto. Om de upprepade gånger misslyckas med att verifiera inom en kort period, de borde vara förbjudna från att göra ytterligare försök.

Det enda sättet detta kan uppnås i praktiken är att automatisera hela processen. Med lite enkel konfiguration, fail2ban kommer att hantera övervakning, förbud, och unbanning för dig.

fail2ban integrerar med Linux iptables-brandvägg. Det kräver förbud för den misstänkte IP-adresser genom att lägga till regler i brandväggen. För att hålla denna förklaring stilren, vi använder iptables med en tom regeluppsättning.

Naturligtvis, om du är orolig för säkerheten, du förmodligen har en brandvägg konfigureras med en väl befolkade regeluppsättning. fail2ban bara lägger till och tar bort sina egna regler—din vanliga funktioner brandvägg kommer att förbli orörda.

Vi kan se våra tomma regeluppsättning med hjälp av detta kommando:

sudo iptables -L

RELATERAT: Den nybörjarguide till iptables, Linux Brandvägg

Installera fail2ban

Installera fail2ban är enkel på alla distributioner har vi använt för att undersöka denna artikel. På Ubuntu 20.04, kommandot är följande:

sudo apt-get install fail2ban

På Fedora 32, typ:

sudo dnf installera fail2ban

Om Manjaro 20.0.1, vi använde pacman:

sudo pacman -Sy fail2ban

Konfigurera fail2ban

Den fail2ban installationen innehåller en standard konfiguration fil som heter fängelse.conf. Den här filen skrivs över när fail2ban uppgraderas, så att vi ska förlora vår förändringar om vi gör anpassningar till den här filen.

Istället, vi ska kopiera fängelse.conf-filen till en som heter fängelse.lokala. Genom att sätta vår konfiguration förändringar i fängelse.lokala, de kommer att kvarstå över uppgraderingar. Båda filerna automatiskt läsa av fail2ban.

Detta är hur du kopiera filen:

sudo cp /etc/fail2ban/i fängelse.conf /etc/fail2ban/i fängelse.lokala

Nu öppnar filen i din favorit-editor. Vi kommer att använda gedit:

sudo gedit /etc/fail2ban/i fängelse.lokala

Vi ska leta efter två avsnitt i filen: [STANDARD] och [sshd]. Ta hand för att hitta den verkliga avsnitt, dock. Dessa etiketter också visas högst upp i ett avsnitt som beskriver dem, men det är inte vad vi vill ha.

Du hittar [STANDARD] avsnitt någonstans runt linje 40. Det är ett långt avsnitt med en hel del kommentarer och förklaringar.

Bläddra ner till runt linje 90, och du kommer att hitta följande fyra inställningar du behöver veta om:

  • ignoreip: En vitlista av IP-adresser som aldrig kommer att förbjudas. De har en ständig Komma Ut ur Fängelset Gratis kort. Localhost IP-adressen (127.0.0.1) finns i listan som standard, tillsammans med sin IPv6 motsvarande (::1). Om det finns andra IP-adresser som du vet ska aldrig förbjudas, lägg till dem till listan och lämna ett mellanrum mellan varje.
  • bantime: Den tid som en IP-adress är förbjudna (“m” står för minuter). Om du skriver ett värde utan ett “m” eller “h” (i timmar) kommer det att behandlas som sekunder. Ett värde på -1 permanent förbjuda en IP-adress. Vara mycket noga med att inte permanent låsa dig själv.
  • findtime: Den tid inom vilken för många misslyckade anslutningsförsök kommer att resultera i en IP-adress att förbjudas.
  • maxretry: värdet för “alltför många misslyckade försök.”

Om du gör en anslutning från samma IP-adress gör maxretry misslyckade anslutningsförsök inom findtime period, de är förbjudna för den tid bantime. De enda undantagen är de IP-adresser i ignoreip listan.

fail2ban sätter IP-adresser i fängelse under en fastställd period av tid. fail2ban stöder många olika fängelser, och var och en representerar håller inställningar gälla för en och samma typ av anslutning. Detta gör att du kan ha olika inställningar för olika anslutningstyper. Eller så kan du ha fail2ban bara övervaka en vald typer av anslutning.

Du kanske har gissat det från [STANDARD] avsnitt namn, men de inställningar vi har tittat på är standard. Nu, låt oss titta på inställningarna för SSH fängelse.

RELATERAT: Hur man Redigerar Text Filer Grafiskt på Linux Med gedit

Konfigurera ett Fängelse

Fängelser låter dig flytta anslutningstyper i och ut ur fail2ban övervakning. Om standardinställningarna inte matcha dem som du vill ska användas till fängelse, du kan ställa in specifika värden för bantime, findtime, och maxretry.

Bläddra ner till ca linjen 280, och du kommer att se [sshd] avsnitt.

Det är där du kan ställa in värden för SSH-anslutning fängelse. Att inkludera denna fängelse i övervakning och förbud, måste vi skriva följande rad:

aktiverad = true

Vi också skriva denna rad:

maxretry = 3

Standardinställningen var fem, men vi vill vara mer försiktig med SSH-anslutningar. Vi tappade det till tre, och sedan sparat och avslutat ärendet.

Vi har lagt till denna fängelse för att fail2ban övervakning, och överskred en av de förvalda inställningarna. I ett fängelse kan använda en kombination av standard och fängelse-specifika inställningar.

Aktivera fail2ban

Hittills har vi installerat fail2ban och konfigurerat det. Nu har vi för att göra det möjligt att köra som ett auto-start-service. Då måste vi testa det för att se till att det fungerar som förväntat.

För att aktivera fail2ban as a service använder vi systemctl kommando:

sudo systemctl aktivera fail2ban

Vi använder det också för att starta tjänsten:

sudo systemctl börja fail2ban

Vi kan kontrollera status i tjänsten med systemctl också:

sudo systemctl status fail2ban.service

Allt ser bra ut—vi har fått grönt ljus, så allt är väl.

Låt oss se om fail2ban håller med:

sudo fail2ban-klient status

Detta återspeglar vad vi ställa upp. Vi har aktiverat ett enda fängelse, namn [sshd]. Om vi inkluderar namn på fängelset med vår föregående kommando, kan vi ta en djupare titt på det:

sudo fail2ban-klient status sshd

Här listar antalet misslyckanden och förbjudna IP-adresser. Naturligtvis, all statistik är noll just nu.

Testa Vår Fängelse

På en annan dator, vi ska göra en SSH-anslutning begäran till vår testmaskin och målmedvetet mistype lösenord. Du får tre försök att få lösenordet rätt på varje anslutningsförsök.

Den maxretry värde kommer att utlösa efter tre misslyckade anslutningsförsök, inte tre misslyckade försök att ange lösenordet. Så har vi skriver fel lösenord tre gånger för att misslyckas anslutningsförsöket en.

Vi ska sedan göra en annan anslutning för försök och skriv in det lösenord felaktigt ytterligare tre gånger. Den första felaktiga lösenord försök i den tredje anslutningen begäran bör utlösa fail2ban.

Efter den första felaktigt lösenord på tredje anslutning begäran, att vi inte får ett svar från fjärrmaskinen. Att vi inte får någon som helst förklaring; vi får bara kalla handen.

Du måste trycka på Ctrl+C för att återgå till kommandotolken. Om vi försöker en gång till, vi kommer att få ett annorlunda svar:

ssh dave@ubuntu20-04.local

Tidigare felmeddelandet “åtkomst nekad.” Den här gången är sambandet direkt vägrade. Vi är persona non grata. Vi har varit förbjudna.

Låt oss titta på detaljerna i [sshd] fängelse igen:

sudo fail2ban-klient status sshd

Det var tre misslyckanden, och en IP-adress (192.168.4.25) förbjöds.

Som vi nämnde tidigare, fail2ban upprätthåller förbud genom att lägga till regler i brandväggen regeluppsättning. Låt oss ta en titt på reglerna (det var tom innan):

sudo iptables -L

En artikel har lagts till INGÅNGEN politik, skicka SSH-trafik till f2b-sshd-kedjan. Regeln i f2b-sshd kedja avvisar SSH-anslutningar från 192.168.4.25. Vi ville inte ändra standardinställningen för bantime, så i 10 minuter, att IP-adressen kommer att vara aktiverat och kan göra nya anslutningsförsök.

Om du ställer in en längre ban varaktighet (som flera timmar), men vill att en IP-adress för att göra en annan anslutning begäran förr, du kan parole det tidigt.

Vi skriver följande för att göra detta:

sudo fail2ban-client set sshd unbanip 192.168.5.25

På vår fjärrdator, om vi gör en annan SSH-anslutning begäran och skriv rätt lösenord, kommer vi att tillåtas att ansluta:

ssh dave@ubuntu20-04.local

Enkel och Effektiv

Enklare är oftast bättre, och fail2ban är en elegant lösning på ett knepigt problem. Det krävs mycket lite för konfiguration och innebär knappast någon operativa overhead—till dig eller till din dator.

LÄS NÄSTA

  • “Hur Säker Din Linux-Server med fail2ban
  • “Kan Din iPhone Bli Hackad?
  • “Hur Överför Din Facebook Foton och Video på Google Bilder
  • “Hur man Skapar en Egen Zoom Bakgrund
  • “Hur man Söker inom Sms på iPhone eller iPad