IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Règles iptables : simples, mais ne fonctionnent pas.


Sujet :

Sécurité

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 21
    Points
    21
    Par défaut Règles iptables : simples, mais ne fonctionnent pas.
    Bonsoir,

    Contexte
    J'ai deux machines en réseau :
    • "Machine" (avec IP_02) qui est sur un réseau local : machine de travail
    • "Gateway" (abec IP_10) qui est sur le même réseau local : c'est ma passerelle/parefeu pour sortir sur internet.


    IP_02 utilise IP_10 comme passserelle dans son paramétrage (c'est un windows).
    IP_10 utilise iptables pour filtrer les paquets. Elle a une interface eth0 pour le réseau locale (avec IP_10) et eth1 pour sortir sur le net (avec IP_WEB).

    Demande
    Je voudrais envoyer un mail à partir de "Machine" (IP_02), en passant par IP_10 (normal) et en n'autorisant que le port nécessaire, à savoir le 587 (smtp orange).

    J'ai donc mis les règles suivantes :

    1) Règles pour autoriser les trames entre mes 2 interfaces de ma passerelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0      -d IP_02       -p tcp --sport 587      -j ACCEPT
    iptables -t filter -A FORWARD -i eth0 -o eth1 -s IP_02 -d 0.0.0.0/0            -p tcp --dport 587      -j ACCEPT
    2) Règles pour nater les adresses sources et destinatrices
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iptables -t nat -A PREROUTING -i eth1   -s 0.0.0.0/0 -d IP_WEB -p tcp --dport 587      -j DNAT --to-destination IP_02:587
    iptables -t nat -A POSTROUTING -o eth0  -s 0.0.0.0/0 -d IP_02 -p tcp --dport 587       -j SNAT --to-source IP_10
    Pour une raison que j'ignore, ça bloque. Et j'ai un peu de mal à identifier le problème, mais je crois que c'est le forward qui me gêne...

    A noter que les règles suivantes fonctionnent (mais elles routent tous les ports et ça, je veux pas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0      -d IP_02       -j ACCEPT
    iptables -t filter -A FORWARD -i eth0 -o eth1 -s IP_02 -d 0.0.0.0/0           -j ACCEPT
    iptables -t nat -A POSTROUTING -o eth1 -s IP_02 -j MASQUERADE

    Une idée du pourquoi ?

    Merci bien !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    j'aurais fait de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # Reset des iptables
    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
     
     
    # On droppe tout par défaut
    iptables -p INPUT DROP
    iptables -p OUTPUT DROP
    iptables -p FORWARD DROP
     
     
    #On ne translate que l'adresse IP_02 en n'acceptant que le port 587
    iptables -t nat -A POSTROUTING -s IP_02 -p tcp --dport 587 -j SNAT --to-source IP_10:587
    Ca suppose certains pré-requis, notamment que l'IP Forwarding est bien activé et que le routage est fait (default route vers ton opérateur par exemple). Si ça n'est pas le cas, il faudrait peut-être passer par une étape préliminaire pour vérifier qu'on part bien de quelque chose de fonctionnel.

    Steph

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 21
    Points
    21
    Par défaut
    Je m'aperçois d'un truc en fait :
    Je mets des règles sans port forwarding (je natte tous les ports) afin que les trames passent. Quand je fais un tcpdump pour voir un peu ce qui passe sur ma passerelle/pare-feu, je vois que le port qui est demandé sur mon interface eth0, c'est pas du tout un 587, mais un 49xxx (et à chaque nouvelle tentative, ça change, parfois c'est 50xxx).

    D'où cela peut-il provenir ? Je tente un "telnet smtp.orange.fr 587", mais aussi directement depuis l'application qui doit envoyer un mail automatique et le port que je vois n'est JAMAIS 587... du coup, je comprends que mes règles ne fonctionnent pas quand je ne route que ce port. Mais je ne sais pas d'où ça vient :-(

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 21
    Points
    21
    Par défaut
    Bon en fait, je suis trop con je pense.

    J'étais tellement orienté sur l'idée de prerouting et postrouting, parce que c'est ce que je connaissais que j'en ai pas tilté que c'était principalement vrai pour une machine sur internet qui accède à mon réseau local...

    Or, là, je suis dans une configuration où je pars du LAN vers Internet... classique cas avec "MASQUERADE"....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    iptables -t filter -A FORWARD -i eth0   -o eth1 -s IP_02       -p tcp --dport 587      -m state --state NEW,ESTABLISHED,RELATED        -j ACCEPT
    iptables -t filter -A FORWARD -i eth1   -o eth0 -d IP_02       -p tcp --sport 587      -m state --state ESTABLISHED,RELATED            -j ACCEPT
    iptables -t nat -A POSTROUTING  -o eth1 -s IP_02 -j MASQUERADE
    Voilà qui fait très bien ce que j'attends :
    - autoriser le forward sur le port 587 pour la machine IP_02.
    - masquer mon adresse local avec celle de la passerelle quand les trames sortent sur internet...

    Tout con. Mais ça fonctionne...
    Merci à ceux qui ont pris le temps de réfléchir à mon problème, et d'y répondre :-)

    Et bon week-end !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. s:iterator tout simple mais ne fonctionne pas
    Par need2learn dans le forum Struts 1
    Réponses: 2
    Dernier message: 31/01/2013, 17h26
  2. Réponses: 6
    Dernier message: 24/11/2008, 10h53
  3. simple select avec date, mais ne fonctionne pas
    Par ralcoc dans le forum Oracle
    Réponses: 5
    Dernier message: 03/07/2006, 22h59
  4. Réponses: 1
    Dernier message: 05/04/2005, 22h21
  5. [classpath] définit mais ne fonctionne pas
    Par duhnic dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/12/2004, 09h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo