Lancement auto d'iptables

Bonjour à tous (ou plutôt bonne nuit),

Je viens d’acquérir un serveur dédié sur OVH, et suis actuellement plongé dans les configurations de sécurité.

Etant assez noob dans le domaine j’ai dû m’y faire avec leurs guides, et maintenant je pense avoir à peu près tout fait mais une chose me bloque: je viens de mettre iptables, et je voulais le configurer pour le lancement automatique comme indiqué ici, mais quand je veux tester ce script il me répond: “bad interpreter: No such file or directory”

Est-ce que vous auriez une idée du problème ?

Florent

Est-ce que ton script comment bien par
#!/bin/sh
?
Le plus simple serait de le poster ici pour qu’on te dise ce qui ne va pas.
Dautre part, il faut aussi le rendre executable et lui donné un ordre d’execution tel qu’il se lance avant la mise en route du reseau et qu’il s’eteigne apres la desactivation du reseau.

tape la commande ‘which sh’ et il va te renvoyer le chemin vers l’interpréteur shell (le plus souvent c’est /bin/sh)

tu le place tout en haut du script juste après les caractères #!

tu place ton script dans le répertoire /etc/init.d et tu vérifie le runlevel avec la commande

grep default /etc/inittab

qui va te renvoyer

The default runlevel.

id:2:initdefault

le chiffre en gras correspond au niveau de lancement qui est un dossier dans /etc/rc.d (par exemple, ici, /etc/rc2.d )

tu y met un lien vers ton script :
ln -s /etc/init.d/<TON_SCRIPT> /etc/rc2.d/S95<TON_SCRIPT>

après tu tape ‘chmod +x /etc/rc2.d/<TON_SCRIPT>’ et il se lancera tout seul au boot de la machine

ok, merci

Le script commence bien par #!/bin/sh
Je l’ai mis dans /etc/rc.d/init.d, le répertoire /etc/init.d/ étant incréable (il y a déjà un raccourci du même nom)
quant au grep il me donne id:3:initdefault

Le but est de tester le fichier en le lançant manuellement pour vérifier son bon fonctionnement avant de le balancer au démarrage… Je suppose donc que je ne l’ai pas mis dans le bon répertoire ?

Ah ben p’têt pas en fait, quand j’essaie de le lancer avec /etc/init.d/firewall start il y arrive pas mais c’est pas comme si il trouvait pas du tout le script… Et webmin également trouve bien le script parmi ceux de démarrage (bien que pas activé) mais me donne la même erreur lorsque je veix le lancer: /bin/sh: /etc/rc.d/init.d/firewall: bad interpreter: No such file or directory

Bref, je vois pas…

et voilà le script:

Que donne
which sh
which iptables
?

which sh:
/bin/sh

which iptables:
/usr/local/sbin/iptables

la ligne IPT de ton script doit contenir la meme info que ce que te retourne which iptables :wink:

J’ai essayé, le message d’erreur reste le même… :-/

essaie de mettre un espace en #! et /bin/sh
que donne la commande
ls -al /etc/init.d/firewall

l’espace ne change rien et la commande me donne ça:
-rwx------ 1 root root 1243 jui 10 16:25 /etc/init.d/firewall

et si tu tape
/bin/sh /etc/init.d/firewall

normalement, vu que tu donne l’interpreteur et le script directement dans la commande, il devrait fonctionner un peu mieux :wink:

bien sur tu es en "root" depuis le début hein ???

alors maintenant j’ai ça:

sinon oui, je suis bien en root.

a ba oui c’est une erreur de syntaxe dans ton script…

mais je vois pas d’où elle vient… :frowning:

Bon, j’ai essayé avec des fonctions, du style:

et cette fois il me met l’erreur au même endroit, sur flush. C’est louche.

Y’a pas une possibilité que ce soit autre chose que le script lui-même ?

y’a plus simple en mettant les commandes iptables dans rc.local

Tu m’intéresses là. Toute solution alternativ est la bienvenue :jap:

J’aurais donc qu’à mettre tous les $IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT et Cie dans ce fichier ?

J’ai vu qu’il se lançait en dernier au moment du boot, ça gêne pas ?

bah, c’est un poil tard pour un firewall mais bon… c’est un serveur qui est cense tourner constamment non ? donc le boot arrivera suffisamment rarement pour pas s’inquieter de se genre de truc…

Oublie pas de changer $IPT par la vraie commande…

bin en fait moi je travaille pas avec les scripts mais avec les commandes iptables-save et iptables-restore

tu tape une premiere fois tes regles et tu lance
#iptables-save > FICHIER

et dans fichier tu retrouve toute les régles classées par table
reste plus qu’a en ajouter, les modifier etc etC…

et pour restorer le tout :
#iptables-restore < FICHIER

voilà, c’est une alternative comme une autre

Et avec ça les règles seront chargées automatiquement avec iptables à chaque boot ?