Hur man skyddar SSH med Fail2Ban på Rocky Linux 9

By rik

Inledning

Secure Shell (SSH) är ett grundläggande verktyg för att skapa säkra fjärranslutningar till servrar. Det etablerar en krypterad kommunikationskanal för att köra kommandon och överföra filer, vilket gör det möjligt för administratörer att fjärrhantera system. SSH är dock också en frekvent måltavla för så kallade brute-force-attacker, där illasinnade aktörer systematiskt försöker gissa lösenord för att få obehörig tillgång.

Fail2Ban är ett effektivt system för att upptäcka och förebygga intrång, och det kan vara till stor hjälp för att skydda SSH-servrar mot just sådana attacker. Genom att noggrant övervaka loggfiler och identifiera misstänkt aktivitet kan Fail2Ban automatiskt spärra IP-adresser som upprepade gånger försöker logga in med felaktiga uppgifter.

Denna guide beskriver i detalj hur du installerar och konfigurerar Fail2Ban för att stärka säkerheten kring SSH på Rocky Linux 9.

Installation av Fail2Ban

1. Uppdatera systemet: Använd kommandot nedan för att uppdatera alla systempaket till de senaste versionerna.

    sudo dnf update
   

2. Installera Fail2Ban: Installera Fail2Ban-programmet genom att köra följande kommando.

    sudo dnf install fail2ban
   

3. Starta och aktivera Fail2Ban: Starta Fail2Ban-tjänsten och konfigurera den för automatisk start vid varje systemuppstart.

    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
   

Konfiguration av Fail2Ban för SSH

Fail2Ban konfigureras med hjälp av filen /etc/fail2ban/jail.conf. För att skydda SSH behöver vi definiera en specifik ”jail” för detta.

1. Öppna konfigurationsfilen: Redigera /etc/fail2ban/jail.conf med administratörsrättigheter.

    sudo nano /etc/fail2ban/jail.conf
   

2. Lägg till SSH-jail: Lägg till följande kodstycke i slutet av filen.

    [sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 86400
   
   

* enabled: Anger om SSH-jailen ska vara aktiv eller inte.
* port: Bestämmer vilken port SSH lyssnar på (vanligtvis 22).
* filter: Specificerar vilket Fail2Ban-filter som ska användas för att identifiera SSH-relaterade fel.
* logpath: Indikerar sökvägen till SSH:s loggfil.
* maxretry: Definierar det maximala antalet misslyckade inloggningsförsök innan en IP-adress spärras.
* bantime: Anger hur länge en spärrad IP-adress ska vara blockerad (i sekunder).

3. Spara ändringarna: Spara filen och avsluta redigeraren.

Anpassa Fail2Ban-filter

Fail2Ban använder reguljära uttryck (regex) för att identifiera misstänkt aktivitet i loggfiler. För att optimera SSH-skyddet behöver vi anpassa det standardmässiga SSH-filtret.

1. Öppna filterfilen: Redigera Fail2Ban-filterfilen /etc/fail2ban/filter.d/sshd.conf med administratörsrättigheter.

    sudo nano /etc/fail2ban/filter.d/sshd.conf
   

2. Anpassa filterregeln: Ersätt standardregeln med följande modifierade version.

    [Definition]
failregex = ^%(__prefix_line)sAuthentication failed for .+ from (?P<host>\S+) port (?P<port>\d+)$
ignoreregex =
   
   

Denna regel identifierar misslyckade SSH-inloggningsförsök baserat på följande:

* %(__prefix_line)s: Matchar prefixet för SSH-loggmeddelanden, som definieras i /etc/rsyslog.conf.
* Authentication failed: Identifierar rader i loggen som indikerar misslyckade inloggningsförsök.
* (?P<host>\S+): Fångar upp IP-adressen från den attackerande värden och lagrar den i gruppen host.
* (?P<port>\d+): Fångar upp SSH-porten och lagrar den i gruppen port.

3. Spara ändringarna: Spara filen och avsluta redigeraren.

Testa Fail2Ban

För att säkerställa att Fail2Ban fungerar korrekt kan vi simulera ett antal misslyckade inloggningsförsök till SSH-servern.

1. Försök logga in med fel lösenord: Försök att logga in via SSH med ett felaktigt användarnamn och/eller lösenord.

    ssh root@server_ip_address
   

2. Granska Fail2Ban-loggen: Öppna Fail2Ban-loggfilen för att verifiera att de misslyckade inloggningsförsöken har registrerats.

    sudo cat /var/log/fail2ban.log
   

3. Kontrollera blockerade IP-adresser: Använd fail2ban-client för att se om IP-adressen för den attackerande datorn har spärrats.

    sudo fail2ban-client status sshd | grep Banned
   

Sammanfattning

Genom att konfigurera Fail2Ban för att skydda din SSH-server på Rocky Linux 9, minskar du risken för brute-force-attacker markant. Fail2Ban övervakar SSH-loggar och spärrar automatiskt IP-adresser som upprepade gånger försöker logga in med felaktiga uppgifter. Detta förbättrar säkerheten för din server och gör det svårare för obehöriga att få tillgång till ditt system.

Utöver de steg som beskrivs i denna guide, rekommenderas också följande åtgärder för att ytterligare förbättra skyddet mot SSH-attacker:

* Använd starka och unika lösenord, och aktivera tvåfaktorsautentisering.
* Begränsa SSH-åtkomst till endast nödvändiga IP-adresser.
* Använd SSH-nyckelautentisering istället för lösenord.
* Övervaka regelbundet SSH-loggar efter misstänkt aktivitet.

Genom att implementera dessa åtgärder kan du skapa en starkare försvarslinje för din SSH-server och skydda ditt system från obehörig åtkomst.

Vanliga frågor

1. Vad är Fail2Ban?
Fail2Ban är ett verktyg för intrångsdetektering och förebyggande som upptäcker misstänkt aktivitet och blockerar IP-adresser som upprepade gånger gör misslyckade inloggningsförsök.

2. Varför är det viktigt att skydda SSH?
SSH är en kritisk komponent för säker fjärråtkomst till servrar. Utan ordentligt skydd kan SSH bli en måltavla för brute-force-attacker, där angripare försöker gissa lösenord och få otillåten tillgång.

3. Hur fungerar Fail2Ban?
Fail2Ban övervakar loggfiler och identifierar misstänkt aktivitet baserat på fördefinierade filter. När en regel matchar, spärrar Fail2Ban automatiskt IP-adressen till den attackerande datorn.

4. Kan jag anpassa Fail2Ban-regler?
Ja, du kan anpassa Fail2Ban-regler för att bättre möta dina specifika behov. Redigera filterfilen /etc/fail2ban/filter.d/sshd.conf för att definiera egna regler som identifierar misslyckade SSH-inloggningsförsök.

5. Hur testar jag Fail2Ban?
Du kan testa Fail2Ban genom att simulera misslyckade inloggningsförsök på SSH-servern. Kontrollera sedan Fail2Ban-loggen och använd fail2ban-client för att verifiera om IP-adressen till den attackerande värden har blockerats.

6. Vilka är några rekommenderade åtgärder för att skydda SSH?
Utöver Fail2Ban rekommenderas följande metoder för att stärka säkerheten kring SSH:
* Använd säkra lösenord och tvåfaktorsautentisering.
* Begränsa SSH-åtkomst till nödvändiga IP-adresser.
* Använd SSH-nyckelautentisering.
* Övervaka regelbundet SSH-loggfiler.

7. Vad är fördelen med SSH-nyckelautentisering?
SSH-nyckelautentisering