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?
Vitalia.cz: Je kočka riziko pro těhotnou ženu?

Je kočka riziko pro těhotnou ženu?

120na80.cz: Tipy pro odvodnění organismu

Tipy pro odvodnění organismu

DigiZone.cz: Oživení ekonomiky by mělo navýšit reklamu

Oživení ekonomiky by mělo navýšit reklamu

Podnikatel.cz: Rekord! Na vedlejšák podniká přes 400 000 lidí

Rekord! Na vedlejšák podniká přes 400 000 lidí

Podnikatel.cz: Karuselové podvody. Jak se nepřiplést?

Karuselové podvody. Jak se nepřiplést?

120na80.cz: Řepík má protizánětlivé účinky a detoxikuje

Řepík má protizánětlivé účinky a detoxikuje

Vitalia.cz: Za zánět močových cest mohou plavky

Za zánět močových cest mohou plavky

DigiZone.cz: Sázka na e-sporty stanici Prima vychází

Sázka na e-sporty stanici Prima vychází

Lupa.cz: Japonská invaze. Proč SoftBank kupuje ARM?

Japonská invaze. Proč SoftBank kupuje ARM?

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

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

Podnikatel.cz: Pokémon Go? Podnikatel by se měl zajímat

Pokémon Go? Podnikatel by se měl zajímat

Měšec.cz: Na návštěvě: telefonní centrum Europ Assistance

Na návštěvě: telefonní centrum Europ Assistance

Měšec.cz: Kurzy platebních karet: vyplatí se platit? (TEST)

Kurzy platebních karet: vyplatí se platit? (TEST)

DigiZone.cz: Hra o trůny: natáčení 7. řady posunuto

Hra o trůny: natáčení 7. řady posunuto

DigiZone.cz: Skylink o půlnoci vypnul 12 525

Skylink o půlnoci vypnul 12 525

Lupa.cz: eIDAS: Nepřehnali jsme to s výjimkami?

eIDAS: Nepřehnali jsme to s výjimkami?

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!

Podnikatel.cz: Ledvina v zástavě. I tak zachraňují byznys

Ledvina v zástavě. I tak zachraňují byznys

DigiZone.cz: Loewe Subwoofer 300 pro televizory

Loewe Subwoofer 300 pro televizory

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy