At kon­fi­gu­re­re din server sikkert er en af de vigtigste opgaver for ad­mi­ni­stra­to­rer. Dette gælder ikke kun for selva­d­mi­ni­stre­re­de servere, men også for lejet hardware. For­an­stalt­nin­ger som ad­gangs­ko­de­be­skyt­tel­se, solide SSH-indstil­lin­ger og re­gel­mæs­si­ge op­da­te­rin­ger udgør en om­fat­ten­de sik­ker­heds­pak­ke.

Hvem har ansvaret for at sikre, at serveren er kon­fi­gu­re­ret korrekt?

At hoste sin egen server giver maksimal frihed, når det kommer til kon­fi­gu­ra­tion. Et godt al­ter­na­tiv er root-servere, som mange udbydere tilbyder og giver adgang til root-kontoen. I begge tilfælde påhviler kritiske opgaver som in­stal­la­tion, opsætning og ved­li­ge­hol­del­se ude­luk­ken­de lejeren. Fejl i root-området kan føre til alvorlige problemer. Men ved at følge de korrekte pro­ce­du­rer kan man skabe et ideelt grundlag for en pålidelig, højty­den­de og sikker server.

Sådan sikrer du din server trin for trin

Uanset om du vil sikre en Windows-, Ubuntu- eller Debian-server, kan der være flere generelle trin, der kan hjælpe med at skabe et solidt sik­ker­heds­grund­lag. Nedenfor har vi samlet de vigtigste trin.

Trin 1: Udfør en mini­mums­in­stal­la­tion

Allerede inden du begynder at træffe sik­ker­heds­for­an­stalt­nin­ger og kon­fi­gu­re­re din server, kan du påvirke dit projekts frem­ti­di­ge sik­ker­heds­po­ten­ti­a­le. Uanset om du bruger et Windows- eller Linux-ope­ra­tiv­sy­stem, bør du følge dette princip under in­stal­la­tio­nen: Din server bør kun indeholde den software, den har brug for til at udføre sine opgaver.

Årsagen er, at hvert eneste in­stal­le­ret program udgør en potentiel sik­ker­heds­ri­si­ko og kan påvirke ydeevnen negativt. For at minimere sår­bar­he­der bør du kun in­stal­le­re de nød­ven­di­ge sy­stem­kom­po­nen­ter og ude­luk­ken­de benytte ve­ri­fi­ce­ret tred­je­part­s­softwa­re.

Trin 2: Vælg en stærk ad­gangs­ko­de

Efter in­stal­la­tio­nen bør du som det første oprette en stærk ad­mi­ni­stra­to­r­ad­gangs­ko­de (Windows) eller root-ad­gangs­ko­de (Linux). Som standard er der ikke angivet nogen værdi, så ad­mi­ni­stra­tor­kon­to­en forbliver spærret, indtil du indtaster en ad­gangs­ko­de. De fleste ope­ra­tiv­sy­ste­mer beder dig om at oprette en konto med en ad­gangs­ko­de umid­del­bart efter in­stal­la­tio­nen, som vil fungere som din ad­mi­ni­stra­tor- eller root-login.

Hvis du har lejet din Linux-server hos en udbyder og har fået tildelt et ek­si­ste­ren­de root-login, skal du straks ændre ad­gangs­ko­den. Log ind på din server via SSH, og indtast følgende kommando i ter­mi­na­len:

passwd
bash

Når du har oprettet din sikre ad­gangs­ko­de, skal du bekræfte den. Sørg for at vælge en ad­gangs­ko­de, der er så lang som muligt og in­de­hol­der en blanding af bogstaver, spe­ci­al­tegn og tal. Det anbefales også at bruge en ad­gangs­ko­de­ma­na­ger til at gemme ad­gangs­ko­den sikkert, så du nemt kan få fat i den, hvis det bliver nød­ven­digt.

Trin 3: Skift SSH-port

