Blokujte SSH útoky pomocí DenyHosts

Petr Krčmář 1. 9. 2009

Pokud vlastníte či prostě jen jen spravujete nějaký ten server, pravděpodobně na něm provozujete také SSH. Pokud občas nakouknete do logů, zřejmě se zděsíte, kolikrát denně se k vám pokouší dostat někdo cizí. Dle přísloví "na hrubý pytel hrubá záplata" si jednu takovou pořádnou záplatu ukážeme.

Útoků na otevřený SSH port je na internetu skutečně hodně a zkušený admin se jimi obvykle ani nezabývá. Existuje několik různých způsobů, jak je možné se proti nim bránit. Jedním z nich je sofistikovaný nástroj DenyHosts, který dokáže automaticky bránit vaše hradby.

Co to přesně je?

Jedná se o skript, který automaticky sleduje záznamy v /var/log/secure (v Debianu /var/log/auth.log obecně ale kdekoliv) a hlídá neúspěšné pokusy o přihlášení do SSH. Pokud skript po analýze zjistí, že se mu požadavky z některého počítače zdají být dostatečně podezřelé, uloží záznam do /etc/hosts.deny, čímž do budoucna znemožní další připojování konkrétního stroje k SSH.

Program automaticky sleduje několik různých údajů jako je počet neúspěšných pokusů o přihlášení, pokusy o přihlašování k neexistujícím uživatelům, snahy o přihlášení pod uživatelem root a další. Zároveň jsou například sledovány podezřelé úspěšné pokusy o přihlášení, tedy takové, kterým předcházelo větší množství neúspěšných pokusů.

Zároveň si DenyHosts udržuje vlastní záznamy o neúspěšných pokusech o přihlášení, o nejčastěji zkoušených uživatelských jménech a podobně. Ty program sám později znovu využívá při svých analýzách nebo je možné je využít k nasazení dalších obranných řešení například pro nejčastěji napadaného uživatele.

Jak to můžu používat?

Pokud používáte unixový systém, v používání vám nic nebrání. Oficiálně DenyHosts podporuje linuxové systémy, FreeBSD, OpenBSD a Mac OS X. Obecně by ale měl běžet kdekoliv, kde je k dispozici standardní log a OpenSSH server.

Samotný skript je napsán v Pythonu, což je také jediná jeho závislost. Stáhnout jej můžete z domovské stránky projektu nebo jej najdete ve své distribuci. Je velmi pravděpodobné, že tam bude. V opačném případě stačí nainstalovat Python, stáhnout archiv s programem a spustit instalaci. Balíček má každopádně jen okolo 60 KB.

DenyHosts je možné spouštět buďto ručně, pravidelně pomocí Cronu nebo jej můžete nechat běžet jako démona. Ve všech případech si udržuje informaci o tom, kde naposledy v logu skončil a analyzuje vždy jen novější záznamy.

Každopádně budete potřebovat celý proces nastavit. To se provádí v konfiguračním souboru /etc/denyhosts.conf. Obsah je velmi jednoduchý a přehledná. První volbou SECURE_LOG určíte cestu k logu, který má být sledován a analyzován. Stejně tak je možnost nastavit konfigurační soubor pro blokaci přístupů pomocí nastavení HOSTS_DENY. Obvykle je to /etc/hosts.deny, v některých systémech se ale také můžete setkat s /etc/hosts.evil  a jinými odlišnostmi.

Volba PURGE_DENY umožňuje nastavit, zda má zablokovaný host po určité době dostat amnestii. Pokud je volba prázdná, milost se neuděluje a host je blokován trvale. Můžete ovšem vložit časový údaj v podobě čísla a přípony m, h, d, w, y (minut, hodin, dní, týdnů a let), například 2w. Za dva týdny bude blokovanému hostu opět umožněn přístup k vašemu SSH.

K předchozí volbě se váže také položka PURGE_THRESHOLD, která umožňuje zatočit s recidivisty. Udává vlastně maximální počet amnestií, které může dostat. Pokud se opakují další nekalosti, je host blokován trvale.

Položka BLOCK_SERVICE určuje název služby, který bude uveden v /etc/hosts.deny  pro blokaci. Obvykle chcete nezbednému protějšku zablokovat sshd, ale pokud chcete být přísní, můžete mu zablokovat přístup ke všem službám na vašem serveru pomocí  ALL.

Dostáváme se k volbám samotné blokace. Důležitá položka DENY_THRESHOLD_INVALID určuje, v kolika pokusech o přihlášení musí konkrétní host selhat, aby byl blokován. Jedná se o pokusy, kdy je vyplňováno už neexistující jméno uživatele. Standardně je doporučována hodnota okolo pětky. Podobně hodnota DENY_THRESHOLD_VALID určuje maximální počet neúspěšných pokusů, ale s existujícím uživatelem. Výjimkou je uživatel root. Pro toho existuje speciální hranice v položce DENY_THRESHOLD_ROOT a je obvykle nastavena na pouhý jeden pokus.

