Beskyttelse af Linux-server. Hvad du skal gøre først

Beskyttelse af Linux-server. Hvad du skal gøre først
Habib M’henni / Wikimedia Commons, CC BY-SA

I dag tager det kun et par minutter og et par klik at opsætte en server på hosting. Men lige efter opstarten ender den i et fjendtligt miljø, da den står åben for hele internettet som en uskyldig pige på en rockdiskotek. Den vil hurtigt blive opdaget af scannere og mange automatiserede scripts, der leder efter sårbarheder og forkerte konfigurationer. Der er flere ting, der skal gøres straks efter opstarten for at sikre grundlæggende beskyttelse.

Indhold

Ikke-root bruger

Først og fremmest skal du oprette en ikke-root bruger. Årsagen er, at brugeren root har absolutte privilegier i systemet, og hvis du giver ham mulighed for fjernadministration, så gør du halvdelen af arbejdet for hackeren ved at efterlade en gyldig brugernavn.

Derfor skal du oprette en anden bruger og deaktivere fjernadministration for root via SSH.

Den nye bruger oprettes med kommandoen useradd:

useradd [options]

Derefter tilføjes et password til denne bruger med kommandoen passwd:

passwd

Endelig skal denne bruger tilføjes til den gruppe, der har ret til at udføre kommandoer med forhøjede privilegier. sudoAfhængigt af Linux-distributionen kan det være forskellige grupper. For eksempel, i CentOS og Red Hat tilføjes brugeren til gruppen wheel:

usermod -aG wheel

I Ubuntu tilføjes han til gruppen sudo:

usermod -aG sudo

Nøgler i stedet for SSH-passwörter

Brute force eller lækage af passwords er standardangrebsvektorer, så det er bedst at deaktivere passwordbaseret autentificering i SSH (Secure Shell) og i stedet bruge nøgleautentificering.

Der findes forskellige programmer til at implementere SSH-protokollen, såsom lsh og Dropbear, men den mest populære er OpenSSH. Installation af OpenSSH-klienten på Ubuntu:

sudo apt install openssh-client

Installation på serveren:

sudo apt install openssh-server

Start af SSH-dæmonen (sshd) på serveren under Ubuntu:

sudo systemctl start sshd

Automatisk opstart af dæmonen ved hver opstart:

sudo systemctl enable sshd

Det skal bemærkes, at serverdelen af OpenSSH inkluderer klientdelen. Det vil sige, at via openssh-server du kan forbinde til andre servere. Desuden kan du fra din klientmaskine starte en SSH-tunnel fra en ekstern server til en ekstern vært, og så vil den eksterne vært betragte den fjernede server som kilden til anmodninger. En meget praktisk funktion til at maskere dit system. Læs mere i artiklen «Praktiske råd, eksempler og SSH-tunneler».

På klientmaskinen giver det normalt ikke mening at installere en fuld server for at undgå muligheden for fjernforbindelse til computeren (af sikkerhedsmæssige grunde).

Så for din nye bruger skal du først generere SSH-nøgler på den computer, som du vil logge ind på serveren fra:

ssh-keygen -t rsa

Den offentlige nøgle gemmes i en fil .pub og ser ud som en streng af tilfældige tegn, der begynder med ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Derefter skal du som root oprette en SSH-mappe i hjemmebiblioteket for brugeren på serveren og tilføje den offentlige SSH-nøgle til filen authorized_keys, ved hjælp af en teksteditor som Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Til sidst skal du sætte de korrekte tilladelser for filen:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

og ændre ejerforholdene til denne bruger:

chown -R username:username /home/username/.ssh

På klientsiden skal du angive placeringen af den hemmelige nøgle til godkendelse:

ssh-add DIR_PATH/keylocation

Nu kan du logge ind på serveren som brugeren ved hjælp af denne nøgle:

ssh [username]@hostname

Efter godkendelsen kan du bruge kommandoen scp til at kopiere filer, værktøjet sshfs til at montere filsystemer eller mapper eksternt.

Det anbefales at lave flere backup-kopier af den private nøgle, for hvis du deaktiverer adgang med kodeord og mister den, så har du slet ikke nogen mulighed for at få adgang til din egen server.

Som nævnt tidligere skal du deaktivere rodgodkendelse i SSH (af denne grund oprettede vi en ny bruger).

På CentOS/Red Hat finder vi linjen PermitRootLogin yes i konfigurationsfilen /etc/ssh/sshd_config og ændrer den:

PermitRootLogin no

På Ubuntu tilføjer vi linjen PermitRootLogin no i konfigurationsfilen 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Efter at have verificeret, at den nye bruger autentificerer med sin nøgle, kan autentificering med adgangskode deaktiveres for at minimere risikoen for lækage eller brute force-angreb. Nu skal en angriber skaffe sig den private nøgle for at få adgang til serveren.

På CentOS/Red Hat finder vi linjen , gem ændringerne og genstart Ubuntu 20.04. i konfigurationsfilen /etc/ssh/sshd_config og vi ændrer den som følger:

skal ændres til

På Ubuntu tilføjer vi linjen skal ændres til til filen 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Se vejledningen for opsætning af to-faktor autentifikation via SSH. her.

Firewall

