Zaštita Linux servera. Šta prvo uraditi

Zaštita Linux servera. Šta prvo uraditi
Habib M'henni/Wikimedia Commons, CC BY-SA

Danas je podizanje servera na hostingu stvar par minuta i nekoliko klikova mišem. No, odmah nakon lansiranja, nalazi se u neprijateljskom okruženju, jer je otvoren za cijeli internet kao nevina djevojka u rokerskoj diskoteci. Skeneri će ga brzo pronaći i otkriti hiljade automatski skriptiranih botova koji pretražuju mrežu tražeći ranjivosti i pogrešne konfiguracije. Postoji nekoliko stvari koje trebate učiniti odmah nakon pokretanja kako biste osigurali osnovnu zaštitu.

Sadržaj

Ne-root korisnik

Prvi korak je kreiranje ne-root korisnika za sebe. Poenta je da korisnik root apsolutne privilegije u sistemu, a ako mu dozvolite udaljenu administraciju, onda ćete obaviti pola posla za hakera, ostavljajući mu važeće korisničko ime.

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

Naredbom se pokreće novi korisnik useradd:

useradd [options] <username>

Zatim se naredbom za njega dodaje lozinka passwd:

passwd <username>

Konačno, ovog korisnika treba dodati u grupu koja ima pravo izvršavanja povišenih naredbi 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>

U Ubuntu-u se dodaje u grupu sudo:

usermod -aG sudo <username>

Ključevi umjesto SSH lozinki

Gruba sila ili curenje lozinke su standardni vektor napada, tako da je najbolje 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 servera:

sudo apt install openssh-server

Pokretanje SSH demona (sshd) na Ubuntu serveru:

sudo systemctl start sshd

Automatski pokrenite demon pri svakom pokretanju:

sudo systemctl enable sshd

Treba napomenuti da serverski dio OpenSSH-a uključuje i klijentski dio. To jest, kroz openssh-server možete se povezati na druge servere. Štaviše, sa vaše klijentske mašine možete pokrenuti SSH tunel od udaljenog servera do hosta treće strane, a zatim će host treće strane smatrati udaljeni server izvorom zahteva. Veoma zgodna funkcija za maskiranje vašeg sistema. Za detalje pogledajte članak "Praktični savjeti, primjeri i SSH tuneli".

Na klijentskoj mašini obično nema smisla instalirati punopravni server kako bi se sprečila mogućnost daljinskog povezivanja sa računarom (iz bezbednosnih razloga).

Dakle, za vašeg novog korisnika, prvo morate generisati SSH ključeve na računaru sa kojeg ćete pristupiti serveru:

ssh-keygen -t rsa

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

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

Zatim, ispod root-a, kreirajte SSH direktorij na serveru u korisničkom kućnom direktoriju i dodajte SSH javni ključ u datoteku authorized_keys, koristeći uređivač 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

Konačno, postavite ispravne dozvole za fajl:

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

i promijenite vlasništvo ovom korisniku:

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

Na strani klijenta morate odrediti lokaciju tajnog ključa za autentifikaciju:

ssh-add DIR_PATH/keylocation

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

ssh [username]@hostname

Nakon autorizacije, možete koristiti naredbu scp za kopiranje datoteka, uslužni program sshfs za daljinsko montiranje sistema datoteka ili direktorija.

Preporučljivo je napraviti nekoliko rezervnih kopija privatnog ključa, jer ako onemogućite provjeru autentičnosti lozinke i izgubite je, onda se uopće nećete moći prijaviti na vlastiti server.

Kao što je gore spomenuto, u SSH-u morate onemogućiti autentifikaciju za root (ovo je razlog zašto smo pokrenuli novog korisnika).

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

PermitRootLogin no

Na Ubuntu dodajte liniju PermitRootLogin no u konfiguracioni fajl 10-my-sshd-settings.conf:

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

Nakon što potvrdite da se novi korisnik autentifikuje svojim ključem, možete onemogućiti autentifikaciju lozinke kako biste eliminirali rizik od curenja lozinke ili grube sile. Sada, da bi pristupio serveru, napadač će morati da dobije privatni ključ.

Na CentOS/Red Hatu nalazimo liniju PasswordAuthentication yes u konfiguracionoj datoteci /etc/ssh/sshd_config i promijenite ga ovako:

PasswordAuthentication no

Na Ubuntu dodajte liniju PasswordAuthentication no da fajl 10-my-sshd-settings.conf:

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

Za upute o omogućavanju dvofaktorske autentifikacije putem SSH-a, pogledajte ovdje.

