Zaštita Linux poslužitelja. Što prvo učiniti

Zaštita Linux poslužitelja. Što prvo učiniti
Habib M'henni/Wikimedia Commons, Cc by-sa

U današnje vrijeme postavljanje poslužitelja na hostingu je stvar od nekoliko minuta i nekoliko klikova mišem. Ali odmah nakon lansiranja, nađe se u neprijateljskom okruženju, jer je otvoren cijelom Internetu poput nevine djevojke u rockerskoj diskoteci. Skeneri će ga brzo pronaći i otkriti tisuće automatski skriptiranih robota koji pretražuju mrežu u potrazi za ranjivostima i netočnim konfiguracijama. Postoji nekoliko stvari koje biste trebali učiniti odmah nakon pokretanja kako biste osigurali osnovnu zaštitu.

sadržaj

Korisnik koji nije root

Prva stvar koju trebate napraviti je kreirati ne-root korisnika. Stvar je u tome da korisnik root apsolutne privilegije u sustavu, a ako mu omogućite udaljenu administraciju, onda ćete za hakera obaviti pola posla, ostavljajući mu valjano korisničko ime.

Stoga morate kreirati drugog korisnika i onemogućiti udaljenu administraciju putem SSH za root.

Naredbom se stvara novi korisnik useradd:

useradd [options] <username>

Zatim se za to dodaje lozinka s naredbom passwd:

passwd <username>

Konačno, ovog korisnika treba dodati u grupu koja ima pravo izvršavati naredbe s povišenim privilegijama sudo. Ovisno o distribuciji Linuxa, to mogu biti različite grupe. Na primjer, u CentOS-u i Red Hatu korisnik se dodaje u grupu wheel:

usermod -aG wheel <username>

Na Ubuntuu je dodan u grupu sudo:

usermod -aG sudo <username>

Ključevi umjesto SSH lozinki

Gruba sila ili curenje lozinke standardni je vektor napada, stoga je bolje onemogućiti provjeru autentičnosti lozinke u SSH (Secure Shell) i umjesto toga koristiti provjeru autentičnosti ključa.

Postoje različiti programi za implementaciju SSH protokola, kao npr lsh и dropbear, ali najpopularniji je OpenSSH. Instaliranje OpenSSH klijenta na Ubuntu:

sudo apt install openssh-client

Instalacija poslužitelja:

sudo apt install openssh-server

Pokretanje SSH demona (sshd) na Ubuntu poslužitelju:

sudo systemctl start sshd

Automatski pokreni demon pri svakom pokretanju sustava:

sudo systemctl enable sshd

Treba napomenuti da poslužiteljski dio OpenSSH uključuje klijentski dio. Odnosno kroz openssh-server možete se povezati s drugim poslužiteljima. Štoviše, s vašeg klijentskog računala možete pokrenuti SSH tunel od udaljenog poslužitelja do hosta treće strane, a tada će host treće strane smatrati udaljeni poslužitelj izvorom zahtjeva. Vrlo praktična funkcija za maskiranje vašeg sustava. Za više detalja pogledajte članak. "Praktični savjeti, primjeri i SSH tuneli".

Obično nema smisla instalirati punopravni poslužitelj na klijentsko računalo kako bi se spriječila mogućnost daljinskog povezivanja s računalom (iz sigurnosnih razloga).

Dakle, za vašeg novog korisnika prvo trebate generirati SSH ključeve na računalu s kojeg ćete pristupiti poslužitelju:

ssh-keygen -t rsa

Javni ključ je pohranjen u datoteci .pub i izgleda kao niz nasumičnih znakova koji počinje s ssh-rsa.

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

Zatim, kao root, kreirajte SSH direktorij na poslužitelju u korisničkom početnom direktoriju i dodajte SSH javni ključ datoteci authorized_keyspomoću uređivača teksta kao što je Vim:

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

vim /home/user_name/.ssh/authorized_keys

Na kraju postavite ispravna dopuštenja za datoteku:

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

i promijenite vlasništvo na ovog korisnika:

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

Na strani klijenta trebate navesti lokaciju tajnog ključa za provjeru autentičnosti:

ssh-add DIR_PATH/keylocation

Sada se možete prijaviti na poslužitelj pod korisničkim imenom koristeći ovaj ključ:

ssh [username]@hostname

Nakon autorizacije, možete koristiti naredbu scp za kopiranje datoteka, uslužnog programa sshfs za daljinsko montiranje datotečnog sustava ili direktorija.

Preporučljivo je napraviti nekoliko sigurnosnih kopija privatnog ključa, jer ako onemogućite autentifikaciju lozinke i izgubite je, nećete se uopće moći prijaviti na vlastiti poslužitelj.

Kao što je gore spomenuto, u SSH morate onemogućiti autentifikaciju za root (zbog toga smo stvorili novog korisnika).

Na CentOS/Red Hat nalazimo liniju PermitRootLogin yes u konfiguracijskoj datoteci /etc/ssh/sshd_config i promijeni ga:

PermitRootLogin no

Na Ubuntu dodajte redak PermitRootLogin no u konfiguracijsku datoteku 10-my-sshd-settings.conf:

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

Nakon što provjerite je li novi korisnik autentificiran pomoću svog ključa, možete onemogućiti autentifikaciju lozinke kako biste uklonili rizik od curenja lozinke ili grube sile. Sada, za pristup poslužitelju, napadač će morati dobiti privatni ključ.

Na CentOS/Red Hat nalazimo liniju PasswordAuthentication yes u konfiguracijskoj datoteci /etc/ssh/sshd_config i promijenite ga na sljedeći način:

PasswordAuthentication no

