5 najboljih praksi za sprječavanje SSH brute-force napada na prijavu


Poslužitelji koji pokreću SSH obično su laka meta za napade brutalnom silom. Hakeri neprestano smišljaju inovativne softverske alate i robote za automatiziranje brute-force napada koji dodatno povećavaju rizik od upada.

U ovom vodiču istražujemo neke od savjeta koje možete primijeniti kako biste zaštitili svoje SSH poslužitelje od brutalnih napada na distribucije Linuxa temeljene na RHEL-u i derivate Debiana.

Onemogućite SSH provjeru autentičnosti lozinke i omogućite provjeru autentičnosti SSH-ključa

Zadana metoda provjere autentičnosti za SSH je provjera autentičnosti korisničkog imena/lozinke. Ali kao što smo vidjeli, provjera autentičnosti lozinke je sklona napadima brutalnom silom. Radi sigurnosti, preporuča se implementirati SSH provjeru autentičnosti temeljenu na ključu gdje je provjera autentičnosti omogućena parovima javnih i privatnih SSH ključeva. Privatni ključ ostaje na računalu klijenta dok se javni ključ kopira na poslužitelj.

Tijekom provjere autentičnosti SSH ključa, poslužitelj provjerava posjeduje li klijentsko računalo privatni ključ. Ako je provjera uspješna, kreira se sesija ljuske ili se naredba poslana udaljenom poslužitelju uspješno izvršava. Imamo opsežan vodič o tome kako konfigurirati autentifikaciju temeljenu na SSH ključu.

Čak i nakon postavljanja provjere autentičnosti temeljene na ključu, vaš je poslužitelj još uvijek osjetljiv na napade brutalnom silom iz jednostavnog razloga jer je provjera autentičnosti lozinkom još uvijek aktivna. Ovo treba onemogućiti.

Stoga uredite zadanu SSH konfiguracijsku datoteku.

sudo vim /etc/ssh/sshd_config

Postavite parametar PasswordAuthentication na no kao što je prikazano.

PasswordAuthentication no

Zatim spremite datoteku i ponovno učitajte SSH da biste primijenili promjene.

sudo systemctl reload ssh

Implementirajte alat za sprječavanje upada Fail2ban

Napisan u Pythonu, Fail2ban je okvir otvorenog koda za sprječavanje upada koji skenira datoteke dnevnika usluga u potrazi za neuspješnom autentifikacijom i zabranjuje IP adrese koje više puta ne prolaze provjere autentičnosti lozinke na određeno vrijeme.

Fail2ban stalno nadzire datoteke zapisnika poslužitelja radi pokušaja upada i drugih opakih aktivnosti. Nakon unaprijed definiranog broja neuspješnih autentifikacija – u većini slučajeva, 3 neuspjela pokušaja prijave – Fail2ban automatski blokira udaljenom hostu pristup poslužitelju i domaćin se drži u 'zatvoru' određeno vrijeme.

Čineći to, Fail2ban značajno smanjuje stopu pokušaja netočne provjere autentičnosti lozinke. Pogledajte naš vodič o tome kako možete instalirati i konfigurirati Fail2ban na Linuxu da biste zaštitili svoj poslužitelj od Bruteforce napada.

Ograničite maksimalni broj pokušaja SSH autentifikacije

Još jedan jednostavan način zaštite vašeg poslužitelja od brutalnih napada je ograničavanje broja pokušaja SSH prijave. Prema zadanim postavkama, ovo je postavljeno na 3, ali ako je kojim slučajem ovo postavljeno na višu vrijednost, postavite na najviše 3 pokušaja povezivanja.

Na primjer, za postavljanje maksimalnog broja pokušaja povezivanja na 3 postavite parametar MaxAuthTries na 3 kao što je prikazano

MaxAuthTries = 3

Još jednom spremite promjene i ponovno učitajte SSH uslugu.

sudo systemctl reload ssh

Implementirajte TCP Wrappers kako biste ograničili SSH pristup od klijenata

TCP wrappers je biblioteka koja pruža Access Control List (ACL) temeljen na hostu koji ograničava pristup TCP uslugama udaljenim klijentima na temelju njihovih IP adrese

Udaljeni hostovi od pristupa uslugama na sustavu. TCP omotači koriste konfiguracijske datoteke /etc/hosts.allow i /etc/hosts.deny (tim redoslijedom) kako bi odredili je li udaljenom klijentu dopušten pristup određenom uslugu ili ne.

Obično su ove datoteke komentirane i svi su hostovi dopušteni kroz sloj TCP omotača. Pravila za dopuštanje pristupa određenoj usluzi nalaze se u datoteci /etc/hosts.allow i imaju prednost nad pravilima u datoteci /etc/hosts.deny.

Najbolja praksa preporučuje blokiranje svih dolaznih veza. Stoga otvorite datoteku /etc/hosts.deny.

sudo vim /etc/hosts.deny

Dodajte sljedeći redak.

ALL: ALL

Spremite promjene i izađite iz datoteke.

Zatim pristupite datoteci /etc/hosts.allow.

sudo vim /etc/hosts.allow

Konfigurirajte hostove ili domene koje se mogu povezati s poslužiteljem putem SSH-a kao što je prikazano. U ovom primjeru dopuštamo samo dva udaljena računala da se povežu na poslužitelj (173.82.227.89 i 173.82.255.55), a uskraćujemo ostalo.

sshd: 173.82.227.89 173.82.255.55
sshd: ALL: DENY

Spremite promjene i izađite iz konfiguracijske datoteke.

Da biste ga testirali, pokušajte se spojiti na poslužitelj s hosta koji nije među onima kojima ste dopustili pristup. Trebali biste dobiti pogrešku dozvole kao što je prikazano.

ssh [email 

kex_exchange_identification: read: Connection reset by peer
Connection reset by 173.82.235.7 port 22
lost connection

Implementirajte SSH dvofaktornu autentifikaciju

Autentikacija u dva faktora pruža dodatni sigurnosni sloj autentifikaciji lozinke, čime vaš poslužitelj postaje sigurniji od napada brutalnom silom. Široko korišteno rješenje za dvofaktorsku autentifikaciju je Google Authenticator App, a mi imamo dobro dokumentiran vodič o tome kako možete postaviti dvofaktorsku autentifikaciju.

Zaključak

Ovo je bio sažetak 5 najboljih praksi koje možete primijeniti kako biste spriječili SSH Brute Force napade prijave i osigurali sigurnost vašeg poslužitelja. Također možete pročitati Kako osigurati i ojačati OpenSSH poslužitelj.