Jak blokovat útoky SSH Brute Force pomocí SSHGUARD

SSHGuard je démon s otevřeným zdrojovým kódem, který chrání hostitele před útoky brutální síly. Toho se dosahuje monitorováním a agregací protokolů systému, detekováním útoků a blokováním útočníků pomocí jednoho z nich Linux firewall ustupujeiptablesFirewallDpf, a ipfw.

Původně navržen tak, aby poskytoval další vrstvu ochrany pro Služba OpenSSHSSHGuard také chrání širokou škálu služeb, jako je Vsftpd a Postfix Rozpozná několik formátů protokolu včetně souborů Syslog, Syslog-ng a raw log.

[Možná by se vám také líbilo: Jak zabezpečit a zabezpečit server OpenSSH ]

SSHGuard je docela podobný Fail2ban pouze to, že je napsáno C (Fail2ban je napsáno v Python), je lehčí a poskytuje méně funkcí.

V této příručce ukážeme, jak můžete instalovat a konfigurovat SSHGuard blokovat SSH útoky brutální síly na vašem Linuxovém serveru.

Krok 1: Nainstalujte SSHGuard do Linuxu

Nainstalujte SSHGuard na Debian / Ubuntu

Nejprve aktualizujte seznamy balíčků a poté nainstalujte SSHGuard z výchozích úložišť pomocí apt balíček manager.

$ sudo apt update $ sudo apt install sshguard

Once installed, the SSHGuard service starts automatically, and you can verify this using the command:

$ sudo systemctl status sshguard
Check SSHGuard in Ubuntu
Check SSHGuard in Ubuntu

Install SSHGuard on RHEL Systems

For RHEL-based distributions such as CentOSRocky, and AlmaLinux, start off by installing the EPEL repository as provided in the command below.

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

With EPEL in place, go ahead and install SSHGuard using the dnf package manager.

$ sudo dnf install sshguard 

Once installed, start and set SSHGuard to start on system startup or reboot.

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

Be sure to verify that SSHGuard is running as expected.

$ sudo systemctl status sshguard
Check SSHGuard in RHEL
Check SSHGuard in RHEL

Step 2: SSHGuard Configuration on Linux

SSHGuard actively monitors the /var/log/auth.log/var/log/secure systemd journal, and syslog-ng log files for failed login attempts.

For each unsuccessful login attempt, the remote host is banned for a limited amount of time which, by default is set at 120 seconds. Thereafter, the ban time goes up by a factor of 1.5 with each successive failed login attempt.

The time the offending hosts are banned, in addition to other parameters is specified in the sshguard.conf file. You can access the configuration file using the vim editor as shown.

$ sudo vim /etc/sshguard/sshguard.conf

On RHEL-based distributions, the config file is located in the following path.

$ sudo vim /etc/sshguard.conf

Here is a sample of the configuration file when viewed from Ubuntu / Debian.

SSHGUARD Configuration File
SSHGUARD Configuration File

Let’s focus on the main option.

  • The BACKEND directive points to the full path of the backend executable. In this example, we see that IPtables is set as the default firewall backend.
  • The THRESHOLD directive blocks attackers when their attack score exceeds the specified value.
  • The BLOCK_TIME option is the number of seconds that an attacker is blocked after every successive failed login attempt. By default, this is set to 120 after the first attempt. This increases with each successive failed login attempt.
  • The DETECTION_TIME option refers to the time in seconds during which the attacker is registered or remembered by the system before their score is reset.
  • The WHITELIST_file option point to the full path of the whitelist file that contains hosts which are not supposed to be blacklisted./li>

Step 3: Configure SSHGuard to Block SSH Brute Force Attacks

To ward off brute-force attacks, you need to configure on the following firewalls to work with sshguard.

Block SSH Attacks Using UFW

If you have UFW installed and enabled on your Ubuntu / Debian system, modify the /etc/ufw/before.rules file.

$ sudo vim etc/ufw/before.rules

Add the following lines just after the allow all on loopback section.

# 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

Save the file and restart UFW.

$ sudo systemctl restart ufw

Now attempt logging into the server from a different system with the wrong credentials and notice that you will be locked out for 120 seconds after the first failed login attempt.

You can verify this by checking the auth.log log file.

$ sudo tail -f  /var/log/auth.log
Check SSH Brute Force Attacks
Check SSH Brute Force Attacks

