Kako blokirati napade brutalne sile SSH z uporabo SSHGUARD


SSHGuard je odprtokodni demon, ki ščiti gostitelje pred napadi s surovo silo. To doseže s spremljanjem in združevanjem sistemskih dnevnikov, odkrivanjem napadov in blokiranjem napadalcev z uporabo enega od ozadij požarnega zidu Linux: iptables, FirewallD, pf in ipfw.

SSHGuard, ki je bil prvotno zasnovan za zagotavljanje dodatnega sloja zaščite za storitev OpenSSH, ščiti tudi široko paleto storitev, kot sta Vsftpd in Postfix. Prepozna več formatov dnevnikov, vključno s Syslog, Syslog-ng in surovimi dnevniškimi datotekami.

[ Morda vam bo všeč tudi: Kako zaščititi in utrditi strežnik OpenSSH ]

SSHGuard je precej podoben Fail2ban le, da je napisan v C (Fail2ban je napisan v Pythonu), je lažji in ponuja manj funkcij.

V tem priročniku bomo pokazali, kako lahko namestite in konfigurirate SSHGuard za blokiranje napadov s surovo silo SSH v vašem strežniku Linux.

1. korak: Namestite SSHGuard v Linux

Začnemo z namestitvijo SSHGuard na Linux.

Najprej posodobite sezname paketov in nato s pomočjo upravitelja paketov apt namestite SSHGuard iz privzetih skladišč.

$ sudo apt update
$ sudo apt install sshguard

Ko je nameščena, se storitev SSHGuard samodejno zažene in to lahko preverite z ukazom:

$ sudo systemctl status sshguard

Za distribucije, ki temeljijo na RHEL, kot so CentOS, Rocky in AlmaLinux, začnite z namestitvijo repozitorija EPEL, kot je navedeno v spodnjem ukazu.

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

Ko je EPEL nameščen, nadaljujte in namestite SSHGuard z upraviteljem paketov dnf.

$ sudo dnf install sshguard 

Ko je nameščen, zaženite in nastavite SSHGuard, da se zažene ob zagonu ali ponovnem zagonu sistema.

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

Preverite, ali SSHGuard deluje po pričakovanjih.

$ sudo systemctl status sshguard

2. korak: Konfiguracija SSHGuard v Linuxu

SSHGuard aktivno spremlja datoteke dnevnika /var/log/auth.log, /var/log/secure systemd journal in syslog-ng za neuspele poskuse prijave.

Za vsak neuspešen poskus prijave je oddaljeni gostitelj prepovedan za omejen čas, ki je privzeto nastavljen na 120 sekund. Nato se čas prepovedi poveča za faktor 1,5 z vsakim zaporednim neuspešnim poskusom prijave.

V datoteki sshguard.conf je poleg drugih parametrov določen čas, ko so gostitelji, ki so kršili zahteve, prepovedani. Do konfiguracijske datoteke lahko dostopate z urejevalnikom vim, kot je prikazano.

$ sudo vim /etc/sshguard/sshguard.conf

V distribucijah, ki temeljijo na RHEL, se konfiguracijska datoteka nahaja na naslednji poti.

$ sudo vim /etc/sshguard.conf

Tukaj je vzorec konfiguracijske datoteke, ko si jo ogledate iz Ubuntu/Debian.

Osredotočimo se na glavno možnost.

  • Direktiva BACKEND kaže na celotno pot izvedljive datoteke v zaledju. V tem primeru vidimo, da je IPtables nastavljen kot privzeto ozadje požarnega zidu.
  • Direktiva THRESHOLD blokira napadalce, ko njihov rezultat napada preseže določeno vrednost.
  • Možnost BLOCK_TIME je število sekund, v katerih je napadalec blokiran po vsakem zaporednem neuspešnem poskusu prijave. Privzeto je to po prvem poskusu nastavljeno na 120. To se poveča z vsakim zaporednim neuspešnim poskusom prijave.
  • Možnost DETECTION_TIME se nanaša na čas v sekundah, v katerem sistem registrira ali zapomni napadalca, preden se njegov rezultat ponastavi.
  • Možnost WHITELIST_file kaže na celotno pot datoteke seznama dovoljenih, ki vsebuje gostitelje, ki naj ne bi bili na črnem seznamu./li>

3. korak: Konfigurirajte SSHGuard za blokiranje napadov s surovo silo SSH

Če želite preprečiti napade s surovo silo, morate konfigurirati naslednje požarne zidove za delo s sshguard.

Če imate nameščen in omogočen UFW v sistemu Ubuntu/Debian, spremenite datoteko /etc/ufw/before.rules.

$ sudo vim etc/ufw/before.rules

Dodajte naslednje vrstice takoj za razdelkom dovoli vse pri povratni zanki.

# 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

Shranite datoteko in znova zaženite UFW.

$ sudo systemctl restart ufw

Zdaj se poskusite prijaviti v strežnik iz drugega sistema z napačnimi poverilnicami in opazite, da boste po prvem neuspešnem poskusu prijave zaklenjeni 120 sekund.

To lahko preverite tako, da preverite datoteko dnevnika auth.log.

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

Po naslednjem neuspešnem poskusu dnevnika se čas bloka poveča na 240 sekund, nato na 480 sekund, nato na 960 sekund itd.

Če uporabljate požarni zid, se prepričajte, da je nastavljen in omogočen. Nato izvedite naslednji ukaz, da omogočite sshguard na želenem območju.

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

Če želite uporabiti spremembe, znova naložite Firewalld in sshguard.

$ sudo firewall-cmd --reload
$ sudo systemctl restart sshguard

Nato preverite pravilo na naslednji način:

$ sudo firewall-cmd —-info-ipset=sshguard4

Če še vedno uporabljate Iptables, najprej ustvarite novo verižno pravilo za sshguard v Iptables, da začnete blokirati slabe fante.

# iptables -N sshguard

Nato posodobite verigo INPUT, da usmerite promet na sshguard in blokirate ves promet od zlobnih strank.

# iptables -A INPUT -j sshguard

Če želite blokirati določena vrata, kot so SSH, POP in IMAP pred zlorabami, zaženite ukaz:

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

In končno, shranite pravilo, da spremembe začnejo veljati.

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

4. korak: Kako dodati blokirane gostitelje SSH na seznam dovoljenih

Če želite blokiranega gostitelja na seznam dovoljenih, preprosto navedite njegovo ime gostitelja ali IP naslov v datoteki seznama dovoljenih, ki se nahaja v:

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

Nato se prepričajte, da ste znova zagnali demon sshguard in ozadje požarnega zidu, da bodo spremembe veljale.

V tem priročniku smo pokazali, kako lahko blokirate napade SSH Bruteforce z demonom SSHGuard v strežnikih Linux. Vaše povratne informacije so dobrodošle.