Som standard bruger SSH-adgang TCP/UDP-port 22, som er for­ud­kon­fi­gu­re­ret under sy­ste­min­stal­la­tio­nen. Hackere retter ofte deres au­to­ma­ti­ske lo­g­in­for­søg mod denne port. For at mindske risikoen for uau­to­ri­se­ret adgang bør du tildele en anden port til kryp­te­re­de fjer­n­for­bin­del­ser.

For at gøre dette skal du redigere SSH-kon­fi­gu­ra­tions­fi­len sshd_config ved hjælp af en vilkårlig tek­ste­di­tor. Hvis du f.eks. vil bruge nano-editoren, skal du køre følgende kommando:

nano /etc/ssh/sshd_config
bash

Find den linje, der hedder »Port«, og udskift po­rt­num­mer 22 med et nummer efter eget valg. Husk, at der findes en række andre stan­dard­por­te, der er re­ser­ve­ret til for­skel­li­ge tjenester (f.eks. port 80 til HTTP).

Note

Inden æn­drin­ger­ne i filen sshd_config træder i kraft, skal du genstarte SSH-tjenesten. På Debian kan du gøre dette ved hjælp af kom­man­do­en etc/init.d/ssh restart. Ubuntu-brugere skal genstarte tjenesten med service ssh restart.

Trin 4: Deaktiver SSH-login for ad­mi­ni­stra­tor­kon­ti

For yder­li­ge­re at sikre din server anbefales det at de­ak­ti­ve­re SSH-login for root- eller ad­mi­ni­stra­tor­kon­to­en. Ellers kan en hacker, hvis ved­kom­men­de får fat i ad­gangs­ko­den, bruge kontoen til at få fjer­n­ad­gang.

Inden du gen­nem­fø­rer denne handling, skal du sikre dig, at der findes mindst én anden konto, der kan oprette for­bin­del­se til serveren, så du undgår at låse dig selv ude. På Linux-systemer opretter du en sådan konto ved hjælp af følgende kommando:

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

Dette opretter en ek­sem­pel­bru­ger­kon­to med navnet »user1«. Tildel derefter kontoen en sikker ad­gangs­ko­de:

passwd user1
bash

Prøv at se, om det lykkes at logge ind med den oprettede bru­ger­kon­to. Hvis det lykkes, kan du fortsætte med ho­ved­op­ga­ven: at de­ak­ti­ve­re root-kontoen. Åbn SSH-kon­fi­gu­ra­tions­fi­len sshd_config igen i dit fo­re­truk­ne tek­stre­di­ge­rings­pro­gram. Find ind­tast­nin­gen PermitRootLogin yes, og udskift den med PermitRootLogin no. Når SSH-tjenesten er gen­star­tet, vil det ikke længere være muligt at få fjer­n­ad­gang via root-kontoen.

Ved hjælp af punkt AllowGroups i kon­fi­gu­ra­tions­fi­len kan du også angive, hvilke brugere der har til­la­del­se til at oprette for­bin­del­se via SSH. Det gør du ved blot at oprette en gruppe (addgroup) og tilføje de ønskede brugere til den (adduser). Derefter skal du angive navnetden valgte gruppe i punkt sshd_config (f.eks. AllowGroups ssh_users).

Trin 5: Kon­fi­gu­rer e-mail-beskeder ved SSH-login

Uanset hvilke konkrete for­an­stalt­nin­ger du træffer for at sikre SSH-adgangen, bør du løbende overvåge alle fjernak­ti­vi­te­ter ef­ter­føl­gen­de. På den måde kan du kon­trol­le­re, at SSH-tjenesten på din server er korrekt sikret, og opdage uau­to­ri­se­re­de ad­gangs­for­søg i god tid, så du kan reagere hen­sigts­mæs­sigt. Et simpelt shell-script kan au­to­ma­tisk sende en e-mail-besked til din adresse efter hvert vellykket fjern­lo­gin til din server.