Konfigurační soubor dále pokračuje například volbami pro e-mailové reporty, které je možno automaticky zasílat administrátorovi, možnost resetovat počítadlo neúspěšných pokusů hosta při úspěšném přihlášení a volbami specifickými pro běh v režimu démona (například časový interval analýzy – obvykle 30 sekund).

Velmi užitečná je také možnost zvolit konkrétní hosty, kteří nebudou nikdy blokováni. To se hodí zejména v případě, že znáte konkrétní IP adresy strojů, ze kterých se vždy přihlašují regulérní uživatelé. Ty vepište do souboru allowed-hosts, který je v pracovním adresáři programu (konfigurační volba WORK_DIR) – obvykle /var/lib/denyhosts/. Zapisuje se jedna IP adresa na jeden řádek souboru.

Synchronizace zjištěných údajů

Za normálních okolností program funguje na lokální úrovni, sleduje dění na svém SSH serveru a blokuje lokálně pokusy o napadení a hádání hesel. Vývojáře ovšem později napadlo (přidáno od verze 2.0), že by nebylo špatné tyto informace sdílet mezi servery a zlepšit tak schopnosti blokace hostů, kteří už se o útok pokoušeli na jiném místě na světě. Proto vznikla možnost synchronizace zjištěných dat mezi různými instalacemi DenyHosts.

Tato volba je standardně vypnutá a pokud ji chcete začít používat, odkomentujte v konfiguračním souboru volbu SYNC_SERVER, která obsahuje odkaz na synchronizační server. Na ten jsou automaticky odesílána naměřená data a váš démon naopak může stahovat to, co už zjistili a zablokovali ostatní. Odesílání či přijímání dat je možné v konfiguračních volbách SYNC_UPLOAD a SYNC_DOWNLOAD zakázat.

Démon se pak periodicky připojuje a stahuje či posílá jen data, která se změnila. Odesíláte informace o všech blokovaných hostech na své straně. Naopak jste informováni o všech blokacích od ostatních uživatelů DenyHosts. Celkem je do tohoto projektu připojeno téměř 85 000 uživatelů a společně blokují přes čtvrt milionu unikátních hostů. Můžete si prohlédnout aktuální statistiky.

Závěrem

Utilita DenyHosts je velmi užitečný způsob, jak se vyhnout problémům s internetovými útoky na SSH servery. Díky synchronizaci umožňuje velmi rychle získat přehled o počítačích, které se pokoušejí automaticky hádat hesla a dostat se do vašeho systému. Pokud používáte SSH, může DenyHosts výrazně ulehčit vašemu serveru.

Našli jste v článku chybu?
Podnikatel.cz: Česká pošta vycouvala ze služby ČP Cloud

Česká pošta vycouvala ze služby ČP Cloud

Lupa.cz: CzechInvest pomůže startupům na hi-tech akce

CzechInvest pomůže startupům na hi-tech akce

Vitalia.cz: Vakcína Cervarix je oficiálně i pro chlapce

Vakcína Cervarix je oficiálně i pro chlapce

Lupa.cz: Elektronika tajemství zbavená. Jak s ní začít?

Elektronika tajemství zbavená. Jak s ní začít?

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

DigiZone.cz: Elektrická Formule E. Práva má Arena Sport

Elektrická Formule E. Práva má Arena Sport

120na80.cz: Lepší poporodní sexuální život? Žádný problém

Lepší poporodní sexuální život? Žádný problém

Lupa.cz: Samořídicí taxíky jsou tu. Začíná s nimi Uber

Samořídicí taxíky jsou tu. Začíná s nimi Uber

120na80.cz: Pylová sezóna nejsilnějších alergenů končí

Pylová sezóna nejsilnějších alergenů končí

Root.cz: Čína má nejvýkonnější počítač světa

Čína má nejvýkonnější počítač světa

Vitalia.cz: Kedlubna, neobyčejná zelenina

Kedlubna, neobyčejná zelenina

Vitalia.cz: Syfilis: To není „nemoc z lásky“

Syfilis: To není „nemoc z lásky“

DigiZone.cz: Vláda schválila digitální vysílání ČRo

Vláda schválila digitální vysílání ČRo

DigiZone.cz: Fotbal na O2 TV Sport posiluje

Fotbal na O2 TV Sport posiluje

Vitalia.cz: 9 potravin, které nesmí chybět v jídelníčku těhotné

9 potravin, které nesmí chybět v jídelníčku těhotné

DigiZone.cz: Hodlá Markíza skončit v DVB-T?

Hodlá Markíza skončit v DVB-T?

Root.cz: Xiaomi má vlastní notebook podobný Macu

Xiaomi má vlastní notebook podobný Macu

Lupa.cz: Nechcete datacentrum? Jsou na prodej

Nechcete datacentrum? Jsou na prodej

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře