Linux-serverbeskyttelse. Hva du skal gjøre først

Linux-serverbeskyttelse. Hva du skal gjøre først
Habib M'henni/Wikimedia Commons, CC BY-SA

Nå for tiden er det å heve en server på en hosting et spørsmål om et par minutter og noen få museklikk. Men umiddelbart etter lanseringen befinner han seg i et fiendtlig miljø, fordi han er åpen for hele Internett som en uskyldig jente på et rockerdiskotek. Skannere vil raskt finne det og oppdage tusenvis av automatisk skriptede roboter som leter etter sårbarheter og feilkonfigurasjoner. Det er et par ting du bør gjøre rett etter lansering for å sikre grunnleggende beskyttelse.

Innhold

Ikke-rootbruker

Det første trinnet er å opprette en ikke-rootbruker for deg selv. Poenget er at brukeren root absolutte privilegier i systemet, og hvis du tillater ham ekstern administrasjon, vil du gjøre halve jobben for hackeren, og etterlate et gyldig brukernavn for ham.

Derfor må du opprette en annen bruker, og deaktivere ekstern administrasjon via SSH for root.

En ny bruker startes av kommandoen useradd:

useradd [options] <username>

Deretter legges det til et passord for den med kommandoen passwd:

passwd <username>

Til slutt må denne brukeren legges til en gruppe som har rett til å utføre forhøyede kommandoer sudo. Avhengig av Linux-distribusjonen kan disse være forskjellige grupper. For eksempel, i CentOS og Red Hat blir brukeren lagt til gruppen wheel:

usermod -aG wheel <username>

I Ubuntu legges det til gruppen sudo:

usermod -aG sudo <username>

Nøkler i stedet for SSH-passord

Brute force eller passordlekkasjer er en standard angrepsvektor, så det er best å deaktivere passordautentisering i SSH (Secure Shell) og bruke nøkkelautentisering i stedet.

Det finnes ulike programmer for implementering av SSH-protokollen, som f.eks lsh и dropbear, men den mest populære er OpenSSH. Installere OpenSSH-klienten på Ubuntu:

sudo apt install openssh-client

Serverinstallasjon:

sudo apt install openssh-server

Starte SSH-demonen (sshd) på Ubuntu-serveren:

sudo systemctl start sshd

Start demonen automatisk ved hver oppstart:

sudo systemctl enable sshd

Det skal bemerkes at serverdelen av OpenSSH inkluderer klientdelen. Det vil si gjennom openssh-server du kan koble til andre servere. Fra klientmaskinen din kan du dessuten starte en SSH-tunnel fra en ekstern server til en tredjepartsvert, og så vil tredjepartsverten vurdere den eksterne serveren som kilden til forespørsler. En veldig nyttig funksjon for å maskere systemet ditt. Se artikkelen for detaljer "Praktiske tips, eksempler og SSH-tunneler".

På en klientmaskin gir det vanligvis ingen mening å installere en fullverdig server for å forhindre muligheten for ekstern tilkobling til en datamaskin (av sikkerhetshensyn).

Så, for den nye brukeren din, må du først generere SSH-nøkler på datamaskinen du får tilgang til serveren fra:

ssh-keygen -t rsa

Den offentlige nøkkelen er lagret i en fil .pub og ser ut som en streng med tilfeldige tegn som begynner med ssh-rsa.

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

Deretter, fra under roten, oppretter du en SSH-katalog på serveren i brukerens hjemmekatalog og legger til den offentlige SSH-nøkkelen til filen authorized_keys, ved å bruke et tekstredigeringsprogram som Vim:

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

vim /home/user_name/.ssh/authorized_keys

Til slutt, angi de riktige tillatelsene for filen:

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

og endre eierskap til denne brukeren:

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

På klientsiden må du spesifisere plasseringen av den hemmelige nøkkelen for autentisering:

ssh-add DIR_PATH/keylocation

Nå kan du logge inn på serveren under brukernavnet med denne nøkkelen:

ssh [username]@hostname

Etter autorisasjon kan du bruke scp-kommandoen til å kopiere filer, verktøyet sshfs å eksternt montere et filsystem eller kataloger.

Det anbefales å lage flere sikkerhetskopier av den private nøkkelen, fordi hvis du deaktiverer passordautentisering og mister den, vil du ikke ha noen måte å logge på din egen server i det hele tatt.

Som nevnt ovenfor, i SSH må du deaktivere autentisering for root (dette er grunnen til at vi startet en ny bruker).

På CentOS/Red Hat finner vi linjen PermitRootLogin yes i konfigurasjonsfilen /etc/ssh/sshd_config og endre det:

PermitRootLogin no

På Ubuntu legg til linjen PermitRootLogin no til konfigurasjonsfilen 10-my-sshd-settings.conf:

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

Etter å ha bekreftet at den nye brukeren autentiserer med nøkkelen sin, kan du deaktivere passordautentisering for å eliminere risikoen for passordlekkasje eller brute force. Nå, for å få tilgang til serveren, må en angriper få en privat nøkkel.

På CentOS/Red Hat finner vi linjen PasswordAuthentication yes i konfigurasjonsfilen /etc/ssh/sshd_config og endre det slik:

PasswordAuthentication no

På Ubuntu legg til linjen PasswordAuthentication no å lagre 10-my-sshd-settings.conf:

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

For instruksjoner om hvordan du aktiverer tofaktorautentisering via SSH, se her.

Brannmur

Brannmuren sørger for at kun trafikken på portene du direkte tillater vil gå til serveren. Dette beskytter mot utnyttelse av porter som ved et uhell er aktivert med andre tjenester, noe som i stor grad reduserer angrepsoverflaten.

Før du installerer en brannmur, må du sørge for at SSH er inkludert i ekskluderingslisten og ikke vil bli blokkert. Ellers, etter å ha startet brannmuren, vil vi ikke kunne koble til serveren.

Ubuntu-distribusjon kommer med ukomplisert brannmur (ufw), og med CentOS/Red Hat - brannmur.

Tillater SSH i brannmuren på Ubuntu:

sudo ufw allow ssh

På CentOS/Red Hat bruk kommandoen firewall-cmd:

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

Etter denne prosedyren kan du starte brannmuren.

På CentOS/Red Hat, start systemd-tjenesten for brannmur:

sudo systemctl start firewalld
sudo systemctl enable firewalld

På Ubuntu bruker vi følgende kommando:

sudo ufw enable

Feil2Ban

Verktøy Feil2Ban analyserer logger på serveren og teller antall tilgangsforsøk fra hver IP-adresse. Innstillingene spesifiserer reglene for hvor mange tilgangsforsøk som er tillatt for et visst intervall – hvoretter denne IP-adressen blokkeres i en spesifisert tidsperiode. La oss for eksempel tillate 5 mislykkede SSH-autentiseringsforsøk innen 2 timer, og deretter blokkere den oppgitte IP-adressen i 12 timer.

Installere Fail2Ban på CentOS og Red Hat:

sudo yum install fail2ban

Installasjon på Ubuntu og Debian:

sudo apt install fail2ban

Lansering:

systemctl start fail2ban
systemctl enable fail2ban

Programmet har to konfigurasjonsfiler: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Forbudsbegrensninger er spesifisert i den andre filen.

Jail for SSH er aktivert som standard med standardinnstillinger (5 forsøk, intervall 10 minutter, utestengelse i 10 minutter).

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

I tillegg til SSH kan Fail2Ban beskytte andre tjenester på nginx- eller Apache-nettserveren.

Automatiske sikkerhetsoppdateringer

Som du vet, finnes det stadig nye sårbarheter i alle programmer. Etter at informasjonen er publisert, blir utnyttelser lagt til populære utnyttelsespakker, som brukes massivt av hackere og tenåringer når de skanner alle servere på rad. Derfor er det svært viktig å installere sikkerhetsoppdateringer så snart de dukker opp.

På Ubuntu-serveren er automatiske sikkerhetsoppdateringer aktivert som standard, så ingen ytterligere handling er nødvendig.

På CentOS/Red Hat må du installere applikasjonen dnf-automatisk og slå på timeren:

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

Timersjekk:

sudo systemctl status dnf-automatic.timer

Endre standardportene

SSH ble utviklet i 1995 for å erstatte telnet (port 23) og ftp (port 21), så forfatteren av programmet, Tatu Iltonen valgt port 22 som standard, og er godkjent av IANA.

Naturligvis er alle angripere klar over hvilken port SSH kjører på - og skanner den sammen med resten av standardportene for å finne programvareversjonen, sjekke standard root-passord, og så videre.

Endring av standardporter - obfuskasjon - flere ganger reduserer mengden søppeltrafikk, størrelsen på loggene og belastningen på serveren, og reduserer også angrepsoverflaten. Selv om noen kritiser denne metoden for "beskyttelse gjennom uklarhet" (sikkerhet gjennom uklarhet). Årsaken er at denne teknikken er i motsetning til det grunnleggende arkitektonisk vern. Derfor har for eksempel US National Institute of Standards and Technology i "Tjenersikkerhetsveiledning" indikerer behovet for en åpen serverarkitektur: "Sikkerheten til et system bør ikke stole på hemmeligheten rundt implementeringen av dets komponenter," heter det i dokumentet.

Teoretisk sett er endring av standardportene i strid med praksisen med åpen arkitektur. Men i praksis reduseres faktisk mengden ondsinnet trafikk, så dette er et enkelt og effektivt tiltak.

Portnummeret kan konfigureres ved å endre direktivet Port 22 i konfigurasjonsfilen / Etc / ssh / sshd_config. Det er også indikert med parameteren -p <port> в sshd. SSH klient og programmer sftp støtter også alternativet -p <port>.

Parameter -p <port> kan brukes til å spesifisere portnummeret når du kobler til med kommandoen ssh i linux. I sftp и scp parameter brukes -P <port> (stor P). Kommandolinjeinstruksjonen overstyrer alle verdier i konfigurasjonsfiler.

Hvis det er mange servere, kan nesten alle disse handlingene for å beskytte Linux-serveren automatiseres i et skript. Men hvis det bare er én server, er det bedre å kontrollere prosessen manuelt.

Om rettighetene til annonsering

Bestill og kom i gang med en gang! Opprettelse av VDS enhver konfigurasjon og med hvilket som helst operativsystem innen et minutt. Den maksimale konfigurasjonen lar deg komme ut til det fulle - 128 CPU-kjerner, 512 GB RAM, 4000 GB NVMe. Episk 🙂

Linux-serverbeskyttelse. Hva du skal gjøre først

Kilde: www.habr.com