tous
J'ai une machine linux qui me sert de gate, connectée d'un coté (eth0) au réseau local et de l'autre (eth1) au net, via une freebox .
Je suis en train de faire un petit script avec iptables, qui sera exécuté par la crontab le soir à 23h, afin de bloquer l'acces au net à toutes les machines du réseau, sauf certaines.
Dans l'idée, on ajoute au début des chaînes INPUT et FORWARD des ACCEPT pour chaque machine autorisée, puis on ajoute apres mes accept un reject.
Afin de ne pas insérer n'importe quoi dans les chaines, je fais un test voir si la regle n'y est pas déjà :
#!/bin/sh
HOSTSOK=hosts.ok
#on permet tous les hotes presents dans le fichier hosts.ok
NBRE=0
cat $HOSTSOK|
while read ligne
do
if [ `iptables -L INPUT | grep $ligne|grep "ACCEPT"|wc -l` = 0 ]
then
iptables -I INPUT 1 -s $ligne -j ACCEPT
fi
if [ `iptables -L FORWARD | grep $ligne |grep "ACCEPT"|wc -l` = 0 ]
then
iptables -I forward 1 -s $ligne -j ACCEPT
fi
NBRE=$NBRE+1
echo $ligne autorise
done
#si le blocage n'est pas mis en place, on le remet
if [ `iptables -L INPUT|grep REJECT|grep "anywhere"|wc -l` = 0 ]
then
iptables -I INPUT $NBRE -j REJECT -i eth0
fi
if [ `iptables -L FORWARD |grep REJECT|grep "anywhere"|wc -l` = 0 ]
then
iptables -I forward $NBRE -j REJECT -i eth0
fi
|
Le souci vient de la deuxième partie En effet, je ne sais pas trop quoi mettre comme test dans le if, car il y a toujours une regle, en fin de liste qui matche, et donc... la mienne n'est pas insérée après les ACCEPT du départ...
Qqun voit une solution au pb ?
Message édité par freds45 le 09-02-2004 à 19:10:49
---------------
Filmstory : gardez trace des films que vous avez vu ! :D