Jak mohu sledovat selhání přihlašovacích SSH pokusů?

125

Chtěl bych zjistit, jestli se někdo pokouší přihlásit se hrubou silou do mého serveru Ubuntu 12.04 přes SSH. Jak mohu zjistit, zda se takové aktivity provádějí?

    
dané Ivan 20.08.2012 08:32

2 odpovědi

140

Všechny pokusy o přihlášení jsou zaznamenány do/var/log/auth.log.

1. Filtr pro interaktivitu SSH při hrubé síle

Otevřete terminál a zadejte následující; pokud je delší než 1 stránka, budete moci posunovat nahoru a dolů; zadejteq k ukončení:

grep sshd.\*Failed /var/log/auth.log | less
  • Zde je skutečný příklad z jednoho z mých VPS:

    Aug 18 11:00:57 izxvps sshd[5657]: Failed password for root from 95.58.255.62 port 38980 ssh2
    Aug 18 23:08:26 izxvps sshd[5768]: Failed password for root from 91.205.189.15 port 38156 ssh2
    Aug 18 23:08:30 izxvps sshd[5770]: Failed password for nobody from 91.205.189.15 port 38556 ssh2
    Aug 18 23:08:34 izxvps sshd[5772]: Failed password for invalid user asterisk from 91.205.189.15 port 38864 ssh2
    Aug 18 23:08:38 izxvps sshd[5774]: Failed password for invalid user sjobeck from 91.205.189.15 port 39157 ssh2
    Aug 18 23:08:42 izxvps sshd[5776]: Failed password for root from 91.205.189.15 port 39467 ssh2
    

2. Vyhledat selhání připojení (tj. Žádné pokusy o přihlášení, může být scanner portů apod.):

Použijte tento příkaz:

grep sshd.*Did /var/log/auth.log | less
  • Příklad:

    Aug  5 22:19:10 izxvps sshd[7748]: Did not receive identification string from 70.91.222.121
    Aug 10 19:39:49 izxvps sshd[1919]: Did not receive identification string from 50.57.168.154
    Aug 13 23:08:04 izxvps sshd[3562]: Did not receive identification string from 87.216.241.19
    Aug 17 15:49:07 izxvps sshd[5350]: Did not receive identification string from 211.22.67.238
    Aug 19 06:28:43 izxvps sshd[5838]: Did not receive identification string from 59.151.37.10
    

Jak snížit pokusy o přihlášení při selhání / brutální síle

  • Zkuste přepnout SSH na nestandardní port z výchozího 22
  • Nebo nainstalujte skript s automatickým zákazem, například fail2ban .
odpověděl ish 20.08.2012 08:48
67

Chtěl bych tvrdit, že monitorovací protokoly jsou slabým řešením, zejména pokud máte na účtu nějaké slabé heslo. Bláznivé pokusy se často snaží nejméně stovky klíče za minutu. Dokonce i když máte nastavenou službu cron, která vám pošle e-maily o hrubé pokusy, mohlo by to trvat hodiny předtím, než se dostanete na server.

Pokud máte veřejný SSH server, musíte potřebovat řešení, které kopíruje dlouhé předtím, než bude možné hackovat.

Důrazně doporučujifail2ban. Jejich wiki říká, co dělá lépe než já.

  

Fail2ban skenuje soubory protokolu (např./var/log/apache/error_log) a zakazuje IP adresy, které zobrazují škodlivé znaky - příliš mnoho chyb, hledá exploity atd. Obecně Fail2Ban pak aktualizuje pravidla brány firewall, množství času, přestože by mohla být nakonfigurována libovolná jiná akce (např. odeslání e-mailu nebo vysunutí zásobníku CD-ROM). Krabice Fail2Ban je dodávána s filtrem pro různé služby (apache, courier, ssh, atd.).

Získání ochrany je stejně jednoduché jakosudo apt-get install fail2ban.

Ve výchozím nastavení, jakmile někdo má tři neúspěšné pokusy, jejich IP dostane pět minut zákaz. Takové zpoždění v podstatě zastavuje pokus o hrubou sílu SSH, ale nezapomeneš na svůj den, pokud zapomeneš své heslo (ale stejně bys měl používat klíče!)

    
odpověděl Oli 23.08.2012 11:12