Le Forum Non Officiel de la DEDIBOX
Vous n'êtes pas identifié.
Salut à tous
j'ai un petit pb pour exécuter mon script sous ma crontab :
j'ai fait un script /bin/secure
#!/bin/ksh
##########################################################################################
set +x
#
# Script qui permet de limiter les scan ssh
#
#########################################################################################
# Definition des variables
#########################################################################################
repertoire=/var/log
fic_tmp=/tmp/secure.lst
fic_ip=/tmp/ip_ban.lst
fic_ip1=/tmp/ip_ban1.lst
list2ban=/tmp/list2ban.lst
liste_ban=/tmp/listebanie.list
max_atpt=4
mon_ip=.116
touch $fic_ip1
touch /tmp/listebanie.list
date=`date`
#########################################################################################
# Creation du fichier temporaire de log
#########################################################################################
cat $repertoire/auth.log > $fic_tmp
cat $repertoire/mail*>> $fic_tmp
cat $repertoire/apache2/* >> $fic_tmp
cat $repertoire/proftpd/* >> $fic_tmp
#########################################################################################
# Recuperation des ip frauduleuses
#########################################################################################
cat $fic_tmp | grep "without hostname" | cut -d[ -f4|cut -d] -f1 | cut -d' ' -f2 > $fic_ip
cat $fic_tmp | grep "File does not exist" | cut -d[ -f4|cut -d] -f1 | cut -d' ' -f2 | grep -v "66.249.66.50" >> $fic_ip
cat $fic_tmp | grep "/main.php" | cut -d' ' -f1 | grep -v "66.249.66.50" | >> $fic_ip
cat $fic_tmp | grep "Failed password" | grep -v "invalid" | awk '{ print $11}' >> $fic_ip
cat $fic_tmp | grep "invalid user" | awk '{ print $13 }' >> $fic_ip
cat $fic_tmp | grep "ffff" | cut -d"(" -f2 | cut -d] -f1 | cut -d: -f7 >> $fic_ip
sort $fic_ip > ${fic_ip}.tmp
cat ${fic_ip}.tmp | grep -v $mon_ip | grep -v .194 > $fic_ip
rm ${fic_ip}.tmp
diff $fic_ip1 $fic_ip | awk '{ print $2 }' > $list2ban
#########################################################################################
# Debut du traitement pour les bans
#########################################################################################
ip1=0
while read ligne
do
ip_scan=$ligne
if [[ "$ip1" = "$ip_scan" ]]
then
i=`expr $i + 1`
if [[ "$i" > "$max_atpt" ]]
then
exist=`cat $liste_ban | grep $ip_scan | wc -l | awk '{ print $1 }'`
if [[ "$exist" = "0" ]]
then
echo $date : ban de $ip_scan
echo $ip_scan banie >> $liste_ban
iptables -A INPUT -s $ip_scan -j DROP
fi
fi
else
i=0
fi
ip1=$ip_scan
done<$list2ban
cat $fic_ip>$fic_ip1qui est lancé via la crontab toute les minutes :
# m h dom mon dow command * * * * * /bin/secure >> /var/log/secure.log
mais voila le soucis : quand je l'exécute via la crontab il ne fait rien (iptables -L reste vide s'il y a du ban à faire). Or mon fichier de log indique bien qu'il aurait du banir quelques ips.
Et si je l'exécute à la main dans mon shell il fait bien le ban. D'ou peut venir le pb ????
J'oublie de préciser que le script est bien entendu lancé via la crontab de root.
Merci de vos conseils ![]()
Hors ligne