Brute-force-attacker är en av de enklaste, men ändå mest genomträngande säkerhetshoten mot digitala system. En brute-force-attack innebär att en angripare använder ett automatiserat verktyg för att systematiskt testa alla möjliga lösenordskombinationer i hopp om att slutligen gissa sig till det korrekta lösenordet. Denna metod kräver inga sofistikerade tekniker och bygger helt på att försöka tillräckligt många kombinationer för att lyckas. På grund av dess enkelhet och höga framgångsgrad, är det viktigt att implementera robusta säkerhetsåtgärder för att skydda känslig information.
En effektiv lösning för att skydda system mot sådana attacker är Fail2Ban, ett Python-baserat verktyg som manuellt måste installeras på systemet. Fail2Ban skyddar nätverksåtkomst genom att övervaka inloggningsförsök och temporärt blockera IP-adresser som visar misstänkt aktivitet, såsom upprepade misslyckade inloggningsförsök. Denna blockering baseras på regler som definieras i konfigurationsfiler, vilket gör det möjligt för systemadministratörer att finjustera dess beteende beroende på deras specifika behov.
Konfigurationsfiler för Fail2Ban är placerade i ”/etc/fail2ban/”, med undermappar som innehåller filer för specifika åtgärder, filter och regler för olika tjänster. En av de viktigaste filerna är ”jail.conf”, som innehåller inställningar för övervakning av tjänster som SSH. Det är dock rekommenderat att inte redigera denna fil direkt. Istället bör man kopiera den till ”jail.local” och göra nödvändiga ändringar där för att undvika problem vid framtida uppdateringar av programmet.
Installationsprocessen för Fail2Ban på en Ubuntu 24.04-server börjar med att uppdatera systemets paketlista och programvara med hjälp av kommandona:
$ sudo apt update && sudo apt upgrade -y
Därefter installeras Fail2Ban med:
$ sudo apt install fail2ban
Efter installationen kan dess version kontrolleras för att försäkra sig om att allt gick som det skulle:
$ fail2ban-server --version
När installationen är klar och programvaran är verifierad, är nästa steg att konfigurera den för att effektivt skydda systemet. Detta görs genom att anpassa inställningarna i ”jail.local”-filen, vilket inkluderar att aktivera övervakning av tjänster som SSH och definiera hur länge en IP-adress ska blockeras efter upprepade misslyckade försök.
Genom att ta dessa steg, kan organisationer och individuella användare effektivt höja säkerhetsnivån på sina system och skydda dem mot den alltid närvarande risken för brute-force-attacker.
För att skydda SSH-tjänsten med Fail2Ban, är det viktigt att korrekt konfigurera filen jail.local
för att skapa en effektiv policy för blockering av IP-adresser som gör upprepade misslyckade inloggningsförsök. Här är ett exempel på hur du kan konfigurera Fail2Ban för att skydda SSH på din server:
Exempel för att skydda emot brute force attack på ssh
Steg 1: Skapa eller redigera jail.local
Kopiera jail.conf
till jail.local
om du inte redan har en jail.local
-fil. Detta säkerställer att dina anpassningar inte skrivs över vid uppdateringar av Fail2Ban:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Steg 2: Konfigurera SSH-jail
Öppna jail.local
med en textredigerare, till exempel Nano:
sudo nano /etc/fail2ban/jail.local
Leta reda på sektionen för SSH, som vanligtvis är markerad med [sshd]
eller [ssh]
. Om det inte finns någon specifik sektion, kan du skapa en genom att lägga till följande konfiguration:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
findtime = 600
Förklaring av konfigurationsparametrar:
- enabled: Sätter denna jail till aktiv. Sätt detta till
true
för att aktivera. - port: Anger porten som tjänsten lyssnar på. Standard är
ssh
, vilket översätter till port 22, men du kan ändra detta om din SSH-tjänst lyssnar på en annan port. - filter: Detta refererar till det filter som används för att identifiera misslyckade försök.
sshd
är standardfiltret som matchar misslyckade SSH-inloggningsförsök. - logpath: Sökvägen till loggfilen där misslyckade försök registreras. För SSH på de flesta Linux-distributioner är detta
/var/log/auth.log
. - maxretry: Antalet misslyckade försök från en IP-adress innan den blockeras.
- bantime: Tiden i sekunder som en IP-adress blockeras från att göra ytterligare anslutningar. I detta exempel är tiden satt till 600 sekunder (10 minuter).
- findtime: Tidsperioden i sekunder under vilken
maxretry
får inträffa för att IP-adressen ska blockeras. I detta exempel måste 5 misslyckade försök ske inom 600 sekunder (10 minuter).
Steg 3: Starta om Fail2Ban
När du har gjort dina ändringar, spara filen och starta om Fail2Ban för att de nya inställningarna ska träda i kraft:
sudo systemctl restart fail2ban
Med dessa inställningar kommer Fail2Ban att övervaka SSH-loggfiler för misslyckade inloggningsförsök och blockera IP-adresser som upprepat misslyckas med att logga in, vilket ökar säkerheten för din server mot brute-force-attacker.