web-dev-qa-db-fra.com

Comment récupérer des adresses IP d'assaillants SSH possibles?

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
18
kravemir

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.

20
chaos

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

6
Jake

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
0
Falsenames
grep "Failed password for" /var/log/auth.log |
    awk -F"from" {'print $2'} |
    awk {'print $1'} |
    sort -u
0
Liviu Popescu