Firewall

Firewall osigurava da samo promet na portovima koji direktno dozvolite ide na server. Time se štiti od eksploatacije portova koji su slučajno uključeni drugim servisima, što uvelike smanjuje površinu napada.

Prije instaliranja firewall-a, morate biti sigurni da je SSH uključen na listu isključenja i da neće biti blokiran. U suprotnom, nakon pokretanja firewall-a, nećemo se moći povezati sa serverom.

Ubuntu distribucija dolazi sa nekomplikovanim zaštitnim zidom (ufw), i sa CentOS/Red Hatom - firewalld.

Omogućavanje SSH-a u firewall-u na Ubuntu:

sudo ufw allow ssh

Na CentOS/Red Hatu koristite naredbu firewall-cmd:

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

Nakon ove procedure, možete pokrenuti zaštitni zid.

Na CentOS/Red Hat-u pokrenite systemd uslugu za firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Na Ubuntu-u koristimo sljedeću naredbu:

sudo ufw enable

Fail2Ban

usluga Fail2Ban analizira logove na serveru i broji broj pokušaja pristupa sa svake IP adrese. Postavke određuju pravila koliko je pokušaja pristupa dozvoljeno u određenom intervalu - nakon čega se ova IP adresa blokira na određeni vremenski period. Na primjer, dozvolimo 5 neuspjelih pokušaja SSH autentifikacije u roku od 2 sata, a zatim blokiramo datu 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 su navedena u drugom fajlu.

Jail za SSH je podrazumevano omogućen sa podrazumevanim postavkama (5 pokušaja, interval 10 minuta, ban na 10 minuta).

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

Pored SSH-a, Fail2Ban može zaštititi druge servise na nginx ili Apache web serveru.

Automatska sigurnosna ažuriranja

Kao što znate, nove ranjivosti se stalno nalaze u svim programima. Nakon objavljivanja informacija, popularnim paketima eksploatacije se dodaju eksploatacije, koje masovno koriste hakeri i tinejdžeri prilikom skeniranja svih servera za redom. Stoga je vrlo važno instalirati sigurnosna ažuriranja čim se pojave.

Na Ubuntu serveru, automatska sigurnosna ažuriranja su podrazumevano omogućena, tako da nisu potrebne dodatne radnje.

Na CentOS/Red Hatu 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 tajmera:

sudo systemctl status dnf-automatic.timer

Promjena zadanih portova

SSH je razvijen 1995. godine da zameni telnet (port 23) i ftp (port 21), tako da je autor programa Tatu Iltonen izabran port 22 prema zadanim postavkama, a odobrila ga je IANA.

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

Promjena standardnih portova - obfuscation - nekoliko puta smanjuje količinu smeća prometa, veličinu logova i opterećenje na serveru, a također smanjuje površinu napada. Iako neki kritikuju ovu metodu "zaštite kroz opskurnost" (sigurnost kroz opskurnost). Razlog je taj što je ova tehnika suprotna osnovnoj arhitektonska zaštita. Stoga, na primjer, američki nacionalni institut za standarde i tehnologiju u "Vodič za sigurnost servera" ukazuje na potrebu za otvorenom serverskom arhitekturom: „Sigurnost sistema ne treba da se oslanja na tajnost implementacije njegovih komponenti“, kaže se u dokumentu.

Teoretski, promena podrazumevanih portova je protiv prakse otvorene arhitekture. Ali u praksi se količina zlonamjernog prometa zapravo smanjuje, tako da je ovo jednostavna i efikasna mjera.

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

Parametar -p <port> može se koristiti za određivanje broja porta prilikom povezivanja s naredbom ssh u linuxu. IN sftp и scp parametar se koristi -P <port> (veliko P). Instrukcije komandne linije poništavaju bilo koju vrijednost u konfiguracijskim datotekama.

Ako postoji mnogo servera, gotovo sve ove radnje za zaštitu Linux servera mogu se automatizirati u skripti. Ali ako postoji samo jedan server, onda je bolje ručno kontrolirati proces.

O pravima reklame

Naručite i počnite odmah! Kreiranje VDS-a bilo koju konfiguraciju i sa bilo kojim operativnim sistemom u roku od jedne minute. Maksimalna konfiguracija će vam omogućiti da izađete u potpunosti - 128 CPU jezgara, 512 GB RAM-a, 4000 GB NVMe. Epsko 🙂

Zaštita Linux servera. Šta prvo uraditi

izvor: www.habr.com