Wéi blockéiert SSH Brute Force Attacke mat SSHGUARD


SSHGuard ass en Open-Source Daemon deen Hosten vu brute-force Attacken schützt. Et erreecht dëst duerch Iwwerwaachung an Aggregatioun vu Systemprotokoller, Attentater z'entdecken an Ugräifer blockéieren mat engem vun de Linux Firewall Backends: iptables, FirewallD, pf, an ipfw.

Ufanks entwéckelt fir eng extra Schicht vu Schutz fir den OpenSSH Service ze bidden, schützt SSHGuard och eng breet Palette vu Servicer wéi Vsftpd a Postfix. Et erkennt verschidde Logformater dorënner Syslog, Syslog-ng, a raw Log Dateien.

[Dir kënnt och gären hunn: Wéi sécheren an Harden OpenSSH Server]

SSHGuard ass zimlech ähnlech wéi Fail2ban nëmmen datt et am C geschriwwe gëtt (Fail2ban ass am Python geschriwwen), ass méi hell a bitt manner Features.

An dësem Guide wäerte mir weisen wéi Dir SSHGuard installéiere kënnt an konfiguréieren fir SSH Brute Force Attacken an Ärem Linux Server ze blockéieren.

Schrëtt 1: Installéiert SSHGuard op Linux

Mir fänken un mat der Installatioun vu SSHGuard op Linux.

Als éischt, aktualiséieren d'Packagelëschten an installéiert dann SSHGuard vun de Standardrepositories mat dem apt Package Manager.

$ sudo apt update
$ sudo apt install sshguard

Eemol installéiert, fänkt de SSHGuard Service automatesch un, an Dir kënnt dëst mat dem Kommando verifizéieren:

$ sudo systemctl status sshguard

Fir RHEL-baséiert Verdeelungen wéi CentOS, Rocky, an AlmaLinux, fänkt un mat der Installatioun vum EPEL Repository wéi am Kommando hei drënner.

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

Mat EPEL op der Plaz, gitt vir an installéiert SSHGuard mam dnf Package Manager.

$ sudo dnf install sshguard 

Eemol installéiert, start a set SSHGuard fir um Systemstart ze starten oder nei ze starten.

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

Gitt sécher z'iwwerpréiwen datt SSHGuard leeft wéi erwaart.

$ sudo systemctl status sshguard

Schrëtt 2: SSHGuard Konfiguratioun op Linux

SSHGuard iwwerwaacht aktiv d' /var/log/auth.log, /var/log/secure systemd Journal, a syslog-ng Logdateien fir gescheitert Loginversuche.

Fir all Mëssgléckt Login Versuch, ass de Remote Host fir eng limitéiert Zäit verbannt, déi als Standard op 120 Sekonnen gesat ass. Duerno geet d'Verbuet Zäit mat engem Faktor vun 1,5 mat all successive gescheitert Login Versuch erop.

D'Zäit déi beleidegend Hosten verbannt sinn, zousätzlech zu anere Parameteren gëtt an der sshguard.conf Datei spezifizéiert. Dir kënnt Zougang zu der Konfiguratiounsdatei mam vim Editor benotzen wéi gewisen.

$ sudo vim /etc/sshguard/sshguard.conf

Op RHEL-baséiert Verdeelungen ass d'Configuratiounsdatei am folgende Wee.

$ sudo vim /etc/sshguard.conf

Hei ass eng Probe vun der Konfiguratiounsdatei wann se vun Ubuntu/Debian gekuckt ginn.

Loosst eis op d'Haaptoptioun konzentréieren.

  • D'BACKEND Direktiv weist op de ganze Wee vum Backend ausführbar. An dësem Beispill gesi mir datt IPtables als Standard Firewall Backend gesat gëtt.
  • D'THRESHOLD-Direktiv blockéiert Ugräifer wann hiren Attackscore de spezifizéierte Wäert iwwerschreift.
  • D'BLOCK_TIME Optioun ass d'Zuel vun de Sekonnen, datt en Ugräifer no all successive ausgefallene Loginversuch blockéiert ass. Par défaut ass dëst no dem éischte Versuch op 120 gesat. Dëst erhéicht mat all successiven ausgefallene Loginversuch.
  • D'DETECTION_TIME Optioun bezitt sech op d'Zäit a Sekonnen, während där den Ugräifer vum System registréiert oder erënnert gëtt, ier säi Score zréckgesat gëtt.
  • D'WHITELIST_file Optioun weist op de ganze Wee vun der Whitelist Datei déi Hosten enthält déi net op schwaarze Lëscht solle sinn./li>

Schrëtt 3: SSHGuard konfiguréieren fir SSH Brute Force Attacken ze blockéieren

Fir brute-force Attacken ofzewieren, musst Dir op de folgende Firewalls konfiguréieren fir mat sshguard ze schaffen.

Wann Dir UFW op Ärem Ubuntu/Debian System installéiert an aktivéiert hutt, ännert d'Datei /etc/ufw/before.rules.

$ sudo vim etc/ufw/before.rules

Füügt déi folgend Zeilen just no der allow all on loopback Sektioun.

# 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

Späichert d'Datei a restart UFW.

$ sudo systemctl restart ufw

Probéiert elo Iech op de Server vun engem anere System mat de falschen Umeldungsinformatiounen anzeloggen a bemierkt datt Dir fir 120 Sekonnen nom éischte gescheiterte Loginversuch gespaart gëtt.

Dir kënnt dëst verifizéieren andeems Dir d'auth.log Log Datei iwwerpréift.

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

Nom nächste gescheitert Log-Versuch erhéicht d'Blockzäit op 240 Sekonnen, dann 480 Sekonnen, dann 960 Sekonnen, a sou weider.

Wann Dir Firewalld leeft, vergewëssert Iech datt et ageriicht an aktivéiert ass. Fuert dann de folgende Kommando aus fir sshguard op Ärer gewënschter Zone z'aktivéieren.

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

Fir d'Ännerungen ëmzesetzen, lued Firewalld an sshguard nei.

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

Da kontrolléiert d'Regel wéi follegt:

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

Wann Dir nach ëmmer Iptables benotzt, erstellt als éischt eng nei Ketteregel fir sshguard an Iptables fir d'Béiser ze blockéieren.

# iptables -N sshguard

Als nächst, update d'INPUT Kette fir den Traffic direkt ze sshguard an all Traffic vu nefarious Parteien ze blockéieren.

# iptables -A INPUT -j sshguard

Fir spezifesch Ports wéi SSH, POP an IMAP vu Mëssbraucher ze blockéieren, lafen de Kommando:

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

A schliisslech späichert d'Regel fir datt d'Ännerungen a Kraaft trieden.

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

Schrëtt 4: Wéi Whitelist SSH Blocked Hosts

Fir e blockéierte Host ze Whitelist, gitt einfach säin Hostnumm oder IP Adress an der Whitelist Datei déi an:

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

Duerno gitt sécher den sshguard Daemon an de Firewall Backend nei ze starten fir d'Ännerungen ze gëllen.

An dësem Guide hu mir bewisen wéi Dir SSH Bruteforce Attacke blockéiere kënnt mat SSHGuard Daemon op Linux Serveren. Äre Feedback ass wëllkomm.