Hur man säkrar en server
Att konfigurera din server på ett säkert sätt är en av de viktigaste uppgifterna för administratörer. Detta gäller inte bara för självhanterade servrar utan även för hyrd hårdvara. Åtgärder som lösenordsskydd, robusta SSH-inställningar och regelbundna uppdateringar skapar ett omfattande säkerhetspaket.
Vem ansvarar för säker serverkonfiguration?
Att ha en egen server ger maximal frihet när det gäller konfiguration. Ett bra alternativ är rotservrar, som många leverantörer erbjuder och ger åtkomst till root-konton. I båda fallen faller kritiska uppgifter som installation, strukturering och underhåll helt på hyresgästen. Fel i rotområdet kan leda till betydande problem. Men genom att följa rätt procedurer kan man skapa en idealisk grund för en pålitlig, högpresterande 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 universella åtgärder som kan hjälpa dig att skapa en solid säkerhetsgrund. Nedan sammanfattar vi de viktigaste åtgärderna.
Steg 1: Utför en minimal installation
Redan innan du börjar vidta skyddsåtgärder och konfigurera din server kan du påverka ditt projekts framtida säkerhetspotential. Oavsett om du använder ett Windows- eller Linux-operativsystem bör du tillämpa följande princip under installationen: Din server bör endast innehålla den programvara som behövs för att utföra dess uppgifter.
Anledningen är att varje installerad applikation utgör en potentiell säkerhetsrisk och kan påverka prestandan negativt. För att minimera sårbarheterna bör du endast installera nödvändiga systemkomponenter och uteslutande använda verifierad programvara från tredje part.
Steg 2: Ange ett starkt lösenord
Efter installationen bör du först och främst ställa in ett starkt administratörslösenord (Windows) eller root-lösenord (Linux). Som standard är inget värde definierat, så administratörskontot förblir blockerat tills du anger ett lösenord. De flesta operativsystem uppmanar dig att skapa ett konto med ett lösenord direkt efter installationen, som kommer att fungera som ditt administratörs- eller root-inloggningskonto.
Om du har hyrt din Linux-server från en leverantör och fått ett befintligt root-inloggningsnamn, ändra lösenordet omedelbart. Logga in på din server via SSH och ange följande kommando i terminalen:
passwdbashNär du har installerat 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 innehåller en blandning av bokstäver, specialtecken och siffror. Det rekommenderas också att använda en lösenordshanterare för att lagra lösenordet 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örkonfigurerad under systeminstallationen. Hackare riktar ofta sina automatiska inloggningsförsök mot denna port. För att minska risken för obehörig åtkomst bör du tilldela en annan port för krypterade fjärranslutningar.
För att göra detta redigerar du SSH-konfigurationsfilen sshd_config med valfri textredigerare. Om du till exempel vill använda nano-redigeraren kör du följande kommando:
nano /etc/ssh/sshd_configbashSök efter raden märkt “Port” och ersätt portnummer 22 med det nummer du vill använda. Tänk på att det finns flera andra standardportar som är reserverade för olika tjänster (t.ex. port 80 för HTTP).
Innan ändringarna 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: Inaktivera SSH-inloggning för administratörskonton
För att ytterligare säkra din server rekommenderas det att inaktivera SSH-inloggning för root- eller administratörskontot. Annars kan en angripare som får tillgång till lösenordet använda kontot för fjärråtkomst.
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 user1bashDetta skapar ett exempel på ett användarkonto med namnet “user1”. Tilldela sedan ett säkert lösenord till kontot:
passwd user1bashTesta om inloggningen med det skapade användarkontot fungerar. Om det fungerar, fortsätt med huvuduppgiften: inaktivera root-kontot. Öppna SSH-konfigurationsfilen sshd_config igen med din favoritredigerare. Leta reda på posten PermitRootLogin yes och ersätt den med PermitRootLogin no. Efter att SSH-tjänsten har startats om kommer fjärråtkomst för root-kontot inte längre att vara möjlig.
Med hjälp av post AllowGroups i konfigurationsfilen 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 gruppnamnet i sshd_config (t.ex. AllowGroups ssh_users).
Steg 5: Ställ in e-postaviseringar för SSH-inloggningar
Oavsett vilka specifika åtgärder du vidtar för att säkra SSH-åtkomst bör du kontinuerligt övervaka alla fjärraktiviteter efteråt. Detta säkerställer att du kan verifiera att SSH-tjänsten på din server är korrekt säkrad och upptäcka obehöriga åtkomstförsök i ett tidigt skede, så att du kan reagera på lämpligt sätt. Ett enkelt skript kan automatiskt skicka ett meddelande via e-post till din adress efter varje lyckad fjärrinloggning 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
fingertxtLägg sedan till följande rad i filen /etc/profile:
/opt/shell-login.sh | mailx -s "SSH login on the server" youremail@example.comtxtDenna post säkerställer att skriptet körs och skickar ett meddelande via e-post till den angivna adressen varje gång en SSH-inloggning sker. För att detta ska fungera måste skriptet tilldelas behörighet 755 (läs- och körbehörighet för alla användare och skrivbehörighet för ägaren). Du kan ställa in denna behörighet med följande kommando:
chmod 755 /opt/shell-login.shbashSteg 6: Blockera oanvända portar
Öppna portar utgör i allmänhet inte någon betydande säkerhetsrisk, eftersom de är nödvändiga för kommunikation med olika tjänster och applikationer. Till exempel är portarna 80 och 443 nödvändiga för HTTP- och HTTPS-anslutningar, liksom den SSH-port du valt. Dessa gränssnitt kan dock bli sårbara om de associerade programmen har säkerhetsbrister som angripare kan utnyttja.
Om du har utfört en minimal systeminstallation och endast installerat ett begränsat antal tredjepartsprogram bör antalet ytterligare 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 brandväggsinställningar. De flesta större operativsystem har som standard programvara för paketfiltrering, till exempel iptables. Med detta verktyg kan du definiera regler för att reglera datatrafiken, inklusive att ange tillåtna och blockerade portar.
Steg 7: Uppdatera programvaran regelbundet
Kända säkerhetsproblem i applikationer åtgärdas vanligtvis snabbt med uppdateringar. Genom att hålla dig informerad om uppdateringar för ditt operativsystem och installerade applikationer och installera dem omedelbart säkerställer du optimalt skydd för din server. De flesta serversystem erbjuder också funktioner för att automatiskt ladda ner och installera viktiga säkerhetsuppdateringar i bakgrunden.
Om du till exempel säkrar en Windows-server kan du i avsnittet Windows Update konfigurera specifika policyer för automatiska uppdateringar. Detta inkluderar att definiera när och hur ofta uppdateringar ska kontrolleras, om de ska installeras omedelbart 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 tillgängliga programpaket och ladda ner dem. Ytterligare skript som unattended-upgrades kan hantera automatisk installation.
Även när du använder en automatisk uppdateringsprocess bör du se till att hålla reda på vilka uppdateringar som har genomförts. Detta hjälper dig att identifiera och åtgärda fel som kan uppstå under uppdateringsprocessen.
Steg 8: Skydda Windows- och Linux-servrar från brute force-attacker
En av de enklaste och vanligaste attackmetoderna ä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 implementera starka rutiner för lösenordshantering kan du avsevärt minska sannolikheten för att denna metod lyckas.
Om din server tillhandahåller tjänster som kräver inloggning kan du dock inte förutsätta att alla användare följer strikta lösenordsrutiner. Analysverktyg 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 misstänkta IP-adresser. Du kan konfigurera antalet tillåtna misslyckade försök innan blockering sker och hur länge blockeringen ska gälla.
Steg 9: Använd övervakningsverktyg
För att upprätthålla serversäkerheten är det viktigt att se till att interaktionen mellan hårdvara och mjukvara fungerar som avsett. Detta är inte en engångsuppgift utan ett fortlöpande ansvar som kräver ständig uppmärksamhet. Med tanke på det stora antalet olika systemprocesser är det lämpligt att använda övervakningsverktyg från början. Dessa verktyg spårar all serveraktivitet och varnar dig om avvikelser.
Ett enkelt och lättkonfigurerat program för detta ändamål är Monit, som kan installeras via pakethanteraren på många Linux-distributioner. Denna öppen källkodsapplikation (GNU-AGPL-licens) kan övervaka processer, filer, moln, värdar, program eller skript, samt systemresurser som CPU- och minnesanvändning. För mer omfattande övervakning kan du överväga Nagios, ett öppen källkodsverktyg som finns tillgängligt för Linux och Windows. Nagios kan också utökas med Nagios-plugins.
Steg 10: Konfigurera säkerhetskopior
De rekommenderade konfigurationsstegen förbättrar din servers säkerhet avsevärt. Men även de bästa konfigurationerna och noggrant underhåll kan inte garantera 100 % skydd. En omfattande säkerhetskopieringsstrategi är en viktig del av ditt säkerhetssystem, som gör att du kan återställa filer vid dataförlust.
Det finns många robusta verktyg som hjälper dig att skapa och återställa säkerhetskopior. Ett gratisalternativ är det öppna källkodsverktyget rsync, som är kompatibelt med de flesta större plattformar (macOS, Windows, Linux). Detta verktyg håller din säkerhetskopia uppdaterad i realtid genom att spegla alla ändringar som görs i originaldata.
Förutom en allmän serverbackup bör du även säkerhetskopiera dina databaser.
För maximal säkerhet bör du lagra säkerhetskopior på externa lagringsenheter (t.ex. bärbara hårddiskar, extra servrar) istället för på den server som ska skyddas.

