Pesquisa de site

Como encontrar todas as tentativas de login SSH com falha no Linux


Cada tentativa de login no servidor SSH é rastreada e registrada em um arquivo de log pelo daemon rsyslog no Linux. O mecanismo mais básico para listar todas as tentativas de login SSH com falha no Linux é uma combinação de exibição e filtragem dos arquivos de log com a ajuda do comando cat ou do comando grep.

Para exibir uma lista de logins SSH com falha no Linux, emita alguns dos comandos apresentados neste guia. Certifique-se de que esses comandos sejam executados com privilégios de root.

O comando mais simples para listar todos os logins SSH com falha é o mostrado abaixo.

grep "Failed password" /var/log/auth.log

O mesmo resultado também pode ser alcançado emitindo o comando cat.

cat /var/log/auth.log | grep "Failed password"

Para exibir informações extras sobre logins SSH com falha, emita o comando conforme mostrado no exemplo abaixo.

egrep "Failed|Failure" /var/log/auth.log

No CentOS ou RHEL, as sessões SSH com falha são registradas no arquivo /var/log/secure. Emita o comando acima neste arquivo de log para identificar logins SSH com falha.

egrep "Failed|Failure" /var/log/secure

Uma versão ligeiramente modificada do comando acima para exibir logins SSH com falha no CentOS ou RHEL é a seguinte.

grep "Failed" /var/log/secure
grep "authentication failure" /var/log/secure

Para exibir uma lista de todos os endereços IP que tentaram e não conseguiram fazer login no servidor SSH junto com o número de tentativas fracassadas de cada endereço IP, emita o comando abaixo.

grep "Failed password" /var/log/auth.log | awk ‘{print $11}’ | uniq -c | sort -nr

Nas distribuições Linux mais recentes, você pode consultar o arquivo de log de tempo de execução mantido pelo daemon Systemd por meio do comando journalctl. Para exibir todas as tentativas de login SSH com falha, você deve canalizar o resultado por meio do filtro grep, conforme ilustrado nos exemplos de comando abaixo.

journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure"
journalctl _SYSTEMD_UNIT=sshd.service | egrep "Failed|Failure"  #In RHEL, CentOS 

No CentOS ou RHEL, substitua a unidade daemon SSH por sshd.service, conforme mostrado nos exemplos de comando abaixo.

journalctl _SYSTEMD_UNIT=sshd.service | grep "failure"
journalctl _SYSTEMD_UNIT=sshd.service | grep "Failed"

Depois de identificar os endereços IP que frequentemente atingem seu servidor SSH para fazer login no sistema com contas de usuário suspeitas ou contas de usuário inválidas, você deve atualizar as regras de firewall do sistema para bloquear os endereços IP de tentativas de SSH malsucedidas ou usar um especializado software, como o fail2ban, para gerenciar esses ataques.