Script blacklist shorewall

Visiteur
Visiteur
Caché :
#!/bin/sh
#on commence par récupérer l'ip des vilains méchants a partir du log, et on la met dans un fichier
#!/bin/sh
BLACKLIST=/var/log/blacklist.log
#on commence par récupérer l'ip des mécréants a partir du log, et création de la blacklist
cat /var/log/auth.log | grep "Failed" | awk -F "from" '{ print $2 }' | awk '{ print $1 }' | sort -u >/var/log/blacklist.log
cat /var/log/auth.log | grep "Illegal" | awk -F "from" '{ print $2 }' | awk '{ print $1 }' | sort -u >>/var/log/blacklist.log
cat /var/log/messages | grep "Shorewall:net2fw
ROP:IN" | awk -F "SRC=" '{ print $2 }' | awk '{ print $1 }' | sort -u >>/var/log/blacklist.log
#pour chaque ip on compte combien il y a eu d'erreurs d'authentification
for i in `cat /var/log/blacklist.log` ; do
nberreurs1=`cat /var/log/auth.log | grep "Failed" | grep $i | wc -l`
nberreurs2=`cat /var/log/auth.log | grep "Illegal" | grep $i | wc -l`
nberreurs3=`cat /var/log/messages | grep "Shorewall:net2fw
ROP:IN" | grep $i | wc -l`
let nberreurs=$nberreurs1+$nberreurs2+$nberreurs3
#s'il y a eu plus de 3 erreurs et que l'ip n'est pas déjà blacklistée et bien on la blackliste !
if [ "$nberreurs" -ge "3" ]
then
if [ "`cat /etc/shorewall/blacklist | grep $i`" = "" ]
then
echo "$i" >>/etc/shorewall/blacklist
fi
fi
done
echo "
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE" >> /etc/shorewall/blacklist
shorewall refresh &>/dev/null
#on commence par récupérer l'ip des vilains méchants a partir du log, et on la met dans un fichier
#!/bin/sh
BLACKLIST=/var/log/blacklist.log
#on commence par récupérer l'ip des mécréants a partir du log, et création de la blacklist
cat /var/log/auth.log | grep "Failed" | awk -F "from" '{ print $2 }' | awk '{ print $1 }' | sort -u >/var/log/blacklist.log
cat /var/log/auth.log | grep "Illegal" | awk -F "from" '{ print $2 }' | awk '{ print $1 }' | sort -u >>/var/log/blacklist.log
cat /var/log/messages | grep "Shorewall:net2fw

#pour chaque ip on compte combien il y a eu d'erreurs d'authentification
for i in `cat /var/log/blacklist.log` ; do
nberreurs1=`cat /var/log/auth.log | grep "Failed" | grep $i | wc -l`
nberreurs2=`cat /var/log/auth.log | grep "Illegal" | grep $i | wc -l`
nberreurs3=`cat /var/log/messages | grep "Shorewall:net2fw

let nberreurs=$nberreurs1+$nberreurs2+$nberreurs3
#s'il y a eu plus de 3 erreurs et que l'ip n'est pas déjà blacklistée et bien on la blackliste !
if [ "$nberreurs" -ge "3" ]
then
if [ "`cat /etc/shorewall/blacklist | grep $i`" = "" ]
then
echo "$i" >>/etc/shorewall/blacklist
fi
fi
done
echo "
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE" >> /etc/shorewall/blacklist
shorewall refresh &>/dev/null
mon soucis est que dans la 2ieme partie du script celle qui rajoute les ip dans /etc/shorewall/blacklist
me les rajoute pas a la suite des deja presentes et que la ligne "#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE" se retrouve bien a la fin comme suit et une seule fois malgré d’innombrable mise a jour des ip
***
213.109.96.0/22
213.109.208.0/20
216.151.192.0/20
216.162.112.0/20
216.212.192.0/19
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
même script mais avec variante iptable
#s'il y a eu plus de 3 erreurs et que l'ip n'est pas déjà blacklistée et bien on la blackliste !
if [ "$nberreurs" -ge "3" ]
then
if [ "`cat /var/log/blacklist.log | grep $i`" = "" ]
then
echo "Blocage de $i..."
iptables -A INPUT -t filter -s $i -j DROP
fi
fi
done
la ca marche tres bien mais le soucis c"est ca ne garde pas en "memoire" car c'est shorewall qui gère d'ou ma préférence pour la blacklist de shorewall
pour utiliser la blacklist avec shorewall rajouté blacklist a /etc/shorewall/interfaces comme suit:
net eth0 detect blacklist
PS: installer rsyslog (pour avoir tout les logs)
pour lire un log en direct
console root
tail -f /var/log/messages
Édité par Visiteur Le 02/03/2013 à 22h41
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie