Att kon­fi­gu­re­ra din server på ett säkert sätt är en av de vik­ti­gas­te upp­gif­ter­na för ad­mi­nist­ra­tö­rer. Detta gäller inte bara för själv­han­te­ra­de servrar utan även för hyrd hårdvara. Åtgärder som lö­senords­skydd, robusta SSH-in­ställ­ning­ar och re­gel­bund­na upp­da­te­ring­ar skapar ett om­fat­tan­de sä­ker­hets­pa­ket.

Vem ansvarar för säker ser­ver­kon­fi­gu­ra­tion?

Att ha en egen server ger maximal frihet när det gäller kon­fi­gu­ra­tion. Ett bra al­ter­na­tiv är rot­serv­rar, som många le­ve­ran­tö­rer erbjuder och ger åtkomst till root-konton. I båda fallen faller kritiska uppgifter som in­stal­la­tion, struk­tu­re­ring och underhåll helt på hy­res­gäs­ten. Fel i rot­om­rå­det kan leda till betydande problem. Men genom att följa rätt pro­ce­du­rer kan man skapa en idealisk grund för en pålitlig, hög­pre­ste­ran­de och säker server.

Hur du säkrar din server steg för steg

Oavsett om du vill säkra en Windows-, Ubuntu- eller Debian-server finns det flera uni­ver­sel­la åtgärder som kan hjälpa dig att skapa en solid sä­ker­hets­grund. Nedan sam­man­fat­tar vi de vik­ti­gas­te åt­gär­der­na.

Steg 1: Utför en minimal in­stal­la­tion

Redan innan du börjar vidta skydds­åt­gär­der och kon­fi­gu­re­ra din server kan du påverka ditt projekts framtida sä­ker­hetspo­ten­ti­al. Oavsett om du använder ett Windows- eller Linux-ope­ra­tiv­sy­stem bör du tillämpa följande princip under in­stal­la­tio­nen: Din server bör endast innehålla den pro­gram­va­ra som behövs för att utföra dess uppgifter.

An­led­ning­en är att varje in­stal­le­rad ap­pli­ka­tion utgör en po­ten­ti­ell sä­ker­hets­risk och kan påverka pre­stan­dan negativt. För att minimera sår­bar­he­ter­na bör du endast in­stal­le­ra nöd­vän­di­ga system­kom­po­nen­ter och ute­slu­tan­de använda ve­ri­fi­e­rad pro­gram­va­ra från tredje part.

Steg 2: Ange ett starkt lösenord

Efter in­stal­la­tio­nen bör du först och främst ställa in ett starkt ad­mi­nist­ra­törs­lö­senord (Windows) eller root-lösenord (Linux). Som standard är inget värde de­fi­ni­e­rat, så ad­mi­nist­ra­tör­s­kon­tot förblir blockerat tills du anger ett lösenord. De flesta ope­ra­tiv­sy­stem uppmanar dig att skapa ett konto med ett lösenord direkt efter in­stal­la­tio­nen, som kommer att fungera som ditt ad­mi­nist­ra­törs- eller root-in­logg­nings­kon­to.

Om du har hyrt din Linux-server från en le­ve­ran­tör och fått ett be­fint­ligt root-in­logg­nings­namn, ändra lö­senor­det ome­del­bart. Logga in på din server via SSH och ange följande kommando i ter­mi­na­len:

passwd
bash

När du har in­stal­le­rat ditt säkra lösenord måste du verifiera det. Se till att välja ett lösenord som är så långt som möjligt och in­ne­hål­ler en blandning av bokstäver, spe­ci­al­tec­ken och siffror. Det re­kom­men­de­ras också att använda en lö­senords­han­te­ra­re för att lagra lö­senor­det på ett säkert sätt så att du enkelt kan komma åt det vid behov.

Steg 3: Ändra SSH-porten

Som standard använder SSH-åtkomst TCP/UDP-port 22, som är för­kon­fi­gu­re­rad under syste­min­stal­la­tio­nen. Hackare riktar ofta sina au­to­ma­tis­ka in­logg­nings­för­sök mot denna port. För att minska risken för obehörig åtkomst bör du tilldela en annan port för kryp­te­ra­de fjär­ran­slut­ning­ar.

För att göra detta redigerar du SSH-kon­fi­gu­ra­tions­fi­len sshd_config med valfri tex­tre­di­ge­ra­re. Om du till exempel vill använda nano-re­di­ge­ra­ren kör du följande kommando:

nano /etc/ssh/sshd_config
bash

Sök efter raden märkt “Port” och ersätt port­num­mer 22 med det nummer du vill använda. Tänk på att det finns flera andra stan­dard­por­tar som är re­ser­ve­ra­de för olika tjänster (t.ex. port 80 för HTTP).

Notis

Innan änd­ring­ar­na i filen sshd_config träder i kraft måste du starta om SSH-tjänsten. På Debian kan du göra detta med kommandot etc/init.d/ssh restart. För Ubuntu-användare, starta om tjänsten med service ssh restart.

Steg 4: In­ak­ti­ve­ra SSH-in­logg­ning för ad­mi­nist­ra­tör­s­kon­ton

