Como faço para acompanhar as tentativas de login com falha do SSH?

123

Eu gostaria de ver se alguém está tentando fazer o login pela força bruta no meu servidor Ubuntu 12.04 por SSH. Como posso ver se tais atividades estão ocorrendo?

    
por Ivan 20.08.2012 / 08:32

2 respostas

138

Todas as tentativas de login são registradas em /var/log/auth.log .

1. Filtro para logins SSH interativos de força bruta

Abra um terminal e digite o abaixo; se for maior que 1 página, você poderá rolar para cima e para baixo; digite q para sair:

grep sshd.\*Failed /var/log/auth.log | less
  • Aqui está um exemplo real de um dos meus VPSs:

    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. Procure falhas em conexões (ou seja, nenhuma tentativa de login, pode ser um scanner de porta, etc.):

Use este comando:

grep sshd.*Did /var/log/auth.log | less
  • Exemplo:

    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
    

Como reduzir tentativas de login com falhas / força bruta

  • Tente mudar seu SSH para uma porta não padrão do padrão 22
  • Ou instale um script de proibição automática, como fail2ban .
por ish 20.08.2012 / 08:48
67

Eu diria que os logs de monitoramento são uma solução fraca, especialmente se você tiver uma senha fraca em uma conta. As tentativas de brute muitas vezes tentam pelo menos centenas de chaves por minuto. Mesmo se você tiver um trabalho cron configurado para enviar e-mails para você de tentativas brutas, pode levar horas até você chegar ao seu servidor.

Se você tiver um servidor SSH voltado para o público, precisará de uma solução que seja iniciada por muito tempo antes de ser hackeada.

Recomendo vivamente fail2ban . O wiki deles diz o que faz melhor do que eu.

  

O Fail2ban verifica arquivos de log (por exemplo, /var/log/apache/error_log ) e proíbe IPs que mostram os sinais maliciosos - muitas falhas de senha, procurando explorações etc. Geralmente, o Fail2Ban é usado para atualizar regras de firewall para rejeitar os endereços IP de um determinado quantidade de tempo, embora qualquer outra ação arbitrária (por exemplo, enviar um e-mail ou ejetar a bandeja do CD-ROM) também possa ser configurada. Fora da caixa, o Fail2Ban vem com filtros para vários serviços (apache, curier, ssh, etc).

Obter proteção é tão simples quanto sudo apt-get install fail2ban .

Por padrão, assim que alguém tiver três tentativas fracassadas, seu IP recebe uma proibição de cinco minutos. Esse tipo de atraso essencialmente interrompe uma tentativa de força bruta de SSH, mas isso não estragará seu dia se você esquecer sua senha (mas você deve estar usando as chaves de qualquer maneira!)

    
por Oli 23.08.2012 / 11:12