7 steg för att säkra din Linux-server

denna primer kommer att introducera dig till grundläggande Linux-server säkerhet. Medan det fokuserar på Debian / Ubuntu kan du tillämpa allt som presenteras här på andra Linux-distributioner. Jag uppmuntrar dig också att undersöka detta material och utöka det där det är tillämpligt.

uppdatera din server

det första du bör göra för att säkra din server är att uppdatera de lokala repositorierna och uppgradera operativsystemet och installerade applikationer genom att använda de senaste korrigeringarna.

på Ubuntu och Debian:

$ sudo apt update && sudo apt upgrade -y

på Fedora, CentOS eller RHEL:

$ sudo dnf upgrade

skapa ett nytt privilegierat användarkonto

skapa sedan ett nytt användarkonto. Du bör aldrig logga in på din server som root. Skapa istället ditt eget konto (”<användare>”), ge det sudo-rättigheter och använd det för att logga in på din server.

börja med att skapa en ny användare:

$ adduser <username>

ge ditt nya användarkonto sudo rättigheter genom att lägga till (- a) sudo-gruppen (- G) till användarens gruppmedlemskap:

$ usermod -a -G sudo <username>

Ladda upp din SSH-nyckel

du vill använda en SSH-nyckel för att logga in på din nya server. Du kan ladda upp din förgenererade SSH-nyckel till din nya server med kommandot ssh-copy-id:

$ ssh-copy-id <username>@ip_address

nu kan du logga in på din nya server utan att behöva skriva in ett lösenord.

säker SSH

gör sedan dessa tre ändringar:

  • inaktivera SSH-lösenordsautentisering
  • begränsa root från att logga in på distans
  • begränsa åtkomsten till IPv4 eller IPv6

öppna / etc / ssh / sshd_config med din textredigerare och se till att dessa rader:

PasswordAuthentication yes
PermitRootLogin yes

se ut så här:

PasswordAuthentication no
PermitRootLogin no

begränsa sedan SSH-tjänsten till antingen IPv4 eller IPv6 genom att ändra alternativet AddressFamily. För att ändra det för att bara använda IPv4 (vilket borde vara bra för de flesta) gör denna förändring:

AddressFamily inet

starta om SSH-tjänsten för att aktivera dina ändringar. Observera att det är bra att ha två aktiva anslutningar till din server innan du startar om SSH-servern. Med den extra anslutningen kan du fixa vad som helst om omstart skulle gå fel.

på Ubuntu:

$ sudo service sshd restart

på Fedora eller CentOS eller något som använder Systemd:

$ sudo systemctl restart sshd

aktivera en brandvägg

nu måste du installera en brandvägg, aktivera den och konfigurera den bara för att tillåta nätverkstrafik som du anger. Okomplicerad brandvägg (UFW) är ett lättanvänt gränssnitt till iptables som förenklar processen för att konfigurera en brandvägg.

du kan installera UFW med:

$ sudo apt install ufw

som standard nekar UFW alla inkommande anslutningar och tillåter alla utgående anslutningar. Det betyder att alla program på din server kan nå internet, men allt som försöker nå din server kan inte anslutas.

kontrollera först att du kan logga in genom att aktivera åtkomst till SSH, HTTP och HTTPS:

$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow https

aktivera sedan UFW:

$ sudo ufw enable

du kan se vilka tjänster som är tillåtna och nekade med:

$ sudo ufw status

om du någonsin vill inaktivera UFW kan du göra det genom att skriva:

$ sudo ufw disable

du kan också använda brandvägg-cmd, som redan är installerad och integrerad i vissa distributioner.

installera Fail2ban

Fail2ban är ett program som undersöker serverloggar letar efter upprepade eller automatiserade attacker. Om någon hittas kommer den att ändra brandväggen för att blockera angriparens IP-adress antingen permanent eller under en viss tid.

du kan installera Fail2ban genom att skriva:

$ sudo apt install fail2ban -y

kopiera sedan den medföljande konfigurationsfilen:

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

och starta om Fail2ban:

$ sudo service fail2ban restart

det är allt som finns till det. Programvaran kommer kontinuerligt att undersöka loggfiler söker attacker. Efter ett tag kommer appen att bygga upp en lista över förbjudna IP-adresser. Du kan visa den här listan genom att begära aktuell status för SSH-tjänsten med:

$ sudo fail2ban-client status ssh

ta bort oanvända nätverksinriktade tjänster

nästan alla Linux-serveroperativsystem har några nätverksinriktade tjänster aktiverade. Du vill behålla de flesta av dem. Det finns dock några som du kanske vill ta bort. Du kan se alla nätverkstjänster som körs med kommandot ss:

$ sudo ss -atpu

utgången från ss kommer att variera beroende på ditt operativsystem. Detta är ett exempel på vad du kan se. Det visar att SSH (sshd) och ngnix (nginx) tjänster lyssnar och redo för anslutning:

tcp LISTEN 0 128 *:http *:* users:(("nginx",pid=22563,fd=7))
tcp LISTEN 0 128 *:ssh *:* users:(("sshd",pid=685,fd=3))

hur du tar bort en oanvänd tjänst (”<service_name>”) kommer att variera beroende på ditt operativsystem och pakethanteraren den använder.

för att ta bort en oanvänd tjänst på Debian / Ubuntu:

$ sudo apt purge <service_name>

för att ta bort en oanvänd tjänst på Red Hat/CentOS:

$ sudo yum remove <service_name>

kör ss-atup igen för att verifiera att de oanvända tjänsterna inte längre är installerade och körs.

slutliga tankar

denna handledning presenterar det minsta som behövs för att härda en Linux-server. Ytterligare säkerhetslager kan och bör aktiveras beroende på hur en server används. Dessa lager kan innehålla saker som enskilda applikationskonfigurationer, programvara för intrångsdetektering och aktivering av åtkomstkontroller, t.ex. tvåfaktorsautentisering.

Lämna ett svar

Din e-postadress kommer inte publiceras.