Esta é apenas uma maneira de fazer o trabalho. Em vez do nome de usuário, prefiro contar quantas vezes um endereço IP específico tenta se conectar ao meu host, porque posso bani-lo.
awk '/Failed password/{ z[$11]++; }
END{
for (i in z){
if (z[i]>3) printf("%s attemps %s times.\n", i, z[i])
}
}' /var/log/secure
(Claro que pode ser um comando oneliner, eu indentado para aumentar a legibilidade.)
Explicação:
awk
lê o arquivo de log linha por linha.
Se uma linha contiver a string /Failed password/
incrementa um elemento da matriz z[$11]++
index por $11
(isto é, o endereço IP): Eu uso isso como um contador. No final, pesquise na matriz z[$11]
e imprima apenas os endereços IP que tentaram se conectar mais de 3 vezes.
Você pode personalizar o cheque e a mensagem impressa conforme desejar.
Se sua preocupação for com as tentativas de força bruta, sugiro que você use uma ferramenta existente como Fail2ban que verifica os arquivos de log e proíbe os IPs que mostram os sinais maliciosos (por exemplo: muitas falhas de senha, busca de explorações, etc.). É fácil de entender e configurar para atender às suas necessidades.