För att yt­ter­li­ga­re säkra din server re­kom­men­de­ras det att in­ak­ti­ve­ra SSH-in­logg­ning för root- eller ad­mi­nist­ra­tör­s­kon­tot. Annars kan en angripare som får tillgång till lö­senor­det använda kontot för fjär­råt­komst.

Innan du genomför denna åtgärd, se till att det finns minst ett annat konto som kan ansluta till servern för att undvika att du låser dig ute. För Linux-system skapar du ett konto på följande sätt med hjälp av följande kommando:

useradd -g users -d /home/user1 -m -s /bin/bash user1
bash

Detta skapar ett exempel på ett an­vän­dar­kon­to med namnet “user1”. Tilldela sedan ett säkert lösenord till kontot:

passwd user1
bash

Testa om in­logg­ning­en med det skapade an­vän­dar­kon­tot fungerar. Om det fungerar, fortsätt med hu­vud­upp­gif­ten: in­ak­ti­ve­ra root-kontot. Öppna SSH-kon­fi­gu­ra­tions­fi­len sshd_config igen med din fa­vo­ri­tre­di­ge­ra­re. Leta reda på posten PermitRootLogin yes och ersätt den med PermitRootLogin no. Efter att SSH-tjänsten har startats om kommer fjär­råt­komst för root-kontot inte längre att vara möjlig.

Med hjälp av post AllowGroups i kon­fi­gu­ra­tions­fi­len kan du också ange vilka användare som får ansluta via SSH. För att göra detta skapar du helt enkelt en grupp (addgroup) och lägger till önskade användare i den (adduser). Ange sedan det valda grupp­nam­net i sshd_config (t.ex. AllowGroups ssh_users).

Steg 5: Ställ in e-posta­vi­se­ring­ar för SSH-in­logg­ning­ar

Oavsett vilka specifika åtgärder du vidtar för att säkra SSH-åtkomst bör du kon­ti­nu­er­ligt övervaka alla fjärrak­ti­vi­te­ter efteråt. Detta sä­ker­stäl­ler att du kan verifiera att SSH-tjänsten på din server är korrekt säkrad och upptäcka obehöriga åt­komst­för­sök i ett tidigt skede, så att du kan reagera på lämpligt sätt. Ett enkelt skript kan au­to­ma­tiskt skicka ett med­de­lan­de via e-post till din adress efter varje lyckad fjär­rin­logg­ning på din server.

Här är ett exempel på ett skript /opt/shell-login.sh för Linux, som du enkelt kan skapa själv:

#!/bin/bash
echo "Login on $(hostname) on $(date +%Y-%m-%d) at $(date +%H:%M)"
echo "User: $USER"
echo
finger
txt

Lägg sedan till följande rad i filen /etc/profile:

/opt/shell-login.sh | mailx -s "SSH login on the server" youremail@example.com
txt

Denna post sä­ker­stäl­ler att skriptet körs och skickar ett med­de­lan­de via e-post till den angivna adressen varje gång en SSH-in­logg­ning sker. För att detta ska fungera måste skriptet tilldelas be­hö­rig­het 755 (läs- och kör­be­hö­rig­het för alla användare och skriv­be­hö­rig­het för ägaren). Du kan ställa in denna be­hö­rig­het med följande kommando:

chmod 755 /opt/shell-login.sh
bash

Steg 6: Blockera oanvända portar

Öppna portar utgör i allmänhet inte någon betydande sä­ker­hets­risk, eftersom de är nöd­vän­di­ga för kom­mu­ni­ka­tion med olika tjänster och ap­pli­ka­tio­ner. Till exempel är portarna 80 och 443 nöd­vän­di­ga för HTTP- och HTTPS-an­slut­ning­ar, liksom den SSH-port du valt. Dessa gräns­snitt kan dock bli sårbara om de as­so­ci­e­ra­de pro­gram­men har sä­ker­hets­bris­ter som angripare kan utnyttja.

Om du har utfört en minimal syste­min­stal­la­tion och endast in­stal­le­rat ett begränsat antal tred­je­parts­pro­gram bör antalet yt­ter­li­ga­re portar som krävs vara litet. För att skydda din server från attacker bör du blockera alla onödiga öppna portar i dina brand­vägg­s­in­ställ­ning­ar. De flesta större ope­ra­tiv­sy­stem har som standard pro­gram­va­ra för pa­ket­fil­tre­ring, till exempel iptables. Med detta verktyg kan du definiera regler för att reglera da­ta­tra­fi­ken, inklusive att ange tillåtna och bloc­ke­ra­de portar.

Steg 7: Uppdatera pro­gram­va­ran re­gel­bun­det

Kända sä­ker­hets­pro­blem i ap­pli­ka­tio­ner åtgärdas van­ligt­vis snabbt med upp­da­te­ring­ar. Genom att hålla dig in­for­me­rad om upp­da­te­ring­ar för ditt ope­ra­tiv­sy­stem och in­stal­le­ra­de ap­pli­ka­tio­ner och in­stal­le­ra dem ome­del­bart sä­ker­stäl­ler du optimalt skydd för din server. De flesta ser­ver­sy­stem erbjuder också funk­tio­ner för att au­to­ma­tiskt ladda ner och in­stal­le­ra viktiga sä­ker­hets­upp­da­te­ring­ar i bak­grun­den.

