Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/09/2012, à 20:17

nuts31

Script firewall au démarrage, règles nat non prises en compte

Bonsoir !

Après moultes tentatives sans grand succès, je m'en remet à vos compétences en ce qui concerne l'écriture d'un script de firewall. Je n'ai pas réussi à trouver de réponse solutionnant mon problème de script.
Ce script est destiné à être exécuté à chaque démarrage de la machine pour mettre en place un firewall à l'aide de règles iptables.

Voilà une description rapide du déroulement du script :
* Reset d'iptables (dans le doute smile)
   
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT

* Passage des politiques des chaines INPUT, OUTPUT, FORWARD a DROP

    iptables -t filter -P INPUT DROP
    iptables -t filter -P FORWARD DROP
    iptables -t filter -P OUTPUT DROP

* Activation du port forwarding

    echo "1" > /proc/sys/net/ipv4/ip_forward
    echo "1" > /proc/sys/net/ipv4/ip_dynaddr

* Ouverture de ports spécifiques (SSH, DNS ...)

* Port forwarding
C'est cette étape qui pose problème. En effet lorsque le script s'exécute au démarrage de la machine, seules les règles INPUT, FORWARD et OUTPUT sont créées, les règles nat ne sont pas créées.
Cependant, si j'exécute mon script une fois l'OS démarré, tout fonctionne correctement.


Voilà la partie du script incriminée :

    # HTTP FORWARDING
    iptables -t nat -A PREROUTING -p tcp -s 0/0 -d ${ip_local} --dport 80 -j DNAT --to ${ip_apache}:80
    iptables -t nat -A POSTROUTING -o eth0 -d ${ip_apache} -j SNAT --to-source ${ip_local}

    # SVN FORWARDING
    iptables -t nat -A PREROUTING -p tcp -s 0/0 -d ${ip_local} --dport 3690 -j DNAT --to ${ip_svn}:3690
    iptables -t nat -A POSTROUTING -o eth0 -d ${ip_svn} -j SNAT --to-source ${ip_local}

    iptables -A FORWARD -o eth0 -p tcp -j ACCEPT



Auriez vous une idée de ce qui peut bloquer la création de ces règles nat au boot ? Je tiens à rappeler que si j'exécute ce même script, dans un bash, une fois la machine démarrée, les règles sont ajoutées correctement.

Merci d'avance ! smile

Dernière modification par nuts31 (Le 21/09/2012, à 20:19)

Hors ligne

#2 Le 21/09/2012, à 21:39

Beta Pictoris

Re : Script firewall au démarrage, règles nat non prises en compte

Salut nuts31

Tu mets ton script dans iptables /etc/network/if-pre-up.d ?

Tu as regardé dans les logs s'il n'y avait pas d'erreurs relatives à "iptables" ?

Dernière modification par Beta Pictoris (Le 21/09/2012, à 21:40)

Hors ligne

#3 Le 21/09/2012, à 22:19

nuts31

Re : Script firewall au démarrage, règles nat non prises en compte

Salut, et merci pour ta réponse smile

Mon script est placé dans /etc/init.d, c'est un mauvais choix ? hmm
Pour les logs, je n'ai rien vu qui s'y apparente. Ne sachant pas dans quel fichier log regarder, j'ai fait un petit : grep -rinH "iptables" /var/log et ça ne m'a pas retourné de lignes d'erreurs.

Hors ligne

#4 Le 21/09/2012, à 22:36

Beta Pictoris

Re : Script firewall au démarrage, règles nat non prises en compte

Il n'est, peut-être, pas capable de nater parce qu'un service ou module n'est pas actif. Mets son script dans /etc/network/if-pre-up.d pour voir.

De même, tu peux activer le forwarding, au boot, en modifiant le fichier /etc/sysctl.conf

Dernière modification par Beta Pictoris (Le 21/09/2012, à 22:37)

Hors ligne

#5 Le 21/09/2012, à 23:18

nuts31

Re : Script firewall au démarrage, règles nat non prises en compte

Je viens d'essayer de mettre le script dans if-pre-up.d sans succès hmm
Les règles INPUT,OUTPUT et FORWARD sont toujours bien chargées, mais pas les règles nat.

Y a t'il une syntaxe particulière à observer pour un script présent dans /etc/networking/if-pre-up.d ?

Hors ligne

#6 Le 21/09/2012, à 23:25

Beta Pictoris

Re : Script firewall au démarrage, règles nat non prises en compte

Le script doit être executable
Mets 'set +x ' au début de ton script bash pour voir les commandes s'afficher au démarrage (faire Escape au boot)

Tu as bien activé le forwarding dans sysctl.conf ?

Dernière modification par Beta Pictoris (Le 21/09/2012, à 23:28)

Hors ligne

#7 Le 21/09/2012, à 23:38

Beta Pictoris

Re : Script firewall au démarrage, règles nat non prises en compte

A propos, ton script résout-il les adresses en faisant appel à un serveur dns ?

Hors ligne

#8 Le 22/09/2012, à 00:49

nuts31

Re : Script firewall au démarrage, règles nat non prises en compte

Alors, oui mon script est bien exécutable ça pas de soucis.
J'ai mis le set +x, et malgré le fait que ça affiche quelque chose en faisant escape au boot, c'est bien trop rapide pour s'apercevoir de quelque chose.
J'ai également bien activé le forwarding dans le /etc/sysctl.conf wink

Hors ligne

#9 Le 22/09/2012, à 01:07

nuts31

Re : Script firewall au démarrage, règles nat non prises en compte

En fait il semblerait que c'était uniquement mon script dans /etc/init.d qui était joué. Je viens de me rendre compte en le supprimant que celui dans /etc/network/if-pre-up.d n'était, en fait, pas exécuté.
J'ai lu qu'il était possible d'associer un script if-pre-up dans la conf des interfaces réseau, mais ça m'embêterai de ne pas pouvoir tout gérer à un seul endroit.

Si tu as d'autres idées je suis preneur smile Merci déjà pour ta réactivité wink

Hors ligne

#10 Le 22/09/2012, à 01:50

Beta Pictoris

Re : Script firewall au démarrage, règles nat non prises en compte

Je me trompe, il faut mettre un "set -x " pour afficher les commandes

Sinon, la directive pre-up suivi du chemin vers le script iptables devrait aussi marcher

As tu rendu executable ton script ? chown 755 script
Y a t'il un shebang  #!/bin/bash en premiere ligne ?

Sinon, ce lien donne différentes configurations d'iptables, au démarrage, sur Ubuntu.

Dernière modification par Beta Pictoris (Le 22/09/2012, à 01:59)

Hors ligne

#11 Le 23/09/2012, à 13:12

nuts31

Re : Script firewall au démarrage, règles nat non prises en compte

Alors, je n'ai pas eu le temps de retoucher à tout ça hier, mais voilà où j'en suis.

Je pense qu'en fait la dernière version de mon script était erronée (boulette de ma part je suppose) puisque le forwarding, même s'il est bien enregistré dans iptables, ne fonctionne pas.
Celà viendrait de ma chaine FORWARD avec une policy mise à DROP.

Je cherche donc une façon d'écrire une règle FORWARD qui accepte les paquets correspondants à mes règles de PRE/POST ROUTING.

Dernière modification par nuts31 (Le 23/09/2012, à 13:13)

Hors ligne