Na Ubuntu dodajte redak PasswordAuthentication no podnijeti 10-my-sshd-settings.conf:

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

Za upute o tome kako omogućiti dvofaktorsku autentifikaciju putem SSH-a, pogledajte здесь.

Vatrozid

Vatrozid osigurava da samo promet na portovima koje izravno dopustite ide prema poslužitelju. To štiti od iskorištavanja portova koje su slučajno omogućile druge usluge, što uvelike smanjuje površinu napada.

Prije instaliranja vatrozida morate biti sigurni da je SSH uključen na popis isključenja i da neće biti blokiran. U suprotnom, nakon pokretanja vatrozida, nećemo se moći spojiti na poslužitelj.

Ubuntu distribucija dolazi s nekompliciranim vatrozidom (wow), i sa CentOS/Red Hat - firewalld.

Dopuštanje SSH-a u vatrozidu na Ubuntuu:

sudo ufw allow ssh

Na CentOS/Red Hatu koristimo naredbu firewall-cmd:

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

Nakon ovog postupka možete pokrenuti vatrozid.

Na CentOS/Red Hatu pokrećemo uslugu systemd za firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Na Ubuntuu koristimo sljedeću naredbu:

sudo ufw enable

Fail2Ban

Usluga Fail2Ban analizira zapise poslužitelja i broji broj pokušaja pristupa sa svake IP adrese. Postavke određuju pravila koliko je pokušaja pristupa dopušteno u određenom intervalu - nakon čega se ova IP adresa blokira na određeno vremensko razdoblje. Na primjer, dopuštamo 5 neuspješnih pokušaja autentifikacije putem SSH-a unutar razdoblja od 2 sata, nakon čega blokiramo ovu IP adresu na 12 sati.

Instaliranje Fail2Ban na CentOS i Red Hat:

sudo yum install fail2ban

Instalacija na Ubuntu i Debian:

sudo apt install fail2ban

Pokreni:

systemctl start fail2ban
systemctl enable fail2ban

Program ima dvije konfiguracijske datoteke: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Ograničenja zabrane navedena su u drugoj datoteci.

Zatvor za SSH omogućen je prema zadanim postavkama sa zadanim postavkama (5 pokušaja, interval 10 minuta, zabrana 10 minuta).

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

Uz SSH, Fail2Ban može zaštititi i druge usluge na nginx ili Apache web poslužitelju.

Automatska sigurnosna ažuriranja

Kao što znate, nove ranjivosti stalno se nalaze u svim programima. Nakon što se informacija objavi, exploitovi se dodaju u popularne exploit pakete, koje naširoko koriste hakeri i tinejdžeri prilikom skeniranja svih poslužitelja za redom. Stoga je vrlo važno instalirati sigurnosna ažuriranja čim postanu dostupna.

Ubuntu poslužitelji imaju automatska sigurnosna ažuriranja omogućena prema zadanim postavkama, tako da nisu potrebni dodatni koraci.

Na CentOS/Red Hat morate instalirati aplikaciju dnf-automatski i uključite tajmer:

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

Provjera timera:

sudo systemctl status dnf-automatic.timer

Promjena zadanih portova

SSH je razvijen 1995. godine kako bi zamijenio telnet (port 23) i ftp (port 21), pa je autor programa Tatu Iltonen prema zadanim postavkama odabrao port 22, a odobrila ga je IANA.

Naravno, svi napadači znaju na kojem portu radi SSH - i skeniraju ga zajedno s drugim standardnim portovima kako bi saznali verziju softvera, provjerili standardne root lozinke i tako dalje.

Promjena standardnih portova - obfuscation - nekoliko puta smanjuje količinu neželjenog prometa, veličinu zapisa i opterećenje poslužitelja, a također smanjuje površinu napada. Iako neki kritizirati ovu metodu "obrane kroz opskurnost" (sigurnost kroz opskurnost). Razlog je taj što je ova tehnika suprotstavljena temeljnom arhitektonska zaštita. Stoga npr. Američki nacionalni institut za standarde i tehnologiju "Vodič za sigurnost poslužitelja" ukazuje na potrebu za otvorenom arhitekturom poslužitelja: "Sigurnost sustava ne bi se trebala oslanjati na tajnost implementacije njegovih komponenti", kaže se u dokumentu.

U teoriji, promjena zadanih portova je u suprotnosti s praksama otvorene arhitekture. Ali u praksi se količina zlonamjernog prometa zapravo smanjuje, pa je ovo jednostavna i učinkovita mjera.

Broj porta može se konfigurirati promjenom direktive Port 22 u konfiguracijskoj datoteci / Etc / ssh / sshd_config. Također je naznačeno parametrom -p <port> в sshd. SSH klijent i programi sftp također podržavaju parametar -p <port>.

Parametar -p <port> može se koristiti za određivanje broja porta prilikom povezivanja pomoću naredbe ssh u Linuxu. U sftp и scp koristi se parametar -P <port> (veliko P). Određivanje iz naredbenog retka poništava sve vrijednosti u konfiguracijskim datotekama.

Ako postoji mnogo poslužitelja, gotovo sve te radnje za zaštitu Linux poslužitelja mogu se automatizirati u skripti. Ali ako postoji samo jedan poslužitelj, onda je bolje ručno kontrolirati proces.

O pravima oglašavanja

Naručite i počnite s radom odmah! Izrada VDS-a bilo koju konfiguraciju i s bilo kojim operativnim sustavom unutar minute. Maksimalna konfiguracija omogućit će vam da uživate - 128 CPU jezgri, 512 GB RAM-a, 4000 GB NVMe. Baš epski :)

Zaštita Linux poslužitelja. Što prvo učiniti

Izvor: www.habr.com