Hoppa till innehållet

Dedikerad server: Linux säkerhetstips

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

10 november 202610 min läsning6 Visningar0 hjälpsam

Introduktion

Denna guide innehåller några tips och råd om hur du kan göra din Linux-server säkrare. Eftersom servrar måste vara tillgängliga utifrån är ett grundläggande skydd mot oönskad åtkomst alltid rekommenderat och bör inte förbises.

Info

Observera att dessa instruktioner inte är uttömmande och mer detaljerad information finns i andra delar av ZAP-dokumentationen. (t.ex. 2FA (SSH))

Tips

Det enklaste sättet att skydda din server är alltid detsamma, oavsett server: Använd säkra lösenord, uppdatera dina tjänster regelbundet och var noga med vilka tjänster du installerar och vilka instruktioner du följer.

Portkonfiguration för dina tjänster

TjänstPort
SSH22
FTP21
Mail25
DNS53
HTTP80
HTTPS443

Tjänster som SSH eller FTP använder som standard alltid samma portar (några av dem finns i tabellen ovan). Om en extern angripare försöker knäcka din SSH-tjänst via brute force måste denne först veta vilken port SSH använder. Om du inte ändrar dessa portar är det oftast port 22 och 21 som används för att direkt köra kommandon på servern eller komma åt filer via FTP.

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

Varning

Den port du väljer måste ligga mellan 1024 och 65535 och får inte vara en redan använd port!

Med cat /etc/services kan du visa några standardportar för att undvika att välja en redan upptagen port.

Ändra SSH-port

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

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

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

Code
sudo nano /etc/ssh/sshd_config

Lägg till din önskade port efter Port. Om Port är kommenterad (t.ex. #Port 22), ta bort "#" och ersätt 22 med din valda port. Spara filen (i Nano med Ctrl + o) och stäng den (Nano: Ctrl + x).

SSH-tjänsten måste nu startas om för att ändringarna ska träda i kraft.

Code
# På Ubuntu/Debian/CentOS t.ex.
sudo systemctl restart sshd

Ändra FTP-port

Om du har installerat en FTP-tjänst som proFTPd kan du också enkelt ändra porten via konfigurationsfilen. Proceduren är liknande som för SSH.

Hitta konfigurationsfilen proftpd.conf

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

Filen finns vanligtvis under /etc/proftpd.conf (CentOS) eller /etc/proftpd/proftpd.conf (Ubuntu, Debian). Öppna filen med nano, ta bort "#" framför port och ange din önskade port. Följ anvisningarna ovan för att inte välja en ogiltig port.

Tips

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

Code
nano /etc/proftpd/proftpd.conf

Extra skydd med Fail2Ban

Fail2Ban är en tjänst som blockerar IP-adresser som försöker logga in på servern med sannolikt illvilliga avsikter. Fail2Ban övervakar loggfiler för misstänkt aktivitet och skyddar ditt system enkelt och effektivt.

Efter installationen har Fail2Ban redan förkonfigurerade inställningar för några vanliga tjänster, bland annat:

  • apache
  • lighttpd
  • sshd
  • qmail
  • postfix
  • Courier Mail Server Fler tjänster kan enkelt läggas till med reguljära uttryck (RegEx) och angivande av önskad loggfil.
Som exempel tittar vi på en post i /var/log/auth.log. Denna fil 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 denna loggfil och övervakar misslyckade autentiseringar. Eftersom loggfilen direkt innehåller angriparens IP-adress kan Fail2Ban blockera denna IP efter några misslyckade försök.

Installera Fail2Ban

Logga in på din Linux-server först. Behöver du hjälp, följ vår Första åtkomst (SSH) guide. Kör kommandon som root eller med sudo.

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

Efter installationen kan du direkt kontrollera status med systemctl: (Avsluta med Ctrl+C)

Code
systemctl status fail2ban.service
* fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor pres>
     Active: active (running) sedan 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 aktivt eller konfigurerat. Titta i /etc/fail2ban där följande filer bör finnas:

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 en aktiv "jail" måste en fil som heter jail.local skapas. Kopiera innehållet från 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

Alla inställningar kan nu göras i jail.local, inklusive vilka tjänster som ska övervakas. Titta bara på delen efter [Default]. Denna sektion innehåller grundinställningar.

Skrolla ner till denna sektion och anpassa t.ex. så här:

AttributFörklaringVärde
ignoreipIP-adresser som inte ska blockeras127.0.0.1/8
ignorecommandInte relevant.
bantimeHur länge en IP-adress är blockerad1h
findtimeTidsperiod då misslyckade inloggningar räknas10m
maxretryAntal misslyckanden innan blockering sker5
Code
# kan definieras med mellanslag (och/eller komma).
#ignoreip = 127.0.0.1/8 ::1

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

# "bantime" är antal sekunder en host är blockerad.
bantime  = 1h

# En host blockeras om den har "maxretry" fel inom "findtime"
# sekunder.
findtime  = 10m

# "maxretry" är antalet fel innan blockering.
maxretry = 5

Nu har du gjort grundinställningarna. För att t.ex. övervaka SSH-tjänsten, skrolla ner till [sshd]-taggen. Om du ändrat port ska du ange den under port.

[sshd]-taggen ser 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 göra individuella inställningar för varje tjänst (t.ex. maxretry som är lägre än standardvärdet). Om du inte gör det används standardinställningarna.

Starta om Fail2Ban för att aktivera övervakningen.

Code
sudo systemctl restart fail2ban.service

Kontrollera Fail2Bans funktion

Om du har tillgång till ett VPN eller en annan server kan du testa om Fail2Ban fungerar genom att blockera dig själv. Med VPN eller mobil hotspot får du en annan IP som du kan testa med.

Varning

Testa inte i ditt vanliga nätverk, då kan din egen IP blockeras och du blir utlåst.

Försök ansluta via SSH till din server (med annan IP!) och ange fel lösenord varje gång. Resultatet bör se ut 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 nekas anslutningen från din Fail2Ban-skyddade server nu (Connection refused istället för Permission denied).

Visa status för Fail2Ban. Här ser du att en IP-adress är blockerad.

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

Vill du låsa upp en IP igen kan du göra det med kommandot: fail2ban-client set sshd unbanip {din IP}.

Info

Om du har ovanligt många IP-blockeringar kan det vara bra att öka blockeringstiden för varje misslyckat försök för att minska antalet möjliga inloggningsförsök.

Code
[sshd]

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

bantime = 1h
# Bantime bör öka med varje blockering av denna IP
bantime.increment = true
# Skalningsfaktor på 24 timmar (1h,24h,48h,3d,4d....)
bantime.factor = 24
# Maximal blockeringstid = 5 veckor
bantime.maxtime = 5w

FAQ

Vanliga frågor

Använd säkra lösenord, uppdatera dina tjänster regelbundet och var noga med vilka tjänster du installerar och vilka instruktioner du följer.
Standardlösenordsinloggning för SSH kan relativt lätt kringgås via brute-force-attacker, särskilt med enkla lösenord. Det rekommenderas att endast använda autentisering via SSH-nycklar och inaktivera lösenordsinloggning.
SSH använder som standard port 22. Eftersom tjänster som SSH och FTP alltid använder samma standardportar är dessa vanliga mål för automatiserade attacker – skyddsåtgärder rekommenderas.

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.