[RESOLU] Test firewall iptables dans un script bash

Bonjour,

J’ai une petite question en rapport avec iptables

J’ai fais un petit script qui est sensé tester si le firewall sur ma machine est bien actif.

Etant donnée que “DROP” est dans mon script de firewall, j’ai fais ceci pour le tester.

[code]FIREWALL=“ON”

Test du service firewall

if [[ $FIREWALL = “ON” ]] ; then
FIREWALL=iptables -L | grep "DROP "
if [[ $FIREWALL = “” ]] ; then
FIREWALL='STOP’
DEFAUT="OUI"
else
FIREWALL='START’
fi
fi
echo $FIREWALL[/code]

Lorsque je le lance à la main, pas de problème, par contre des que le lance dans un crontab, la variable $FIREWALL est vide.

Avez vous une idée de la cause du problème :S?

Merci :wink:

J’ai finalement trouvé :
Il faut donnée le chemin complet pour le programme.

Merci quand même :wink:

Merci à toi d’avoir pris la peine de donner la solution, même si tu l’as trouvée toi-même.
C’est, malheureusement, pas toujours ce que font certains membres, dommage !

[quote=“ricardo”]Merci à toi d’avoir pris la peine de donner la solution, même si tu l’as trouvée toi-même.
C’est, malheureusement, pas toujours ce que font certains membres, dommage ![/quote]
+1 :mrgreen:

Très pratique ce petit script !

[quote=“lol”][quote=“ricardo”]Merci à toi d’avoir pris la peine de donner la solution, même si tu l’as trouvée toi-même.
C’est, malheureusement, pas toujours ce que font certains membres, dommage ![/quote]
+1 :mrgreen:

Très pratique ce petit script ![/quote]
Oui, il m’intéresse aussi mais à modifier “à ma sauce”.

Les sauce “maison” ont toujours plus de goût !
C’est malheureusement un truc que je ne sais pas encore faire… Mais je m’accroche ! :smt006

J’ai testé ce petit script, mon FW est bien actif et pourtant le script me renvoie “STOP” :open_mouth:

Tu le configure comment ton firewall ? Si quand il est actif il y a que INPUT qui est en DROP par défaut alors fait plutôt ça :

Ou sinon pour tout prendre

Ensuite au lieu de ça :

FIREWALL=`iptables -L | grep '^Chain INPUT (policy DROP)$'` if [[ $FIREWALL = "" ]] ; then
Tu peut faire ça :

iptables -L | grep -q '^Chain INPUT (policy DROP)$' if [ $? -eq 0 ]; then
ou

Tout est en DROP

[code]lagache:/home/chris# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all – anywhere anywhere
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all – anywhere anywhere state NEW
ACCEPT tcp – anywhere anywhere state NEW tcp dpt:58400
ACCEPT tcp – anywhere anywhere state NEW tcp dpt:58410
ACCEPT tcp – anywhere anywhere state NEW tcp dpt:www
ACCEPT tcp – anywhere anywhere state NEW tcp dpt:ftp

Chain FORWARD (policy DROP)
target prot opt source destination
REJECT all – 192.168.30.2 anywhere reject-with icmp-admin-prohibited
ACCEPT all – anywhere anywhere state NEW,RELATED,ESTABLISHED
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all – anywhere anywhere
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all – anywhere anywhere
ACCEPT tcp – anywhere anywhere state NEW tcp dpt:5900
ACCEPT tcp – anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp – anywhere anywhere state NEW tcp dpt:rsync[/code]

VAR=$(iptables -L | grep -q '^Chain [A-Z]* (policy DROP)$' | wc -l ) if [ $VAR -eq 3 ]; then FIREWALL='START'; else FIREWALL='STOP'; fi
Ça ça doit fonctionner.

aucunes réponses !

Mais encore ?

Pas de répons de la commande …

Quand tu tape ça ?

VAR=$(iptables -L | grep -q '^Chain [A-Z]* (policy DROP)$' | wc -l ) if [ $VAR -eq 3 ]; then FIREWALL='START'; else FIREWALL='STOP'; fi

Alors tape ça :

[code]VAR=$(iptables -L | grep -q ‘^Chain [A-Z]* (policy DROP)$’ | wc -l )
if [ $VAR -eq 3 ]; then
FIREWALL=‘START’;
else
FIREWALL=‘STOP’;
fi

echo “Firewall : $FIREWALL”[/code]

J’ai une erreur :

[code]VAR=$(iptables -L | grep -q ‘^Chain [A-Z]* (policy DROP)$’ | wc -l )
if [ $VAR -eq 3 ]; then
FIREWALL=‘START’;
else
FIREWALL=‘STOP’;
fi

echo “Firewall : $FIREWALL”[/code]

==>iptables: command not found

Tu le lance en root ?

Oop’s :blush:

Mais ne fonctionne toujours pas chez moi ==> Ne renvoie pas de résultat

Tu met bien tout ça dans un fichier ?
Si oui à la première ligne écris ça :

Comme ça tu verras ce qu’il fait.

[quote=“MisterFreez”]Tu met bien tout ça dans un fichier ?
Si oui à la première ligne écris ça :

#!/bin/sh -x

Comme ça tu verras ce qu’il fait.[/quote]

Oui, il est bien dans un fichier ,je le lance bien en root et toujours pas de résultats :smt006 .

C’est de l’option -x dont je te parlais. Elle permet de voir l’exécution du script. :slightly_smiling: