Hur du skyddar din server med Fail2Ban i Linux
Serversäkerhet är en högsta prioritet för alla företag eller organisationer. Fail2Ban är ett av de viktigaste verktygen i en systemadministratörs verktygslåda. Den här guiden förklarar vad Fail2Ban är och hur du kan skydda din server med Fail2Ban i din Linux från attacker.
Vad är Fail2Ban?
Fail2Ban är ett verktyg för att förhindra intrång som övervakar loggfiler och blockerar IP-adresser som visar tecken på skadlig aktivitet. Den gör detta genom att skapa "filter" som matchar vissa mönster i loggfiler och utför åtgärder, som att blockera den felande IP-adressen.
Varför använda Fail2Ban i Linux?
Det finns flera anledningar till att använda Fail2Ban i Linux. kanske:
- Det sparar tid genom att automatiskt blockera skadliga IP-adresser.
- Hjälp till att säkra din server genom att minska chanserna för att en attack ska lyckas.
- Det ger dig sinnesfrid att veta att din server övervakas och skyddas.
Installera Fail2Ban i Linux
Som standard är Fail2Ban tillgängligt i Ubuntus arkiv. Installera det med apt.
sudo add-apt-repository universum sudo apt uppdatering && sudo apt installera fail2ban -y
Fail2Ban kommer att ställa in sin tjänst i bakgrunden, men systemd inaktiverar den som standard. Du kan starta och aktivera det med följande kommandon:
sudo systemctl start fail2ban sudo systemctl aktivera fail2ban
Kontrollera att Fail2Ban körs med följande kommando:
sudo systemctl status fail2ban
Du kommer att se en utdata som liknar bilden nedan.
Konfigurera Fail2Ban i Linux
Katalogen "/etc/fail2ban" innehåller konfigurationsfilerna för Fail2Ban. Som standard kommer Fail2Ban med en "jail.conf"-fil som innehåller inställningar som kommer att tillämpas på alla tjänster.
Det är dock en god praxis att skapa en lokal "jail.local"-fil och åsidosätta inställningarna i "jail.conf", eftersom alla ändringar du gör i "jail.conf" kommer att gå förlorade när programvaran uppdateras.
Du kan skapa din "jail.local"-fil med följande kommandon:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Öppna filen jail.local för att redigera den:
sudo nano /etc/fail2ban/jail.local
Bra att veta: lär Hur man aktiverar lösenordslösa SSH-inloggningar på LINUX.
Utforska filen jail.local
Du kommer att se en liknande utgång som visas nedan och du kan bli överväldigad av antalet tillgängliga alternativ. Men oroa dig inte, vi leder dig genom de viktigaste alternativen.
Du kommer att se en ikon "#" i början av raden, vilket indikerar att det är en kommentar. Fail2Ban använder dessa för att förklara vad en viss inställning gör. Du kan aktivera vissa inställningar här genom att ta bort den här ikonen.
Avsnittet innehåller "[STANDARD]" om alternativ som gäller alla fängelser. Detta är den allmänna konfigurationen av Fail2Ban. Följande skärmdump visar ett exempel.
Det finns även andra avsnitt som börjar med tjänstens namn. Detta fängelse gäller en specifik tjänst ovanpå världens fängelser.
Det finns till exempel en avdelning för ett fängelse "sshd". Det här avsnittet innehåller alternativen för sshd-tjänsten.
Tips: Du kan också lära dig mer om serverhärdning på Säkra din SSH-server.
Aktivera Autoban-funktionen
Gå till inställning "bantime = 1hoch ta bort koden "#" i början av raden för att aktivera det. Den här raden anger hur lång tid det tar för Fail2Ban att inaktivera IP-adressen. Standardenheten är XNUMX timme. Du kan också använda andra enheter, till exempel minuter (M) eller dagar (D) eller till och med veckor (w).
Du kan öka eller minska detta värde som du vill. Du kan till exempel ändra detta värde till 30 meter för att minska blockets varaktighet till 30 minuter.
Ändra standardlängden på inloggningsfönstret
Nästa inställningar är "maxretry" och "findtime". De begränsar antalet inloggningsförsök en angripare kan göra innan Fail2Ban blockerar deras IP-adress.
Standardvärdena för "maxretry" och "findtime" är 5 och 10 m. Om en IP misslyckas med att autentisera fem gånger på tio minuter, kommer Fail2Ban att blockera den under den tid som anges av bantime-inställningen.
Du kan ändra dessa värden till vad du vill. Till exempel kan du ställa in "maxretry" till 3 och "findtime" till 5m: Fail2Ban kommer att inaktivera en IP-adress om den misslyckas med att autentisera tre gånger på fem minuter.
Aktivera aviseringsfunktionen Fail2Ban i Linux
Följande inställningar är destemail, avsändarnamn och mta. Dessa inställningar är vad Fail2Ban kommer att använda för att konfigurera e-postmeddelanden.
- E-postinställning är den e-postadress som programmet skickar sina meddelanden till.
- Avsändarens namn är det namn som kommer att visas i fältet Från i e-postmeddelandet.
- mta är e-postöverföringsagenten som Fail2Ban kommer att använda för att skicka e-post. mta standard är sendmail , men du kan ändra det till något annat som mail.
Om du vill få e-postmeddelanden måste du avkommentera dessa rader och ange lämpliga värden som visas.
När ett förbud inträffar kommer du att få ett e-postmeddelande med detaljer om förbudet som visas.
Skapa anpassade blockorder
Nästa inställning är "action_=." Detta anger åtgärden som Fail2ban vidtar när den blockerar en IP-adress. Standard är att använda iptables för att blockera IP tills "bantime" löper ut.
Du kan också använda andra procedurer, som beskrivs nedan. Denna handledning håller sig till standardinställningen för enkelhetens skull.
- action_mw: Skickar ett e-postmeddelande när en IP-adress är blockerad, tillsammans med relevant WHOIS-information.
- action_mwl: Skickar ett e-postmeddelande när en IP-adress är blockerad, tillsammans med relevant WHOIS-information och loggfilposter som ledde till blockeringen.
- Action_xarf: Skickar ett X-ARF e-postmeddelande när en IP-adress blockeras tillsammans med loggfilposterna som utlöste blockeringen.
Många andra procedurer är tillgängliga, men det är omöjligt att täcka dem alla i denna handledning. du får Läs om alla tillgängliga procedurer I Fail2ban dokumentation.
Aktivera konfiguration för tjänsten
Förutom att konfigurera standardbeteendet för Fail2ban, är det också möjligt att använda förgjorda filterfiler för vissa populära internettjänster. Dessa är små filer skrivna av utvecklare för att söka efter specifika loggutgångar för en viss server.
Till exempel innehåller filen "apache-shellshock.conf" alla nödvändiga inställningar för att Fail2ban ska kunna kontrollera om det finns några skadliga försök att generera ett shellshock-fel.
Du kan hitta alla tillgängliga filterfiler för ditt system genom att lista katalogen "/etc/fail2ban/filter.d":
ls /etc/fail2ban/filter.d
När du vet vilka filter du vill använda, säg till Fail2ban att ladda dem under uppstart genom att öppna filen "jail.local":
sudo nano /etc/fail2ban/jail.local
Skapa ett utrymme i "jail.local" där du kan aktivera dina nya filter. Jag skapar min egen mellan kommentarsrubriken och blocket [INCLUDES].
Lägg till de filter du vill aktivera. Till exempel, följande är ett utdrag som jag använder i min konfiguration:
# Kommentarer: använd '#' för kommentarsrader och ';' (efter ett blanksteg) för inline-kommentarer [sshd] aktiverad = sant [nginx-bad-request] aktiverad = sant [bitwarden] aktiverad = sant [INKLUDERAS]
När du är klar, spara och stäng filen. Starta om fail2ban för att tillämpa ändringarna.
sudo systemctl starta om fail2ban
Testa din konfiguration
Nu när du har konfigurerat Fail2Ban i Linux är det dags att testa det.
Det enklaste sättet att testa din konfiguration är att försöka logga in med fel lösenord flera gånger i snabb följd. Du kan använda en SSH-anslutning för att göra detta.
På kasseringsmaskinen, försök att SSH till din Fail2ban-server med hjälp av "admin"-användarnamnet. Ersätt "din_server_ip_adress" med den faktiska IP-adressen för din Fail2ban-server.
ssh admin@din_server_ip_adress
Ange ett slumpmässigt lösenord när du uppmanas och upprepa det flera gånger. Efter flera försök kommer du att se ett meddelande om att servern avvisade ditt anslutningsförsök.
Förutom att använda ssh kan du även testa andra filterfiler i Fail2ban genom att köra Fail Status. I mitt fall använder jag filtret "nginx-bad-request" som upptäcker om en värd översvämmer servern med ogiltiga förfrågningar.
När du vet detta kan du testa den här funktionen genom att avsiktligt skicka tomma förfrågningar till din webbserver med curl:
curl -H "User-Agent:" -H "Värd:" https://dinwebbplats.com -v
Kontrollerar Fail2Ban-rutiner i Linux
Slutligen, kör följande kommando på Fail2ban-servern för att verifiera att fail2ban har lagt till de nödvändiga reglerna till iptables.
Kommandot grep filtrerar utdata från kommandot iptables. Alternativet -S talar om för iptables att skriva ut reglerna i ett enkelt parserbart format.
sudo iptables -S | grep f2b
Du kommer att se en utdata som liknar bilden nedan. Argumentet "–reject-with icmp-port-unreachable" säger åt iptables att skicka ett ICMP-port som inte kan nås till klienten när den försöker ansluta. Du kan också se IP-adresserna för enheter som servern har blockerat.
Tips: Du bör också använda SELinux för att säkra din Linux-server.
Vanliga frågor
F1: Varför får jag ett tomt e-postmeddelande när Fail2ban blockerar en IP-adress?
Svar: Om du får ett tomt e-postmeddelande är det troligt att du inte har konfigurerat din e-postserver korrekt. Kontrollera din e-postserverkonfiguration och se till att den kan skicka e-post.
F2: Hur kan jag avblockera en IP-adress?
Svar: Hitta först fängelset där IP-adressen för närvarande är blockerad: sudo fail2ban-client status , avblockera sedan IP-adressen genom att köra följande: sudo fail2ban-client set unsanip .
F3: Hur visar jag fail2ban-loggfilen?
Svar: Du kanske vill visa fail2ban-loggfilen för att felsöka problem eller för att ta reda på varför IP-adressen blockerades. Filen "/var/log/fail2ban.log" innehåller alla loggar som genereras av fail2ban. Använd kommandot cat för att se fail2ban-loggfilen: cat /var/log/fail2ban.log.
F4: Jag har aktiverat flera filterfiler. Varför fungerar inte alla?
Svar: Det här problemet uppstår troligen eftersom ett filter skriver över en annan fil som föregick den. Ett sätt att fixa detta är att skapa en egen filterfil genom att kombinera flera filter tillsammans.
F5: Kommer Fail2ban att skydda min server från en DoS-attack?
Svar: Ja och nej. För det mesta kommer Fail2ban att kunna blockera alla IP-adresser som skickar ogiltiga förfrågningar till din server. En av de största begränsningarna med detta program är dock att det inte kan agera på händelser som inte producerar en loggpost. Som sådan är det fortfarande viktigt att säkra din Linux-server med andra verktyg för dessa former av attacker.