Her er et eksempel på et script /opt/shell-login.sh til Linux, som du nemt selv kan lave:

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

Tilføj derefter følgende linje til filen /etc/profile:

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

Denne indstil­ling sikrer, at scriptet kører og sender en e-mail-besked til den angivne adresse, hver gang der foretages en SSH-login. For at dette skal fungere, skal scriptet have til­la­del­sen 755 (læse- og køreret for alle brugere samt skriveret for ejeren). Du kan indstille denne til­la­del­se med følgende kommando:

chmod 755 /opt/shell-login.sh
bash

Trin 6: Blokér ubrugte porte

Åbne porte udgør generelt ikke en væsentlig sik­ker­heds­ri­si­ko, da de er nød­ven­di­ge for kom­mu­ni­ka­tio­nen med for­skel­li­ge tjenester og pro­gram­mer. For eksempel er port 80 og 443 nød­ven­di­ge for HTTP- og HTTPS-for­bin­del­ser, ligesom den SSH-port, du har valgt. Disse græn­se­fla­der kan dog blive til sår­bar­he­der, hvis de til­knyt­te­de pro­gram­mer har sik­ker­heds­fejl, som angribere kan udnytte.

Hvis du har foretaget en minimal sy­ste­min­stal­la­tion og kun har in­stal­le­ret et begrænset antal tred­je­part­s­pro­gram­mer, bør antallet af yder­li­ge­re nød­ven­di­ge porte være begrænset. For at beskytte din server mod angreb bør du blokere alle unød­ven­di­ge åbne porte i dine firewall-indstil­lin­ger. De fleste større ope­ra­tiv­sy­ste­mer in­de­hol­der som standard software til pak­ke­fil­tre­ring, såsom iptables. Dette værktøj giver dig mulighed for at definere regler til re­gu­le­ring af da­ta­tra­fik­ken, herunder angivelse af tilladte og blokerede porte.

Trin 7: Opdater softwaren re­gel­mæs­sigt

Kendte sik­ker­heds­ri­si­ci i pro­gram­mer løses typisk hurtigt gennem op­da­te­rin­ger. Ved at holde dig opdateret om op­da­te­rin­ger til dit ope­ra­tiv­sy­stem og dine in­stal­le­re­de pro­gram­mer og in­stal­le­re dem straks sikrer du optimal be­skyt­tel­se af din server. De fleste ser­ver­sy­ste­mer har desuden funk­tio­ner, der au­to­ma­tisk henter og in­stal­le­rer vigtige sik­ker­heds­op­da­te­rin­ger i bag­grun­den.

Hvis du f.eks. skal sikre en Windows-server, kan du i afsnittet »Windows Update« kon­fi­gu­re­re spe­ci­fik­ke po­li­tik­ker for au­to­ma­ti­ske op­da­te­rin­ger. Her kan du bl.a. angive, hvornår og hvor ofte der skal søges efter op­da­te­rin­ger, om de skal in­stal­le­res med det samme, og hvornår systemet skal gen­star­tes. Linux-systemer tilbyder værktøjer som apt-listchanges eller shell-scriptet apticron, der dagligt giver dig besked om nye til­gæn­ge­li­ge softwa­re­pak­ker og down­lo­a­der dem. Andre scripts som unattended-upgrades kan håndtere den au­to­ma­ti­ske in­stal­la­tion.

Note

Selv når du bruger en au­to­ma­tisk op­da­te­rings­pro­ces, skal du sørge for at holde styr på de gen­nem­før­te op­da­te­rin­ger. Det gør det lettere at iden­ti­fi­ce­re og løse even­tu­el­le fejl, der måtte opstå under op­da­te­rings­pro­ces­sen.

Trin 8: Beskyt Windows- og Linux-servere mod brute-force-angreb

