
, 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 og , men den mest populære er OpenSSH. Installation af OpenSSH-klienten på Ubuntu:
sudo apt install openssh-clientInstallation på serveren:
sudo apt install openssh-serverStart af SSH-dæmonen (sshd) på serveren under Ubuntu:
sudo systemctl start sshdAutomatisk 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 .
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_keysvim /home/user_name/.ssh/authorized_keysTil sidst skal du sætte de korrekte tilladelser for filen:
chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keysog ændre ejerforholdene til denne bruger:
chown -R username:username /home/username/.sshPå klientsiden skal du angive placeringen af den hemmelige nøgle til godkendelse:
ssh-add DIR_PATH/keylocationNu kan du logge ind på serveren som brugeren ved hjælp af denne nøgle:
ssh [username]@hostnameEfter godkendelsen kan du bruge kommandoen scp til at kopiere filer, værktøjet 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.confEfter 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.confSe vejledningen for opsætning af to-faktor autentifikation via SSH. .
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 (), mens CentOS/Red Hat leveres med .
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 --permanentEfter denne procedure kan firewall'en startes.
På CentOS/Red Hat starter vi systemd-tjenesten for firewalld:
sudo systemctl start firewalld
sudo systemctl enable firewalldPå Ubuntu bruger vi følgende kommando:
sudo ufw enable
Fail2Ban
Service 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 fail2banInstallation på Ubuntu og Debian:
sudo apt install fail2banAktivering:
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 og aktivere timeren:
sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timerKontrol 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 , 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 (security through obscurity). Årsagen er, at denne teknik står i kontrast til grundlæggende . Derfor angiver det amerikanske National Institute of Standards and Technology i 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 . Det angives også som parameter -p i . SSH-klient og programmerne understøtter også parameteren -p.
Parameter -p som kan bruges til at angive portnummeret ved tilslutning med kommandoen ssh i Linux. I 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! 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 🙂
Kilde: habr.com
