Teknik

VPS-säkerhet: de första 10 inställningarna

Vi går igenom inställningarna för SSH, brandvägg, fail2ban och uppdateringar på en ny virtuell server i rätt ordning, med fungerande kommandon och vanliga misstag.

Aurora YazılımRedaktionen 6 min läsning
VPS-säkerhet: de första 10 inställningarna
Vad ska man göra först för VPS-säkerhet?

Det första för VPS-säkerhet är att uppdatera systemet, skapa en användare med sudo-behörighet i stället för root och sätta upp inloggning med SSH-nyckel. Därefter stänger du SSH-inloggning för root och med lösenord, öppnar bara nödvändiga portar i brandväggen, installerar fail2ban, aktiverar automatiska säkerhetsuppdateringar och planerar regelbunden backup.

Var börjar man med VPS-säkerhet?

En nystartad virtuell server är ett mål för automatiska skannrar från det ögonblick den ansluts till internet. De här botarna riktar sig inte mot något visst företag utan provar varje maskin där de hittar en öppen SSH-port och ett svagt lösenord. Att tusentals inloggningsförsök hamnar i serverloggarna redan under de första timmarna är helt normalt.

Därför börjar VPS-säkerhet med några grundinställningar under den första timmen efter installationen. De tio stegen nedan är skrivna för servrar baserade på Ubuntu och Debian; i andra distributioner skiljer sig pakethanterare och tjänstenamn, men logiken är densamma.

Om serverdrift är nytt för dig, eller om du driver webbplatsen med ett utvecklingsteam, bör du från början klargöra vem som ansvarar för de här stegen. Säkerhetsinställningar är inte något som görs en gång och glöms utan en process som kräver regelbundet underhåll.

Det här bör du veta innan du börjar

Innan du går vidare till installationen bör du ha följande: serverns IP-adress, den första root- eller administratörsåtkomsten från leverantören och en terminal på din egen dator. I Windows 10 och 11 finns OpenSSH-klienten inbyggd i PowerShell; i macOS och Linux räcker Terminal.

Det är också en bra vana att spara kommandona i en anteckningsfil medan du arbetar. Att veta vilken inställning du ändrade och när gör det lättare att hitta orsaken om ett problem uppstår senare, och gör att du kan upprepa samma installation på en andra server. Fastnar du under installationen kan du fråga vårt team via sidan kontakt.

System- och användarinställningar

De två första stegen är att rensa servern från kända sårbarheter och att sköta det dagliga arbetet med ett annat konto än root.

1. Uppdatera systemet

Leverantörens färdiga image kan ha skapats för flera månader sedan. Det första du gör är att uppdatera alla paket med aktuella säkerhetsrättningar. Kom det en kärnuppdatering ska du starta om servern.

bash
sudo apt update && sudo apt upgrade -y
sudo reboot

2. Skapa en användare med sudo-behörighet

Att arbeta med root-kontot innebär att ett enda felaktigt kommando kan påverka hela systemet. Skapa en egen användare och lägg till den i sudo-gruppen; använd administratörsbehörighet bara när det behövs.

bash
sudo adduser yonetici
sudo usermod -aG sudo yonetici

SSH-säkerhet

SSH är serverns ytterdörr. De två mest effektiva stegen för SSH-säkerhet är att använda nycklar i stället för lösenord och att stänga inloggning för root.

3. Sätt upp inloggning med SSH-nyckel

Skapa ett nyckelpar på din egen dator och kopiera den publika nyckeln till servern. I macOS och Linux gör kommandot ssh-copy-id det i ett steg; i Windows kan du överföra den publika nyckeln till servern med PowerShell. Att ge nyckeln en lösenfras (passphrase) ger ett extra skydd även om din dator skulle hamna i orätta händer.

bashmacOS / Linux
ssh-keygen -t ed25519
ssh-copy-id yonetici@SUNUCU_IP
powershellWindows PowerShell
ssh-keygen -t ed25519
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh yonetici@SUNUCU_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

4. Stäng inloggning för root och med lösenord

När du har bekräftat i en andra terminal att inloggning med nyckel fungerar, skärper du SSH-konfigurationen. Att testa konfigurationen före ändringen förhindrar att en felaktig rad stoppar tjänsten.

Obs: i vissa molnimages kan extra filer i mappen /etc/ssh/sshd_config.d/ öppna lösenordsinloggning igen. Kontrollera även den mappen efter att du har gjort inställningen.

bashI /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
bashTesta och starta om
sudo sshd -t
sudo systemctl restart ssh

Brandvägg och Fail2ban

På servern ska bara de portar vara öppna som verkligen tjänar omvärlden. Rätt brandväggsinställningar minskar angreppsytan, och fail2ban blockerar automatiskt adresser som envist försöker.

5. Aktivera brandväggen

I Ubuntu ger UFW ett enkelt gränssnitt ovanpå iptables. Tillåt SSH först och aktivera sedan brandväggen; blir ordningen den omvända bryts din anslutning.

bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

6. Installera Fail2ban

Fail2ban bevakar loggarna och blockerar IP-adresser med upprepade misslyckade inloggningar under en viss tid. Gör inställningarna inte direkt i huvudfilen utan i filen jail.local, som inte skrivs över vid uppdateringar.

