J'ai juste cat /var/log/auth.log
Connectez-vous et voyez qu'il y a beaucoup | grep "Failed password for"
enregistrements.
Cependant, il existe deux types d'enregistrement possibles - pour un utilisateur valide/non valide. Cela complique mes tentatives de | cut
eux.
J'aimerais voir créer une liste (fichier texte) avec adresses IP d'éventuels attaquants et nombre de tentatives pour chaque adresse IP. Y a-t-il un moyen facile de le créer?
En outre, en ce qui concerne seulement ssh
: quels sont tous les enregistrements de /var/log/auth.log
Devrais-je envisager lors de la liste des attaquants possibles?
Exemple de mon "auth.log" avec des numéros cachés:
cat /var/log/auth.log | grep "Failed password for" | sed 's/[0-9]/1/g' | sort -u | tail
Résultat:
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
Vous pouvez utiliser quelque chose comme ceci:
grep "Failed password for" /var/log/auth.log | grep -Po "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" \
| sort | uniq -c
Il greps pour la chaîne Failed password for
et extraits (-o
) L'adresse IP. Il est trié et uniq
compte le nombre de seventions.
La sortie ressemblerait alors à ceci (avec votre exemple en tant que fichier d'entrée):
1 111.111.111.1
3 111.11.111.111
6 111.111.11.111
Le dernier de la sortie a essayé 6 fois.
Ce pourrait être une solution gonflée mais je vous suggère de regarder installer quelque chose comme échec1ban
Il est fait pour ce type de journalisation + ajoute le bonus de pouvoir ajouter (temporaire) dans votre pare-feu pour bloquer les délinquants en répétant. Assurez-vous de blanchir votre propre adresse IP mais j'ai réussi à me verrouiller temporairement à quelques reprises
Cela a bien fonctionné bien pour moi. (Les IP ont été changés pour protéger la culpabilité)
$ awk '/Failed/ {x[$(NF-3)]++} END {for (i in x){printf "%3d %s\n", x[i], i}}' /var/log/auth.log | sort -nr
65 10.0.0.1
14 10.0.0.2
4 10.0.0.3
1 10.0.0.4
grep "Failed password for" /var/log/auth.log |
awk -F"from" {'print $2'} |
awk {'print $1'} |
sort -u