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.
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.
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:
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:
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:
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:
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.
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:
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 🙂