bashInstallation
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
ini/etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
bantime = 1h
findtime = 10m
bashVerifiering
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Uppdateringar och tjänster

En stor del av säkerhetshålen kommer från programvara där rättningen för länge sedan publicerats men inte installerats. Varje tjänst som körs i onödan är dessutom en risk i sig.

7. Automatiska säkerhetsuppdateringar

Paketet unattended-upgrades installerar säkerhetsrättningar utan att du behöver ingripa. Större versionsbyten gör du i stället kontrollerat och för hand, efter att du har tagit en backup.

bash
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

8. Kontrollera öppna portar och tjänster

Lista vilken tjänst som lyssnar på vilken port. Tjänster som bara ska nås inifrån servern, som databasen, ska lyssna på adressen 127.0.0.1 och inte vara öppna mot omvärlden. Stäng tjänster du inte använder.

bash
sudo ss -tulpn
sudo systemctl disable --now SERVIS_ADI

Övervakning och backup

Publicerar du en webbplats på servern ska HTTPS läggas till de här stegen; installation och automatisk förnyelse av det kostnadsfria certifikatet har vi beskrivit i inlägget installera SSL-certifikat.

9. Övervaka loggar och resurser

Det enklaste sättet att upptäcka ett angrepp är loggarna. Kontrollera regelbundet SSH-inloggningar, diskutrymme och ovanlig processoranvändning. Att serverns klocka går rätt är också nödvändigt för att loggarna ska ge mening.

bash
sudo journalctl -u ssh --since today
df -h
timedatectl

10. Planera backup och ögonblicksbilder

Ingen säkerhetsåtgärd är hundra procent; den sista försvarslinjen är backupen utanför servern. Använd leverantörens funktion för ögonblicksbilder, men förlita dig inte enbart på den: skicka även backup av databas och filer till ett separat lagringsutrymme och testa återställningen regelbundet. För strategin kan du titta på vår guide om hur man tar backup.

Om du använder Docker

Portar som publiceras med Docker redigerar iptables-reglerna direkt och kan därför kringgå UFW-reglerna. Alltså kan en databasport som ser stängd ut i UFW ändå vara nåbar utifrån om den har publicerats med docker run -p.

Lösningen är att binda containerportar som bara ska nås inifrån servern till adressen 127.0.0.1 och bara öppna portarna 80 och 443 utåt via en omvänd proxy (reverse proxy). För detaljer kan du titta på Dockers officiella nätverksdokumentation.

bashExempel på att binda en port bara lokalt
docker run -d -p 127.0.0.1:5432:5432 postgres

Vanliga misstag och nästa steg

De här tio stegen är en början. Själva applikationen som körs på servern ska också hållas uppdaterad, administrationspaneler ska skyddas med tvåstegsverifiering och en plan för snabb reaktion ska finnas vid misstänkta händelser. Vad du gör efter ett angrepp har vi gått igenom steg för steg i inlägget webbplatsen har blivit hackad.

Vill du inte sköta serverdriften med ditt eget team tar vår tjänst hastighet och prestanda, som hanterar webbplatsens hosting, säkerhet och snabbhet tillsammans, över den bördan. I våra projekt inom e-handelsplattform, webbdesign och branschanpassade mjukvarulösningar planeras serversäkerheten som en del av driftsättningen.

MisstagSlutsatsRätt sätt
Att aktivera UFW utan att tillåta SSHÅtkomsten till servern brytsFörst ufw allow OpenSSH
Att stänga lösenordsinloggning utan att testa nyckelnDu låser ut dig självTesta i en andra terminal
Att lämna databasen öppen utåtData som är direkt utsatt för angreppBind den till 127.0.0.1
Att förvara backupen på samma serverBackupen försvinner tillsammans med servernAnvänd ett separat lagringsutrymme
Att skjuta upp uppdateringar i månaderKända sårbarheter står kvar öppnaAutomatisk säkerhetsuppdatering

Vanliga frågor

01Ökar säkerheten om man byter SSH-port?

Att byta standardporten 22 minskar den automatiska bottrafiken och trängseln i loggarna, men det är ingen verklig säkerhetsåtgärd. Det verkliga skyddet kommer från åtgärder som inloggning med nyckel, avstängd lösenordsinloggning och fail2ban. Byter du port, glöm inte att tillåta den nya porten i brandväggen.

02Hanterad server eller sköta den själv?

Behärskar du Linux-administration och kan avsätta tid för regelbundet underhåll kan du sköta VPS:en själv. Om inte ser en hanterad tjänst eller ett erfaret team till att uppdateringar och övervakning inte glöms; eftersatt underhåll är den vanligaste orsaken till säkerhetshål.

03Vad gör jag om Fail2ban blockerar mig själv?

Logga in på servern via leverantörens webbkonsol och häv blockeringen med kommandot sudo fail2ban-client set sshd unbanip IP_ADRESI. Har du en fast IP-adress kan du förhindra upprepning genom att lägga till den på raden ignoreip i filen jail.local.

På en ny VPS gör de här tio inställningarna att den allra största delen av de automatiska angreppen går i tomma intet redan från första dagen; tillsammans med regelbundna uppdateringar och testade backuper bildar de en stabil grund. Vill du sköta serverns säkerhet och snabbhet tillsammans, med mätningar, kan du läsa om Auroras tjänst hastighet och prestanda.