Hoppa till innehållet

VPS: Säkerhetstips för Linux

Upptäck hur du förbättrar säkerheten på din Linux-server med viktiga tips som hjälper dig att förhindra obehörig åtkomst och skydda dina tjänster → Läs mer nu

10 november 202611 min läsning0 Visningar0 hjälpsam

Introduktion

Den här guiden innehåller några tips och råd om hur du kan göra din Linux-server säkrare. Eftersom (virtuella) servrar måste vara åtkomliga utifrån rekommenderar vi alltid ett grundläggande skydd mot oönskad åtkomst. Det är något du inte bör försumma.

Info

Tänk på att de här anvisningarna inte är heltäckande. Mer detaljerad information finns i andra delar av ZAP-dokumentationen, till exempel 2FA (SSH).

Tips

Det enklaste sättet att skydda din server är alltid detsamma, oavsett vilken server du använder: använd säkra lösenord, uppdatera dina tjänster regelbundet och tänk generellt på vilka tjänster du installerar och vilka guider du följer.

Konfigurera tjänsternas portar

TjänstPort
SSH22
FTP21
E-post25
DNS53
HTTP80
HTTPS443

Tjänster som SSH och FTP använder alltid samma portar som standard (några av dem visas i tabellen ovan). Om en angripare utifrån försöker angripa din SSH-tjänst med brute force måste angriparen först veta vilken port SSH använder. Om du inte konfigurerar om portarna är port 22 och 21 oftast de första som testas för att köra kommandon direkt på servern eller komma åt filer via FTP.

För att förhindra detta rekommenderar vi att du konfigurerar egna portar för standardtjänsterna. I nästa avsnitt får du veta hur du gör:

Varning

Porten du väljer måste vara mellan 1024 och 65535 och får inte redan användas!

Med cat /etc/services kan du visa några standardportar och undvika att välja en port som redan används.

SSH-port

För att ändra SSH-porten måste du redigera konfigurationsfilen. Den finns vanligtvis i /etc/ssh/sshd_config. Om den inte finns där kan du söka efter den med följande kommando:

Code
find / -name "sshd_config" 2>/dev/null

Öppna nu filen med nano (som root eller med sudo).

Code
sudo nano /etc/ssh/sshd_config

