Första 10 minuter på en server

By . Latest revision .

Vi kommer i denna artikel titta på hur vi skapar en ny användare och säkrar upp en server.

Med utgångspunkt i artiklar som My First 5 Minutes On A Server; Or, Essential Security for Linux Servers och My First 10 Minutes On a Server - Primer for Securing Ubuntu ska vi i följande stycke titta på hur vi säkrar upp en Linux-baserad server av Ubuntu eller Debian variant.

#Förutsättning

Du har en server med ett operativsystem installerat.

#Logga in på servern

Vi loggar in på servern genom att använda SSH via terminalen med kommandot. ssh -i ~/.ssh/azure azureuser@[IP] ersätt din [IP] med den IP som din server har eller ditt domännamn.

När du är inne på servern byt till root användaren med sudo su.

#Lösenord

Än så länge har vi inte ens ett lösenord till vår azureuser användare så låt oss se till att sätter ett lösenord. Välj ett säkert lösenord och med säkert lösenord menas ett slumpat och komplext lösenord.

Skriv följande kommando och följ instruktionerna.

passwd

#Uppdatera servern

Nästa steg är att uppdatera serverns programvara till senaste version genom att använda verktyget apt-get. Men först vill vi berätta för Debian vilken teckenkodning (locale) som ska användas, annars får vi en varning av apt-get.

localectl set-locale LANG=en_US.UTF-8
apt-get update
apt-get upgrade

#Skapa din egen användare

Vi vill aldrig logga in som azureuser eller root. azureuser är standard namnet för alla servrar som skapas i Azure, så hackare försöker använda det namnet för att komma åt vår server. root användaren har för mycket rättigheter. Så vi skapar en egen användare deploy med följande kommandon. Du kan byta ut deploy mot vad som helst, men då ska du göra det i alla följande kommandon. Senare ska vi ta bort azureuser användaren.

useradd -s /bin/bash -m deploy
mkdir /home/deploy/.ssh
chmod 700 /home/deploy/.ssh

I useradd används -s /bin/bash för att välja terminal åt användaren. -m gör att en home mapp skapas åt användaren.

#Stänga av inloggning med lösenord

Lösenord kan knäckas.

Därför använder vi istället SSH nycklar för att autentisera oss mot servern. Skapa och öppna filen med kommandot nano /home/deploy/.ssh/authorized_keys och lägg innehållet av din lokala .ssh/azure.pub nyckel i den filen på en rad.

När du har lagt till nyckeln kör du följande två kommandon för att sätta korrekta rättigheter på katalogen och filen.

chmod 400 /home/deploy/.ssh/authorized_keys
chown deploy:deploy /home/deploy -R

Testa nu att logga in i ett nytt terminalfönster med kommandot ssh deploy@[IP]. Vi har kvar terminal fönstret där vi loggade in som azureuser om något skulle gå fel.

Vi skapar sedan ett lösenord för deploy användaren från azureuser terminalfönstret, passwd deploy, använd igen ett långt och slumpmässigt lösenord. Och vi lägger till deploy som sudo användare med kommandot usermod -aG sudo deploy.

Som vi sagt tidigare vill vi bara kunna logga in med SSH nycklar. Vi gör detta genom att ändra tre rader i filen /etc/ssh/sshd_config. Öppna filen med din texteditor på din server till exempel nano med kommandot nano /etc/ssh/sshd_config.

Hitta raderna nedan och se till att ändra från yes till no. Raderna ligger inte på samma ställe i filer, så ibland får man leta en liten stund. Den sista raden nedan får du skriva in själv.

PermitRootLogin no
PasswordAuthentication no
AllowUsers deploy

Spara filen och starta om SSH med hjälp av kommandot service ssh restart. Testa nu att logga ut och in i ditt andra terminal fönster där du tidigare var inloggat som deploy.

#Ta bort azureuser

Först stänger vi ner uppkopplingen för användaren azureuser genom att skriva exit i terminalfönstret. Alla kommandon vi kommer köra från och med nu körs som användaren deploy.

Logga in på servern igen som deploy användaren och kör kommandot:

sudo userdel -r azureuser

#Brandvägg

Vi använder oss av brandväggen ufw för att stänga och öppna portar till vår server. Installera med kommandot sudo apt-get install ufw.

Vi vill nu öppna upp för trafik på 3 portar 22 för SSH, 80 för HTTP och 443 för HTTPS. Vi gör det med hjälp av följande kommandon.

sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw disable
sudo ufw enable

#Automagiska uppdateringar

Vi vill inte hålla på att manuellt uppdatera vår server, men vi vill inte heller sakna en patch när de kommer så vi kommer använda oss av verktyget unattended-upgrades. Vi installerar med sudo apt-get install unattended-upgrades.

Uppdatera filen /etc/apt/apt.conf.d/10periodic så den innehåller nedanstående.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Uppdatera även filen /etc/apt/apt.conf.d/50unattended-upgrades så den ser ut som nedan.

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESM:${distro_codename}";
    //"${distro_id}:${distro_codename}-updates";
};

#fail2ban

Vårt sista steg är att installera verktyget fail2ban som används för att automatiskt kolla loggfiler och stoppa aktivitet som vi inte vill ha på vår server. Vi installerar och låter ursprungsinställningarna göra sitt jobb. Vi installerar med sudo apt-get install fail2ban.

#Installera tmux

tmux är ett oerhört trevligt verktyg att använda om man vill komma tillbaka till samma vy när man loggar in på en server från ett antal olika servrar. Installera med kommandot sudo apt-get install tmux.

Du öppnar en tmux session genom att skriva tmux i terminalen. I sitt grundutförande är Ctrl-b kommandotangenten, du trycker alltså in Ctrl-b släpper och en knapp till för att utföra kommandot. Du kan skapa nya fönster med Ctrl-b följd av c, du kopplar ner från sessionen med Ctrl-b d och vill du tillbaka till sessionen kan du skriva tmux a -t 0. Bra och smidigt när man vill logga in från flera olika datorer, men ändå se samma bild.

#Installera git

För att lättare kunna driftsätta våra git-repon installerar vi även git med kommandot sudo apt-get install git.

#Avslutningsvis

Nu har ni en server som är redo att användas till det mesta.

#Revision history

  • 2022-10-20: (A, aar) Första utgåvan.

Document source.

Category: devops, verktyg.