GNU/Linux >> Znalost Linux >  >> Linux

Jak blokovat SSH útoky hrubou silou pomocí SSHGUARD

SSHGuard je open-source démon, který chrání hostitele před útoky hrubou silou. Dosahuje toho prostřednictvím monitorování a agregace systémových protokolů, detekce útoků a blokování útočníků pomocí jednoho z linuxových backendů firewallu: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 je Vsftpd a Postfix. Rozpoznává několik formátů protokolů včetně souborů Syslog, Syslog-ng a raw protokolů.

SSHGuard je docela podobný Fail2banu, jen je napsán v C (Fail2ban je napsán v Pythonu), je lehčí a poskytuje méně funkcí.

V této příručce si ukážeme, jak můžete nainstalovat a nakonfigurovat SSHGuard pro blokování útoků hrubou silou SSH na vašem linuxovém serveru.

Krok 1:Nainstalujte SSHGuard na Linux

Začneme instalací SSHGuard na Linux.

Nainstalujte SSHGuard na Debian/Ubuntu

Nejprve aktualizujte seznamy balíčků a poté nainstalujte SSHGuard z výchozích repozitářů pomocí správce balíčků apt.

$ sudo apt update
$ sudo apt install sshguard

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

$ sudo systemctl status sshguard

Nainstalujte SSHGuard na systémy Yum/RHEL

U distribucí založených na RHEL, jako je CentOS, začněte instalací úložiště EPEL, jak je uvedeno v příkazu níže.

$ sudo yum install epel-release

NEBO

$ sudo dnf install epel-release

S nainstalovaným EPEL 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í systému nebo restartu.

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

Ujistěte se, že SSHGuard běží podle očekávání.

$ sudo systemctl status sshguard

Krok 2:Konfigurace SSHGuard v systému Linux

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

Za každý neúspěšný pokus o přihlášení je vzdálenému hostiteli na omezenou dobu, která je standardně nastavena na 120 sekund, zakázán přístup. Poté se doba zákazu prodlouží o faktor 1,5 s každým dalším neúspěšným pokusem o přihlášení.

Doba, po kterou jsou závadní hostitelé zakázáni, je kromě dalších parametrů uvedena v souboru sshguard.conf. Ke 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 / Debianu.

Zaměření na hlavní možnosti:

  • BACKEND směrnice ukazuje na úplnou cestu spustitelného souboru backendu. V tomto příkladu vidíme, že IPtables je nastaven jako výchozí backend brány firewall.
  • THRESHOLD direktiva blokuje útočníky, když jejich skóre útoku překročí zadanou hodnotu.
  • BLOCK_TIME volba je počet sekund, po které je útočník zablokován po každém následném neúspěšném pokusu o přihlášení. Ve výchozím nastavení je tato hodnota nastavena na 120 po prvním pokusu. To se zvyšuje s každým dalším neúspěšným pokusem o přihlášení.
  • DETECTION_TIME možnost se týká času v sekundách, během kterého je útočník registrován nebo si ho systém pamatuje, než je jeho skóre resetováno.
  • Soubor WHITELIST_soubor možnost ukazuje na úplnou cestu k souboru bílé listiny, který obsahuje hostitele, kteří nemají být na černé listině.

Krok 3:Nakonfigurujte SSHGuard pro blokování útoků hrubou silou SSH

Abyste zabránili útokům hrubou silou, musíte na následujících firewallech nakonfigurovat, aby fungovaly s sshguard.

Blokovat útoky SSH pomocí UFW

Pokud máte na svém systému Ubuntu / Debian nainstalovaný a povolený UFW, upravte soubor /etc/ufw/before.rules.

$ sudo vim atd/ufw/before.rules

$ sudo vim etc/ufw/before.rules

Přidejte následující řádky hned za sekci „povolit vše při zpětné smyčce“.

# 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

Uložte soubor a restartujte UFW.

$ sudo systemctl restart ufw

Nyní se pokuste přihlásit k serveru z jiného systému s nesprávnými přihlašovacími údaji a všimněte si, že po prvním neúspěšném pokusu o přihlášení budete na 120 sekund zablokováni.

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

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

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í brány firewall

Pokud používáte firewall, ujistěte se, že je nastaven a povolen. Poté spusťte následující příkaz pro aktivaci 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é ověřte pravidlo následovně:

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

Blokovat SSH útoky pomocí Iptables

Pokud stále používáte Iptables, nejprve vytvořte nové řetězové pravidlo pro sshguard v Iptables, abyste začali blokovat nežádoucí hosty.

# iptables -N sshguard

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

# iptables -A INPUT -j sshguard

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

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

A nakonec pravidlo uložte, aby změny vstoupily v platnost.

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

Krok 4:Jak přidat na seznam povolených hostitelů blokovaných SSH

Chcete-li blokovaného hostitele přidat na seznam povolených, jednoduše zadejte jeho název hostitele nebo IP adresu v souboru whitelistu, který se nachází v:

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

Poté nezapomeňte restartovat démona sshguard a backend firewallu, aby se změny projevily.

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

Další návody naleznete na naší domovské stránce.


Linux
  1. Ssh – Jak se připojit k počítači přes jiný počítač pomocí Ssh?

  2. Ssh – Jak urychlit příliš pomalé přihlašování Ssh?

  3. Jak připojit vzdálený hostitel pomocí příkazu ssh

  1. Jak SSH na server pomocí jiného serveru?

  2. Jak resetovat heslo správce Plesk pomocí SSH na serveru Linux?

  3. Jak stáhnout soubor ze serveru pomocí SSH?

  1. Jak obnovit databázi MySQL pomocí příkazu v SSH?

  2. Jak nastavit GeoIP Block pomocí Apache

  3. Jak vynutím odpojit obrazovku od jiné relace SSH?