Kako blokirati SSH brute Force napade koristeći SSHGUARD


SSHGuard je demon otvorenog koda koji štiti hostove od napada grubom silom. To postiže praćenjem i agregacijom sistemskih dnevnika, otkrivanjem napada i blokiranjem napadača pomoću jednog od pozadina Linux firewall-a: iptables, FirewallD, pf > i ipfw.

Prvobitno dizajniran da pruži dodatni sloj zaštite za OpenSSH uslugu, SSHGuard također štiti širok spektar usluga kao što su Vsftpd i Postfix. Prepoznaje nekoliko formata dnevnika uključujući Syslog, Syslog-ng i neobrađene datoteke dnevnika.

SSHGuard je prilično sličan Fail2ban samo što je napisan u C (Fail2ban je napisan u Pythonu), je lakši i nudi manje funkcija.

U ovom vodiču ćemo pokazati kako možete instalirati i konfigurirati SSHGuard da blokira SSH napade grube sile na vašem Linux serveru.

Korak 1: Instalirajte SSHGuard na Linux

Počinjemo s instalacijom SSHGuard na Linux.

Instalirajte SSHGuard na Debian/Ubuntu

Prvo, ažurirajte liste paketa, a zatim instalirajte SSHGuard iz zadanih spremišta koristeći apt menadžer paketa.

sudo apt update
sudo apt install sshguard

Jednom instaliran, usluga SSHGuard se automatski pokreće, a to možete provjeriti pomoću naredbe:

sudo systemctl status sshguard

Instalirajte SSHGuard na RHEL sistemima

Za distribucije zasnovane na RHEL-u kao što su CentOS, Rocky i AlmaLinux, počnite instaliranjem EPEL spremišta kao navedeno u naredbi ispod.

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
sudo dnf install epel-release

Sa EPEL na mjestu, samo naprijed i instalirajte SSHGuard koristeći dnf menadžer paketa.

sudo dnf install sshguard 

Jednom instaliran, pokrenite i postavite SSHGuard da se pokrene pri pokretanju ili ponovnom pokretanju sistema.

sudo systemctl start sshguard
sudo systemctl enable sshguard

Obavezno provjerite da SSHGuard radi kako se očekuje.

sudo systemctl status sshguard

Korak 2: SSHGuard konfiguracija na Linuxu

SSHGuard aktivno prati /var/log/auth.log, /var/log/secure sistemski dnevnik i syslog-ng datoteke evidencije za neuspjele pokušaje prijave.

Za svaki neuspješni pokušaj prijave, udaljeni host je zabranjen na ograničeni vremenski period koji je po defaultu postavljen na 120 sekundi. Nakon toga, vrijeme zabrane se povećava za faktor 1,5 sa svakim uzastopnim neuspjelim pokušajem prijave.

Vrijeme kada su uvredljivi hostovi zabranjeni, pored ostalih parametara, navedeno je u datoteci sshguard.conf. Možete pristupiti konfiguracijskoj datoteci koristeći vim editor kao što je prikazano.

sudo vim /etc/sshguard/sshguard.conf

U distribucijama zasnovanim na RHEL-u, konfiguraciona datoteka se nalazi na sledećoj stazi.

sudo vim /etc/sshguard.conf

Evo primjera konfiguracijske datoteke kada se gleda iz Ubuntu/Debiana.

Fokusirajmo se na glavnu opciju.

  • Direktiva BACKEND ukazuje na punu putanju pozadinskog izvršnog fajla. U ovom primjeru vidimo da je IPtables postavljeno kao zadani backend zaštitnog zida.
  • Direktiva THRESHOLD blokira napadače kada njihov rezultat napada premaši navedenu vrijednost.
  • Opcija BLOCK_TIME je broj sekundi u kojima je napadač blokiran nakon svakog uzastopnog neuspjelog pokušaja prijave. Podrazumevano, ovo je postavljeno na 120 nakon prvog pokušaja. Ovo se povećava sa svakim uzastopnim neuspjelim pokušajem prijave.
  • Opcija DETECTION_TIME se odnosi na vrijeme u sekundama tokom kojeg je napadač registrovan ili zapamćen od strane sistema prije nego što se njegov rezultat resetuje.
  • Opcija WHITELIST_file ukazuje na punu putanju datoteke bijele liste koja sadrži hostove koji ne bi trebali biti na crnoj listi./li>

Korak 3: Konfigurirajte SSHGuard da blokira SSH napade grube sile

Da biste spriječili napade brute-force, morate konfigurirati sljedeće firewall da rade sa sshguard.

Blokirajte SSH napade koristeći UFW

Ako imate instaliran i omogućen UFW na svom Ubuntu/Debian sistemu, izmijenite datoteku /etc/ufw/before.rules.

sudo vim etc/ufw/before.rules

Dodajte sljedeće redove odmah iza odjeljka dopusti sve na povratnoj petlji.

allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

Sačuvajte datoteku i ponovo pokrenite UFW.

sudo systemctl restart ufw

Sada pokušajte da se prijavite na server sa drugog sistema sa pogrešnim akreditivima i primetite da ćete biti zaključani 120 sekundi nakon prvog neuspelog pokušaja prijave.

Ovo možete provjeriti provjerom datoteke dnevnika auth.log.

sudo tail -f  /var/log/auth.log

Nakon sljedećeg neuspjelog pokušaja evidentiranja, vrijeme blokiranja se povećava na 240 sekundi, zatim 480 sekundi, zatim 960 sekundi, itd.

Blokirajte SSH napade koristeći Firewalld

Ako koristite firewalld, uvjerite se da je postavljen i omogućen. Zatim izvršite sljedeću naredbu da omogućite sshguard na vašoj željenoj zoni.

sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

Da primijenite promjene, ponovo učitajte Firewalld i sshguard.

sudo firewall-cmd --reload
sudo systemctl restart sshguard

Zatim provjerite pravilo na sljedeći način:

sudo firewall-cmd —-info-ipset=sshguard4

Blokirajte SSH napade koristeći Iptables

Ako još uvijek koristite Iptables, prvo kreirajte novo pravilo lanca za sshguard u Iptables da počnete blokirati loše momke.

iptables -N sshguard

Zatim ažurirajte lanac INPUT da usmjerite promet na sshguard i blokirajte sav promet od zločestih strana.

iptables -A INPUT -j sshguard

Da blokirate određene portove kao što su SSH, POP i IMAP od zlostavljača, pokrenite naredbu:

iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

I na kraju, sačuvajte pravilo da promjene stupe na snagu.

iptables-save > /etc/iptables/iptables.rules

Korak 4: Kako staviti SSH blokirane hostove na bijelu listu

Za bijelu listu blokiranog hosta, jednostavno navedite njegovo ime ili IP adresu u datoteci bijele liste koja se nalazi u:

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

Nakon toga, obavezno ponovo pokrenite sshguard demon i pozadinu zaštitnog zida kako bi se promjene primijenile.

U ovom vodiču smo demonstrirali kako možete blokirati SSH Bruteforce napade koristeći SSHGuard demon na Linux serverima. Vaše povratne informacije su dobrodošle.