Blokování SSH útoku

Součástí mé každodenní práce je deploy aplikací na různé linuxové servery (Fedora, Centos) umístěných někde v Internetu. Pro tohle používám kombinaci nástrojů BASH, SSH a GIT. Plus mínus nějake další věci, které jsem si sám napsal, nebo někde okoukal…

Základem všeho je ale korektně se připojit na server. Absolutní bezpečnostní minimum konfigurace SSH daemona je přihlášení se přes klíče, zakázané hesla a zakázaný účet root. I přesto je neuvěřitelné, jak rychle po oživení nového serveru, se pokusí na něj někdo z Číny, Ruska nebo z podobně zajímavé ciziny přihlásit jako admin, nebo někdo podobný…

Nejdříve jsem se čas od času snažil geolokalizovat IP cizince, a pak jej podle lokality buď zakázal, nebo nechal žít. Ano, v podstatě jsem jej vždy zakázal:

iptables -I INPUT -s IP.UTOCNIKA.NEKDE.CH -j DROP

No a po posledním přihlášení a zadání sudo su – jsem byl docela zděšen: více než 2.000 pokusů a SSH login roota někde z Tramtárie…
Je jasné, že jakýkoliv neautomatizovaný způsob řešení tohoto robotizovaného napadení je absolutně neúčelný, a proto jsem chvíli gůgloval a studoval, abych našel 2 nástroje, které toto rozumně řeší.

DenyHOSTS

DennyHOSTS je pěkný, jodnoduchý nástroj, který prozkoumává váš /var/log/secure a v případě opakovaného neúspěšného pokusu o přihlášení zaznamené IP adresu vtipálka do /etc/hosts.denny a skrze iptable tuto adresu zablokuje. Vedle toho máte možnost v /etc/hosts.allow specifikovat IP adresy, které mají být vždy povolené. Vedle těchto 2 souborů máte jen /etc/denyhosts.conf, kde specifikujete samotná nastavení služby, jako je způsob reportování a podobně.
Významnou předností této aplikace vidím právě v jednoduchosti a přímosti. Nemá fičury jako Fail2ban, ale ty jsem ani zatím nepotřeboval.

Fail2ban

Fail2ban pracuje podobným způsobem jako DenyHOSTS, ale přidává další užitečné funkce, které z něj dělají ještě mocnější nástroj. Jednou z nich je například možnost nastavit automatického odbanování IP adresy po uplynutí zadané doby a podobné věci.