En af de enkleste og mest udbredte an­grebs­me­to­der er brute-force-angrebet. Ved denne type angreb bruger hackere værktøjer til gentagne gange at gætte på ad­gangs­ko­der. Ved at indføre strenge ret­nings­linjer for ad­gangs­ko­de­hånd­te­ring kan du reducere sand­syn­lig­he­den for, at denne metode lykkes, be­ty­de­ligt.

Hvis din server imid­ler­tid tilbyder tjenester, der kræver bru­ger­lo­gin, kan du ikke gå ud fra, at alle brugere følger ret­nings­linjer­ne for stærke ad­gangs­ko­der. Ana­ly­se­værk­tø­jer kan hjælpe med at mindske denne risiko: Løsninger som Fail2ban (Linux/POSIX-systemer) eller RdpGuard (Windows) overvåger serverens logfiler, re­gi­stre­rer usæd­van­lig adfærd og blokerer mistæn­ke­li­ge IP-adresser. Du kan indstille, hvor mange mis­lyk­ke­de forsøg der må forekomme, før der blokeres, samt hvor længe blo­ke­rin­gen skal vare.

Trin 9: Brug over­våg­nings­værk­tø­jer

For at op­ret­hol­de ser­ver­sik­ker­he­den er det afgørende at sikre, at sam­spil­let mellem hardware og software fungerer som det skal. Dette er ikke en en­gangs­op­ga­ve, men et løbende ansvar, der kræver konstant op­mærk­som­hed. I be­tragt­ning af det store antal for­skel­li­ge sy­stem­pro­ces­ser anbefales det at anvende over­våg­nings­værk­tø­jer fra starten. Disse værktøjer overvåger alle ser­verak­ti­vi­te­ter og giver besked, hvis der opstår ur­e­gel­mæs­sig­he­der.

Et enkelt og bru­ger­ven­ligt program til dette formål er Monit, som kan in­stal­le­res via pak­ke­hånd­te­rin­gen på mange Linux-di­stri­bu­tio­ner. Dette open source-program (GNU-AGPL-licens) kan overvåge processer, filer, cloud-tjenester, værter, pro­gram­mer eller scripts samt sy­stemres­sour­cer som CPU- og hukom­mel­ses­for­brug. For en mere om­fat­ten­de over­våg­ning kan du overveje Nagios, et open source-værktøj, der er til­gæn­ge­ligt til Linux og Windows. Nagios kan også udvides med Nagios-plugins.

Trin 10: Kon­fi­gu­rer sik­ker­heds­ko­pi­er

De an­be­fa­le­de kon­fi­gu­ra­tions­skridt forbedrer din servers sikkerhed be­ty­de­ligt. Men selv de bedste kon­fi­gu­ra­tio­ner og om­hyg­ge­lig ved­li­ge­hol­del­se kan ikke garantere 100 % be­skyt­tel­se. En om­fat­ten­de sik­ker­heds­ko­pi­e­rings­stra­te­gi er en afgørende del af dit sik­ker­heds­sy­stem, da den giver dig mulighed for at gendanne filer i tilfælde af datatab.

Der findes mange på­li­de­li­ge værktøjer, der kan hjælpe dig med at oprette og gendanne sik­ker­heds­ko­pi­er. Et gratis al­ter­na­tiv er open source-syn­kro­ni­se­rings­værk­tø­jet rsync, som er kom­pa­ti­belt med de fleste større platforme (macOS, Windows, Linux). Dette værktøj holder din sik­ker­heds­ko­pi opdateret i realtid ved at spejle alle ændringer, der foretages i de op­rin­de­li­ge data.

Ud over en generel sik­ker­heds­ko­pi­e­ring af serveren skal du sørge for også at sik­ker­heds­ko­pi­e­re dine databaser.

Note

For at opnå maksimal sikkerhed bør sik­ker­heds­ko­pi­er­ne gemmes på eksterne lag­rings­en­he­der (f.eks. bærbare harddiske eller ekstra servere) i stedet for på den server, der skal sikres.

Gå til ho­ved­me­nu­en