After the next failed log attempt, the block time increases to 240 seconds, then 480 seconds, then 960 seconds, and so on.

Block SSH Attacks Using Firewalld

If you are running firewalld, ensure that it is set up and enabled. Then execute the following command to enable sshguard on your preferred zone.

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

To apply the changes, reload Firewalld and sshguard.

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

Then verify the rule as follows:

$ sudo firewall-cmd —-info-ipset=sshguard4
Check SSHGuard in Firewalld
Check SSHGuard in Firewalld

Block SSH Attacks Using Iptables

If you are still using Iptables, first, create a new chain rule for sshguard in Iptables to start blocking the bad guys.

# iptables -N sshguard

Next, update the VSTUP řetěz k přímému provozu sshguard a blokovat veškerý provoz od škodlivých stran.

# iptables -A INPUT -j sshguard

To block specific ports such as SSHPOP, a IMAP od zneuživatelů spustit příkaz :

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

And finally, save the rule for the changes to come into effect.

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

Step 4: How to Whitelist SSH Blocked Hosts

To whitelist a blocked host, simply specify its hostname or IP address in the whitelist file which is located in:

/etc/sshguard/whitelist - Ubuntu / Debian /etc/sshguard.whitelist - RHEL-založené distros

Thereafter, be sure to restart the sshguard démon a firewall backend pro změny použít.

In this guide, we have demonstrated how you can block SSH Bruteforce útoky pomocí SSHGuard démon na serverech Linux.

Source: https://www.tecmint.com/block-ssh-brute-force-attacks-sshguard/

 

========== VERZE 2 =============

 

SSHGuard je démon s otevřeným zdrojovým kódem, který chrání hostitele před útoky brutální síly. Toho se dosahuje monitorováním a agregací systémových protokolů, detekováním útoků a blokováním útočníků pomocí jednoho z backendů firewallu Linux: iptables, FirewallD, pf a ipfw.

SSHGuard, původně navržený tak, aby poskytoval další vrstvu ochrany pro službu OpenSSH, chrání také širokou škálu služeb, jako jsou Vsftpd a Postfix. Rozpozná několik formátů protokolu včetně souborů Syslog, Syslog-ng a raw log.

[Možná se vám také líbí: Jak zabezpečit a zabezpečit server OpenSSH]

SSHGuard je docela podobný Fail2ban pouze to, že je napsán v C (Fail2ban je psán v Pythonu), je lehčí a poskytuje méně funkcí.

V této příručce ukážeme, jak můžete nainstalovat a nakonfigurovat SSHGuard tak, aby blokoval útoky brutální síly SSH na vašem Linuxovém serveru.

Krok 1: Nainstalujte SSHGuard do Linuxu

Začneme instalací SSHGuard v Linuxu.

Nainstalujte SSHGuard na Debian / Ubuntu

Nejprve aktualizujte seznamy balíčků a poté nainstalujte SSHGuard z výchozích úložišť pomocí správce balíčků apt.

$ sudo apt update $ sudo apt install sshguard

Po instalaci se služba SSHGuard spustí automaticky a můžete to ověřit pomocí příkazu :

$ sudo systemctl status sshguard
How to Block SSH Brute Force Attacks Using SSHGUARD
Zkontrolujte SSHGuard v Ubuntu

Nainstalujte SSHGuard do systémů RHEL

Pro distribuce založené na RHEL, jako jsou CentOS, Rocky a AlmaLinux, začněte instalací úložiště EPEL, jak je uvedeno v níže uvedeném příkazu.

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

S EPEL na místě, pokračujte a nainstalujte SSHGuard pomocí správce balíků dnf.

$ sudo dnf install sshguard

Po instalaci spusťte a nastavte SSHGuard tak, aby se spustil při spuštění nebo restartu systému.

$ sudo systemctl start sshguard $ sudo systemctl enable sshguard

Nezapomeňte ověřit, že SSHGuard běží podle očekávání.

$ sudo systemctl status sshguard
How to Block SSH Brute Force Attacks Using SSHGUARD
Zkontrolujte SSHGuard v RHEL

Krok 2: Konfigurace SSHGuard v Linuxu

SSHGuard aktivně monitoruje deník /var/log/auth.log, / var/log/secure systemd a soubory syslog-ng pro neúspěšné pokusy o přihlášení.

Pro každý neúspěšný pokus o přihlášení je vzdálený hostitel zakázán na omezenou dobu, která je ve výchozím nastavení nastavena na 120 sekund. Poté doba zákazu stoupá o faktor 1,5 s každým následným neúspěšným pokusem o přihlášení.

Čas, kdy jsou urážliví hostitelé zakázáni, je kromě dalších parametrů uveden v souboru sshguard.conf. K konfiguračnímu souboru můžete přistupovat pomocí editoru vim, jak je znázorněno.

$ sudo vim /etc/sshguard/sshguard.conf

V distribucích založených na RHEL je konfigurační soubor umístěn v následující cestě.

$ sudo vim /etc/sshguard.conf

Zde je ukázka konfiguračního souboru při prohlížení z Ubuntu / Debian.

How to Block SSH Brute Force Attacks Using SSHGUARD
Soubor konfigurace SSHGUARD

Zaměřme se na hlavní možnost.

Krok 3: Nakonfigurujte SSHGuard tak, aby blokoval útoky SSH Brute Force

Chcete-li odvrátit útoky brutální síly, musíte nakonfigurovat následující brány firewall, abyste mohli pracovat s sshguardem.

Blokovat útoky SSH pomocí UFW

Pokud máte v systému Ubuntu / Debian nainstalován a povolen UFW, upravte soubor /etc/ufw/before.rules.

$ sudo vim atd. / Ufw/before.rules

Přidejte následující řádky těsně za povolením vše v sekci zpětného smyčky.

# povolit vše na zpětném odkupu -A ufw-před vstupem -i lo -j ACCEPT-A ufw-před výstupem -o lo -j ACCEPT # ovládání před sshd na sshguard: sshguard - [0: 0] -A ufw-před vstupem -p tcp -dport 22 -j sshguard

Uložte soubor a restartujte UFW .

$ sudo systemctl restart ufw

Nyní se pokuste přihlásit na server z jiného systému se špatnými přihlašovacími údaji a všimněte si, že budete uzamčeni po dobu 120 sekund po prvním neúspěšném pokusu o přihlášení.

Můžete to ověřit kontrolou souboru protokolu auth.log.

$ sudo tail -f / var / log / auth.log
How to Block SSH Brute Force Attacks Using SSHGUARD
Zkontrolujte útoky SSH Brute Force

Po dalším neúspěšném pokusu o protokol se doba bloku zvýší na 240 sekund, poté na 480 sekund, poté na 960 sekund atd.

Blokovat útoky SSH pomocí Firewalld

Pokud používáte firewalld, ujistěte se, že je nastaven a povolen. Poté proveďte následující příkaz a povolte sshguard ve vaší preferované zóně.

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

Chcete-li použít změny, znovu načtěte Firewalld a sshguard.

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

Poté pravidlo ověřte následovně:

$ sudo firewall-cmd --info-ipset = sshguard4
How to Block SSH Brute Force Attacks Using SSHGUARD
Zkontrolujte SSHGuard v Firewalld

Blokovat útoky SSH pomocí iptables

Pokud stále používáte Iptables, nejprve vytvořte nové řetězové pravidlo pro sshguard v Iptables, abyste mohli začít blokovat padouchy.

# iptables -N sshguard

Dále aktualizujte řetězec INPUT tak, aby nasměroval provoz na sshguard a zablokoval veškerý provoz od škodlivých stran.

# iptables -A INPUT -j sshguard

Chcete-li zablokovat konkrétní porty, jako jsou SSH, POP a IMAP, od zneuživatelů, spusťte příkaz :

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

A konečně, uložte pravidlo, aby změny vstoupily v platnost.

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

Krok 4: Jak belošské SSH blokované hostitele

Chcete-li zablokovat blokovaného hostitele, jednoduše zadejte jeho název hostitele nebo adresu IP do souboru whitelist, který je umístěn v:

/ etc / sshguard / whitelist - Ubuntu / Debian /etc/sshguard.whitelist - RHEL-založené distros

Poté nezapomeňte restartovat démona sshguard a backend firewallu, aby se změny mohly použít.

V této příručce jsme ukázali, jak můžete blokovat útoky SSH Bruteforce pomocí démona SSHGuard na serverech Linux

Source: https://pythonlinux.com/2022/05/10/how-to-block-ssh-brute-force-attacks-using-sshguard/