Bonjour,

Georges Roux a �crit, vendredi 24 d�cembre 2004, � 15:22 :
[...]
> #!/bin/bash
> #banip.sh
> 
> BANNEDIP="ALL: "
> COUNT=`sudo grep Failed /var/log/auth.log | cut -d ' ' -f 13 | grep :: | 
> cut -d ':' -f 4 | sort -u | wc -l`

Compter les IP diff�rentes n'est pas  tr�s utile pour tester -gt 0 ?  On
peut aussi �viter  le recours � sudo en utilisant le  groupe (adm ?) qui
peut lire les auth.log.

COUNT="$(grep -c -F Failed /var/log/auth.log)"

On peut  aussi se passer  de COUNT, et  tester si la liste  BANNEDIP est
vide avant d'allonger hosts.deny.

> if [ "$COUNT" -gt 0 ]
>  then
>  for IP in `sudo grep Failed /var/log/auth.log | cut -d ' ' -f 13 | grep :: 
>  | cut -d ':' -f 4 | sort -u`
>    do
>      BANNEDIP="$BANNEDIP $IP,";
>    done
> else BANNEDIP=""
> fi
> echo $BANNEDIP >> /etc/hosts.deny
> 
> 
> et je met ca dans ma crontab bon il doit y avoir encore plein de truc a 
> corriger

Le else  est inutile, et  le echo  final peut remonter  � la fin  du if,
apr�s la boucle for. Cet echo doit �tre fait sous root ;)

Il  faudrait supprimer les  doublons avec  les IP  d�j� bannies  dans un
fichier banned_ips, puis r�g�n�rer le hosts.deny � l'aide d'un fichier
hosts.deny.proto.

En cas  d'IP dynamique, �a ne  servira pas beaucoup  de garder longtemps
des IP pr�cises ; il est  peut-�tre plus facile de d�terminer les IP, ou
plages d'IP, autoris�es � se connecter par iptables ou/et ssh.


> le script prend l'ip avec un seul acces rejet� pour le moment
> et je pense qu'avec awk on pourrais faire mieux

#!/usr/bin/awk -f
BEGIN{ max_fail=10 }
/Failed password/{ n[$13]++ }
# on pourrait v�rifier si $13 ressemble � une IP, et/ou
# num�roter de droite � gauche, ici : $13 = $(NF - 3)
END {
    for (x in n) {
        if(n[x] > max_fail) { print x }
        # ou : print x" \t"n[x] pour voir le score
    }
}

> pascal wrote:
> 
> >Bonjour!
> >C'est �trange c'est le m�me genre d'attaque que celle d�crite dans un 
> >mail pr�c�dent qui provenait de ...c�te d'ivoire!

Les 3 IP cit�es sont en Chine (2) et en Hollande ...

Bonnes f�tes,
-- 
Jacques L'helgoualc'h

Répondre à