Acabei de cat /var/log/auth.log
registrar e ver que existem muitos | grep "Failed password for"
registros.
No entanto, existem dois tipos de registro possíveis - para usuário válido / inválido. Isso complica minhas tentativas para | cut
eles.
Gostaria de ver criar uma lista (arquivo de texto) com endereços IP de possíveis invasores e número de tentativas para cada endereço IP. Existe alguma maneira fácil de criá-lo?
Além disso, apenas em relação a ssh
: O /var/log/auth.log
que devo considerar em todos os registros ao fazer a lista de possíveis invasores?
Exemplo do meu 'auth.log' com números ocultos:
cat /var/log/auth.log | grep "Failed password for" | sed 's/[0-9]/1/g' | sort -u | tail
Resultado:
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user ucpss from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user vijay from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user webalizer from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user xapolicymgr from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user yarn from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zookeeper from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for invalid user zt from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for mysql from 111.111.11.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.11.111.111 port 11111 ssh1
Mar 11 11:11:11 vm11111 sshd[111]: Failed password for root from 111.111.111.1 port 11111 ssh1
/etc/ssh/sshd_config
... configurações de pesquisaPasswordAuthentication no
ePermitRootLogin without-password
... todas essas tentativas de senha serão frustradas antes de entrar no auth.log ...Respostas:
Você poderia usar algo como isto:
Ele recebe a string
Failed password for
e extrai (-o
) o endereço IP. Ele é classificado euniq
conta o número de ocorrências.A saída ficaria assim (com o seu exemplo como arquivo de entrada):
O último na saída tentou 6 vezes.
fonte
| sort -n
à cadeia.sed -nr '/Failed/{s/.*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/;p}'
substitui os dois greps.zgrep "Failed" /var/log/auth.log*
pesquisar nos arquivos de log compactados, o quesed
não pode.Pode ser uma solução inchada, mas eu sugiro que você instale algo como Fail2Ban
Ele é feito para esse tipo de registro + adiciona o bônus de poder adicionar regras (temporárias) ao seu firewall para bloquear os reincidentes. Certifique-se de colocar na lista branca os seus próprios ips, eu consegui me bloquear temporariamente em algumas ocasiões
fonte
Isso funcionou muito bem para mim. (IPs foram alterados para proteger os culpados)
fonte
fonte
password
- não está funcionando. Ele nem cobre tipos de entrada diferentes;awk
a coluna de impressão é alternativa àcut
, e não à solução.uniq -c
como na melhor resposta.