Lägg till porten du vill använda efter Port. Om Port är utkommenterad (alltså #Port 22) tar du bort "#" och ersätter 22 med porten du vill använda. Spara filen (i Nano med Ctrl + o) och stäng den (i Nano: Ctrl + x).

Nu måste SSH-tjänsten startas om för att ändringarna ska börja gälla.

Code
# Unter Ubuntu/Debian/CentOS z.B.
sudo systemctl restart sshd

FTP-port

Om du har installerat en FTP-tjänst, till exempel proFTPd, kan du enkelt ändra porten genom att redigera konfigurationsfilen. Tillvägagångssättet liknar det för SSH-tjänsten.

Hitta konfigurationsfilen proftpd.conf

Code
find / -name "proftpd.conf" 2>/dev/null

Filen finns vanligtvis i /etc/proftpd.conf (CentOS) eller /etc/proftpd/proftpd.conf (Ubuntu, Debian). Öppna filen med nano, ta bort "#" före port och ange porten du vill använda efter det. Följ anvisningarna ovan så att du inte anger en ogiltig port.

Tips

Använd Ctrl + W för att söka i nano.

Code
nano /etc/proftpd/proftpd.conf

Ytterligare skydd med Fail2Ban

Fail2Ban är en tjänst som blockerar IP-adresser som försöker logga in på servern med sannolikt skadliga avsikter. Fail2Ban övervakar loggfiler efter misstänkt aktivitet och skyddar på så sätt systemet på ett relativt enkelt och effektivt sätt.

Efter installationen innehåller Fail2Ban redan förkonfigurerade inställningar för några vanligt förekommande tjänster, bland annat:

  • apache
  • lighttpd
  • sshd
  • qmail
  • postfix
  • Courier Mail Server Du kan enkelt lägga till fler tjänster genom att ange ett reguljärt uttryck (RegEx) och den loggfil som ska användas.
Som exempel tittar vi på en post i /var/log/auth.log. Den här filen innehåller alla SSH-inloggningsförsök, oavsett om de lyckades eller misslyckades.

Här ser du posten:

Code
Dec 2 12:59:19 vps-zap515723-2 sshd[364126]: Failed password for root from 92.117.xxx.xxx port 52504 ssh2

Fail2Ban använder den här loggfilen och övervakar den efter misslyckade autentiseringar. Eftersom loggfilen innehåller angriparens IP-adress kan Fail2Ban blockera den efter några misslyckade försök.

Installera Fail2Ban

Logga först in på din Linux-server. Om du behöver hjälp kan du följa vår guide Första åtkomst (SSH). Kör kommandona som root eller med sudo.

Code
sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Efter installationen kan du kontrollera statusen direkt med systemctl: (Tryck på Ctrl+C för att avsluta systemctl.)

Code
systemctl status fail2ban.service
* fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor pres>
     Active: active (running) since Sat 2023-12-02 13:10:33 UTC; 24s ago
       Docs: man:fail2ban(1)
    Process: 23988 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, statu>
   Main PID: 23989 (fail2ban-server)
        CPU: 409ms
     CGroup: /system.slice/fail2ban.service
             `-23989 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Starting Fail2Ban Service...
Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Started Fail2Ban Service.
Dec 02 13:10:34 vps-zap515723-1 fail2ban-server[23989]: Server ready

Konfigurera Fail2Ban

Fail2Ban är nu installerat, men ännu inte aktiverat eller konfigurerat. Titta i /etc/fail2ban. Där bör det finnas följande filer:

Code
action.d fail2ban.d jail.conf paths-arch.conf paths-debian.conf
fail2ban.conf filter.d jail.d paths-common.conf paths-opensuse.conf

För att skapa ett aktivt ”jail” måste du skapa en fil med namnet jail.local. Kopiera innehållet i jail.conf till den nya filen och öppna den:

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

Nu kan du göra alla inställningar i filen jail.local, inklusive vilka tjänster som ska övervakas. Fokusera på avsnittet efter [Default]. Standardavsnittet innehåller allmänna grundinställningar.

Bläddra nedåt tills du hittar det här avsnittet och anpassa det till exempel så här:

AttributFörklaringVärde
ignoreipIP-adresser som inte ska blockeras127.0.0.1/8
ignorecommandInte relevant.
bantimeHur länge en IP-adress blockeras1h
findtimeTidsperiod då misslyckade inloggningar räknas10m
maxretryAntal misslyckade försök som leder till en blockering5
Code
# kann mit Leerzeichen (und/oder Komma) getrennt definiert werden.
#ignoreip = 127.0.0.1/8 ::1

# ignorecommand = /path/to/command <ip>
ignorecommand =

# "bantime" ist die Anzahl der Sekunden, die ein Host gesperrt ist.
bantime  = 1h

# Ein Host wird gesperrt, wenn er "maxretry" Fehler innerhalb von "findtime"
# Sekunden erzeugt hat.
findtime  = 10m

# "maxretry" ist die Anzahl der Fehler, bevor ein Host gesperrt wird.
maxretry = 5

Nu har du slutfört grundkonfigurationen. Om du till exempel vill övervaka SSH-tjänsten bläddrar du nedåt till avsnittet [sshd]. Om du har ändrat porten ska du ange den under port.

Avsnittet [sshd] ser då ut så här:

Code
[sshd]

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
Tips

Som du ser kan du också göra särskilda inställningar för enskilda tjänster (här till exempel maxretry, som är lägre än standardinställningen). Även om du redan har gjort allmänna inställningar kan du konfigurera om de flesta inställningarna för varje tjänst separat. Om du inte gör det används de allmänna inställningarna.

Nu behöver du bara starta om Fail2Ban för att övervakningen ska börja.

Code
sudo systemctl restart fail2ban.service

Kontrollera att Fail2Ban fungerar

Om du har tillgång till ett VPN eller en annan server kan du försöka få Fail2Ban att blockera dig själv för att testa att tjänsten fungerar. Med ett VPN eller en mobil hotspot bör du få en annan IP-adress som du kan använda för att testa Fail2Ban.

Varning

Testa inte detta i ditt vanliga nätverk, eftersom din egen IP-adress kan blockeras och du kan låsa ute dig själv.

Försök att ansluta till servern via SSH (med en annan IP-adress!) och ange fel lösenord varje gång. Resultatet bör se ut ungefär så här:

Code
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
root@185.223.29.xxx: Permission denied (publickey,password).
root@vps-zap515723-2:/var/log# ssh root@185.223.29.179
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
^C
root@vps-zap515723-2:/var/log# ssh root@185.223.29.xxx
ssh: connect to host 185.223.29.xxx port 22: Connection refused

Som du ser avvisas nu anslutningen av servern som skyddas av Fail2Ban (Connection refused i stället för Permission denied).

Visa nu statusen för Fail2Ban. Här ser du att en IP-adress har blockerats.

Code
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 4
|  |- Total failed:     8
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   xxx

Om du vill avblockera IP-adressen kan du använda följande kommando: fail2ban-client set sshd unbanip {deine IP}.

Info

Om ovanligt många IP-adresser blockeras rekommenderar vi att du förlänger blockeringstiden för varje misslyckat försök. På så sätt minskar antalet möjliga inloggningsförsök.

Code
[sshd]

enabled = true
port    = 22
filter  = sshd
logpath = /var/log/auth.log
maxretry = 4

bantime = 1h
# Bantime sollte mit jeder Sperre dieser IP steigen
bantime.increment = true
# Skalierungsfaktor von 24 Stunden (1h,24h,48h,3d,4d....)
bantime.factor = 24
# Maximale Sperrzeit = 5 Wochen
bantime.maxtime = 5w

FAQ

Vanliga frågor

Använd säkra lösenord, uppdatera tjänster regelbundet och tänk på vilka tjänster du installerar och vilka guider du följer.
Aktivera enbart autentisering med SSH-nycklar och inaktivera lösenordsinloggning. Se guiden om SSH-nycklar.
Port 22. Angripare som försöker attackera SSH med brute force måste först ta reda på vilken port som används.

Feedback

Var den här artikeln till hjälp?

Din feedback hjälper oss att prioritera och förbättra innehåll.

0 av 0 Personer som lämnat feedback tyckte att den här artikeln var hjälpsam.

Personlig hjälp

Räcker inte guiden till?

Vår ZAP-support känner till din produkt – beskriv kort ditt ärende så hjälper vi dig personligen.