Om du till exempel säkrar en Windows-server kan du i avsnittet Windows Update kon­fi­gu­re­ra specifika policyer för au­to­ma­tis­ka upp­da­te­ring­ar. Detta in­klu­de­rar att definiera när och hur ofta upp­da­te­ring­ar ska kon­trol­le­ras, om de ska in­stal­le­ras ome­del­bart och när systemet ska startas om. Linux-system erbjuder verktyg som apt-listchanges eller apticron shell-skript för att dagligen meddela dig om nya till­gäng­li­ga pro­gram­pa­ket och ladda ner dem. Yt­ter­li­ga­re skript som unattended-upgrades kan hantera au­to­ma­tisk in­stal­la­tion.

Notis

Även när du använder en au­to­ma­tisk upp­da­te­rings­pro­cess bör du se till att hålla reda på vilka upp­da­te­ring­ar som har ge­nom­förts. Detta hjälper dig att iden­ti­fi­e­ra och åtgärda fel som kan uppstå under upp­da­te­rings­pro­ces­sen.

Steg 8: Skydda Windows- och Linux-servrar från brute force-attacker

En av de enklaste och van­li­gas­te at­tack­me­to­der­na är brute-force-attacken. I denna typ av attack använder hackare verktyg för att upprepade gånger försöka gissa lösenord. Genom att im­ple­men­te­ra starka rutiner för lö­senords­han­te­ring kan du avsevärt minska san­no­lik­he­ten för att denna metod lyckas.

Om din server till­han­da­hål­ler tjänster som kräver in­logg­ning kan du dock inte för­ut­sät­ta att alla användare följer strikta lö­senordsru­ti­ner. Ana­lys­verk­tyg kan hjälpa till att minska denna risk: Lösningar som Fail2ban (Linux/POSIX-system) eller RdpGuard (Windows) övervakar serverns loggfiler, upptäcker ovanligt beteende och blockerar miss­tänk­ta IP-adresser. Du kan kon­fi­gu­re­ra antalet tillåtna miss­lyc­ka­de försök innan bloc­ke­ring sker och hur länge bloc­ke­ring­en ska gälla.

Steg 9: Använd över­vak­nings­verk­tyg

För att upp­rätt­hål­la ser­ver­sä­ker­he­ten är det viktigt att se till att in­ter­ak­tio­nen mellan hårdvara och mjukvara fungerar som avsett. Detta är inte en en­gångs­upp­gift utan ett fort­lö­pan­de ansvar som kräver ständig upp­märk­sam­het. Med tanke på det stora antalet olika system­pro­ces­ser är det lämpligt att använda över­vak­nings­verk­tyg från början. Dessa verktyg spårar all ser­ver­ak­ti­vi­tet och varnar dig om av­vi­kel­ser.

Ett enkelt och lätt­kon­fi­gu­re­rat program för detta ändamål är Monit, som kan in­stal­le­ras via pa­ket­han­te­ra­ren på många Linux-dis­tri­bu­tio­ner. Denna öppen käll­kodsap­pli­ka­tion (GNU-AGPL-licens) kan övervaka processer, filer, moln, värdar, program eller skript, samt system­re­sur­ser som CPU- och min­ne­san­vänd­ning. För mer om­fat­tan­de över­vak­ning kan du överväga Nagios, ett öppen käll­kods­verk­tyg som finns till­gäng­ligt för Linux och Windows. Nagios kan också utökas med Nagios-plugins.

Steg 10: Kon­fi­gu­re­ra sä­ker­hetsko­pi­or

De re­kom­men­de­ra­de kon­fi­gu­ra­tions­ste­gen för­bätt­rar din servers säkerhet avsevärt. Men även de bästa kon­fi­gu­ra­tio­ner­na och noggrant underhåll kan inte garantera 100 % skydd. En om­fat­tan­de sä­ker­hetsko­pi­e­rings­stra­te­gi är en viktig del av ditt sä­ker­hets­sy­stem, som gör att du kan åter­stäl­la filer vid da­ta­för­lust.

Det finns många robusta verktyg som hjälper dig att skapa och åter­stäl­la sä­ker­hetsko­pi­or. Ett gra­ti­sal­ter­na­tiv är det öppna käll­kods­verk­ty­get rsync, som är kom­pa­ti­belt med de flesta större platt­for­mar (macOS, Windows, Linux). Detta verktyg håller din sä­ker­hetsko­pia upp­da­te­rad i realtid genom att spegla alla ändringar som görs i ori­gi­nal­da­ta.

Förutom en allmän ser­ver­back­up bör du även sä­ker­hetsko­pi­e­ra dina databaser.

Notis

För maximal säkerhet bör du lagra sä­ker­hetsko­pi­or på externa lag­ringsen­he­ter (t.ex. bärbara hård­dis­kar, extra servrar) istället för på den server som ska skyddas.

Gå till huvudmeny