Firewall'en sikrer, at kun den trafik, vi direkte har givet tilladelse til, når serveren på de specifikke porte. Dette beskytter mod udnyttelse af porte, der tilfældigvis er blevet aktiveret med andre tjenester, hvilket betydeligt reducerer angrebsfladen.

Før installation af firewall'en skal vi sikre, at SSH er på undtagelseslisten og ikke bliver blokkeret. Ellers kan vi ikke tilslutte os serveren efter at have startet firewall'en.

Ubuntu-distributionen leveres med Uncomplicated Firewall (ufw), mens CentOS/Red Hat leveres med firewalld.

Tilladelse af SSH i firewall'en på Ubuntu:

sudo ufw allow ssh

På CentOS/Red Hat bruger vi kommandoen firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Efter denne procedure kan firewall'en startes.

På CentOS/Red Hat starter vi systemd-tjenesten for firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

På Ubuntu bruger vi følgende kommando:

sudo ufw enable

Fail2Ban

Service Fail2Ban analyserer logfilerne på serveren og tæller antallet af adgangsforsøg fra hver IP-adresse. I indstillingerne er der angivet regler for, hvor mange adgangsforsøg der er tilladt over et bestemt interval - hvorefter den pågældende IP-adresse blokeres i en bestemt tidsperiode. For eksempel tillader vi 5 mislykkedes SSH-autentificationsforsøg i en periode på 2 timer, hvorefter den pågældende IP-adresse blokeres i 12 timer.

Installation af Fail2Ban på CentOS og Red Hat:

sudo yum install fail2ban

Installation på Ubuntu og Debian:

sudo apt install fail2ban

Aktivering:

systemctl start fail2ban
systemctl enable fail2ban

Programmet har to konfigurationsfiler: /etc/fail2ban/fail2ban.conf og /etc/fail2ban/jail.conf. Begrænsninger for ban gives i den anden fil.

Jail for SSH er aktiveret som standard med de standardindstillinger (5 forsøg, interval 10 minutter, ban i 10 minutter).

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5

Udover SSH kan Fail2Ban også beskytte andre tjenester på webserveren nginx eller Apache.

Automatiske sikkerhedsopdateringer

Som bekendt findes der konstant nye sårbarheder i alle programmer. Når information offentliggøres, tilføjes exploits til populære exploit-pakker, som hackers og unge bruger massivt til at scanne alle servere i rækkefølge. Derfor er det meget vigtigt at installere sikkerhedsopdateringer, så snart de bliver tilgængelige.

På Ubuntu-serveren er automatiske sikkerhedsopdateringer aktiveret i standardkonfigurationen, så der er ikke behov for yderligere handlinger.

På CentOS/Red Hat skal du installere applikationen dnf-automatic og aktivere timeren:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Kontrol af timeren:

sudo systemctl status dnf-automatic.timer

Ændring af standardporte

SSH blev udviklet i 1995 for at erstatte telnet (port 23) og ftp (port 21), derfor valgte programmets forfatter Tatu Ylönen port 22 som standard, og det blev godkendt i IANA.

Naturligvis er alle ondsindede aktører opmærksomme på, hvilken port SSH kører på — og de scanner den sammen med andre standardporte for at finde ud af versionsnummeret på softwaren, for at teste standard root-adgangskoder osv.

Ændring af standardporte — obfuskation — reducerer betydeligt mængden af støjtrafik, størrelsen på logfilerne og belastningen på serveren, samt mindsker angrebsoverfladen. Selvom nogle kritisere denne metode som "beskyttelse gennem uklarhed" (security through obscurity). Årsagen er, at denne teknik står i kontrast til grundlæggende arkitektonisk sikkerhed. Derfor angiver det amerikanske National Institute of Standards and Technology i "Server Security Guide" behovet for en åben serverarkitektur: "Systemets sikkerhed skal ikke afhænge af hemmeligheden bag implementeringen af dens komponenter," står der i dokumentet.

Teoretisk set er ændring af standardporte i strid med praksis med åben arkitektur. Men i praksis reduceres mængden af skadelig trafik virkelig, så det er en enkel og effektiv foranstaltning.

Portnummeret kan konfigureres ved at ændre direktivet Port 22 i konfigurationsfilen /etc/ssh/sshd_config. Det angives også som parameter -p i sshd. SSH-klient og programmerne sftp understøtter også parameteren -p.

Parameter -p som kan bruges til at angive portnummeret ved tilslutning med kommandoen ssh i Linux. I sftp og scp bruges parameteren -P (overskrift P). Kommandoen i kommandolinjen overskriver enhver værdi i konfigurationsfilerne.

Hvis der er mange servere, kan næsten alle disse handlinger til beskyttelse af Linux-serveren automatiseres i et script. Men hvis der kun er én server, er det bedst at overholde processen manuelt.

Annoncering

Bestil og kom i gang med det samme! Oprettelse af VDS i enhver konfiguration og med ethvert operativsystem inden for et minut. Den maksimale konfiguration giver mulighed for at køre videre — 128 kerner CPU, 512 GB RAM, 4000 GB NVMe. Episk 🙂

Beskyttelse af Linux-server. Hvad du skal gøre først

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster