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

Réseau Discussion :

Redirection de port avec iptable


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut Redirection de port avec iptable
    Bonjour,

    J'ai actuellement un vieil ordi portable (qui a un peu plus de 2 ans) sous débian dont je me sert comme serveur.

    J'ai commencé à modifié l'iptables en interdisant par défaut toutes les connections entrantes, sourtantes et les foreward de wlan0 (il est connecté par internet uniquement par ce moyen)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    Bien sûr j'ai ouvert par la suite un port pour le ssh, etc...

    Maintenant je voudrais que n'importe qui, en essayant de passer par le port 80 de mon serveur soit redirigé vers un serveur mumble dont je connais l'ip et le port. Mon serveur est dans un réseau wifi domestique et possède donc une adresse ip réseau. Le réseau redirige déjà automatiquement les requêtes vers le port 80 vers mon serveurs.

    En faisant quelques recherches, je suis tombé sur ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    iptales -t nat -A PREROUTING -d (adresses de destination) --to-destination (ip de destination modifiée) -j DNAT
    iptales -t nat -A POSTROUTING -s (adresses sources d'entrée) -j SNAT --to-source (adresse source à appliquer)
    Mais je dois avouer que je m'embrouille un petit peu.

    J'ai tenté de faire quelques essais et de bidouiller un peu sans réussite.

    Pourriez-vous me donner quelques indications svp?

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Voici ce que j'ai réussi à faire :

    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
     
    iptables -A INPUT -i wlan0 -p TCP --dport 80 -j PREROUTING
    iptables -A INPUT -i wlan0 -p UDP --dport 80 -j PREROUTING
     
     
    iptables -A INPUT -i wlan0 -p TCP --dport 8014 -j PREROUTING
    iptables -A INPUT -i wlan0 -p UDP --dport 8014 -j PREROUTING
     
    iptables -t nat - A PREROUTING -p TCP --dport 80 --to-destination -j 91.121.7.94:8014 DNAT
    iptables -t nat - A PREROUTING -p UDP --dport 80 --to-destination -j 91.121.7.94:8014 DNAT
     
    #prerouting des paquets recu du serveur mumble???
     
    iptables -t nat -A POSTROUTING -p TCP --dport 80 -j SNAT --to-source [mon-ip]
    iptables -t nat -A POSTROUTING -p UDP --dport 8014 -j SNAT --to-source [mon-ip]
    iptables -t nat -A POSTROUTING -p TCP --dport 80 -j SNAT --to-source [mon-ip]
    iptables -t nat -A POSTROUTING -p UDP --dport 8014 -j SNAT --to-source [mon-ip]
    Déjà, je ne sais pas si dans les sources je dois mettre l'adresse ip publique ou l'adresse ip de l'ordinateur au sein du réseau.

    Ensuite, pour renvoyer les paquets vers celui qui c'est connecté, je ne sais pas du tout comment faire...

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 495
    Par défaut
    Hello,

    Citation Envoyé par Neckara Voir le message
    J'ai commencé à modifié l'iptables en interdisant par défaut toutes les connections entrantes, sourtantes et les foreward de wlan0 (il est connecté par internet uniquement par ce moyen)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    Attention, quand tu utilises -P, tu définis la « politique » de la chaîne, c'est-à-dire son comportement par défaut quand aucune règle ne correspond. Ce faisant, tu ne filtres pas seulement « wlan0 », mais tout ce qui parvient, repart ou transite par une interface réseau (y compris « lo », le cas échéant).

    Citation Envoyé par Neckara Voir le message
    Voici ce que j'ai réussi à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    iptables -A INPUT -i wlan0 -p TCP --dport 80 -j PREROUTING
    iptables -A INPUT -i wlan0 -p UDP --dport 80 -j PREROUTING
     
     
    iptables -A INPUT -i wlan0 -p TCP --dport 8014 -j PREROUTING
    iptables -A INPUT -i wlan0 -p UDP --dport 8014 -j PREROUTING
    Ça, ça ne fonctionnera pas, parce que « PREROUTING » n'est pas une chaîne de la table « filter ». Connais-tu bien le fonctionnement global de ipchains et iptables ?

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Attention, quand tu utilises -P, tu définis la « politique » de la chaîne, c'est-à-dire son comportement par défaut quand aucune règle ne correspond. Ce faisant, tu ne filtres pas seulement « wlan0 », mais tout ce qui parvient, repart ou transite par une interface réseau (y compris « lo », le cas échéant).
    Derrière cela j'ai autorisé toutes les connexions de eth0 mais je ne l'ai pas fait avec lo, je vais donc l'autoriser.

    Citation Envoyé par Obsidian Voir le message
    Ça, ça ne fonctionnera pas, parce que « PREROUTING » n'est pas une chaîne de la table « filter ». Connais-tu bien le fonctionnement global de ipchains et iptables ?
    On a très rapidement survolé le sujet en TP de réseau et on a juste fait des DROP/ACCEPT/REFUSE/LOG sur des INPUT et OUTPUT et c'est la seule chose que je verrais en cours...

    Comme j'avais vu qu'on pouvais créer nos propres chaînes, j'ai cru que PREROUTING en étais une mais apparemment je me trompais...

    iptables je vois comment il fonctionne avec OUTPUT/INPUT/FORWARD par contre avec les NAT, il m'a fallu un certain temps pour comprendre.

    Pour les ipchains, si j'ai bien compris, un paquet est intercepté, un démon regarde les règles et applique la première règle qui correspond.

    L'ipchains serait la liste ordonnée des règles qui seront appliqué à un paquet?
    Une sorte de "chemin" en gros.


    EDIT : si j'ai bien compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    iptables -t nat -A PREROUTING -j DNAT -i wlan0 -p tcp --dport 80 --to-destination 91.121.7.94:8014
    # Tous les paquets provenant de wlan0 via le port 80 sont redirigé vers le serveur mumble via le port 8014
    iptables -t nat -A POSTROUTING -j MASQUERADE -o wlan0 -p tcp --dport 80 -d 91.121.7.94
    #tous les paquets qui sont reçu par le port 80 de wlan0 et à destination du serveur mumble reçoivent comme ip source l'ip "routeur" du serveur ? Ainsi la réponse du serveur mumble sera envoyé sur mon serveur.
    Est-ce juste? Dans ce cas là, comment faire pour envoyer la réponse du serveur mumble de mon serveur au client?

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 495
    Par défaut
    En fait, « ipchains » était la génération précédente du filtre réseau Linux (jusque dans les noyaux 2.4 si je ne me trompe pas). Pour faire simple, ipchains était iptables mais muni uniquement de la table « filter ».

    Dans une même table, tu as des chaînes prédéfinies (par exemple « INPUT », « OUTPUT », « FORWARD ») que tu peux enrichir ou vider, mais pas supprimer. Tu as des cibles prédéfinies (par exemple « ACCEPT », « REJECT », « DROP ») et tu peux enfin créer tes propres chaînes, pour créer des sortes de sous-programmes ou pour définir des profils de trafic (par exemple « TRAFICDMZ »).

    À l'époque d'ipchains, il y avait une cible spéciale : MASQUERADE, qui permettait justement de transformer la machine en proxy transparent sur une certaine partie du trafic, pour faire par exemple du partage de connexion.

    Depuis « iptables », tu as désormais des tables supplémentaires : l'idée est que le paquet est examiné simultanément et indépendamment dans chacune des tables. Autrement dit, les règles de la table filter vont vérifier si un paquet doit être admis ou éliminé, et celles de « nat » vont vérifier si ses coordonnées doivent être réécrites ou pas.

    C'est donc tout naturellement que la règle « MASQUERADE » a quitté la table « filter » pour rejoindre « nat ».

    Le nat est devenu omniprésent dans la gestion d'un réseau et constitue une activité à part entière qui lui vaut de mériter sa propre table. Mais dans le même esprit, on a tout naturellement créé une troisième table « mangle » (« déchiqueter, mettre en pièce ») qui permet en fait de faire toutes les autres altérations sur un paquet, notamment sur ses flags.

    Pour finir, quand j'ai dit « simultanément », ce n'est pas tout-à-fait vrai : il y a un ordre d'exécution. Notamment, dans le cas du NAT, si tu veux réécrire l'adresse de destination, cela doit se faire avant le routage ! D'où l'existence des règles PREROUTING et POSTROUTING. Dès lors que le paquet a été dûment modifié, il peut être présenté à la table de routage et donc, juste avant, au filtre (donc à la table filter).

    Je te laisse faire toi-même une petite recherche avec IPTables flowchart pour voir comment tout cela circule.

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Merci pour cette réponse.

    Je comprend déjà un peu mieux comment marche la table NAT.

    Donc si je résume il va falloir :

    chemin client -> serveur mumble :
    - utiliser PREROUTING pour écrire dans le paquet en adresse de destination l'adresse du serveur mumble.
    - autoriser le forward vers le serveur mumble
    - interdire le forward du serveur mumble vers le serveur mumble
    - utiliser POSTROUTING pour écrire dans le paquet en adresse source l'adresse du serveur intermédiaire

    chemin serveur mumble -> client
    - autoriser le forward à partir du serveur mumble

    par contre pas besoin d'autoriser INPUT et OUTPUT c'est bien cela?

    Je n'ai pas tout à fait compris MASQUERADE, si j'ai compris, en l'utilisant pour écrire l'adresse source, il fera en sorte que le paquet passe "dans l'autre sens" donc pour le chemin inverse, il suffit juste d'autoriser un forward?

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

Discussions similaires

  1. Redirection d'IP avec IPtables
    Par kevinf dans le forum Réseau
    Réponses: 3
    Dernier message: 30/05/2013, 23h50
  2. redirection de port et iptables
    Par tapharule dans le forum Réseau
    Réponses: 0
    Dernier message: 05/12/2012, 14h57
  3. Redirections de ports avec VM.
    Par Olitor dans le forum Réseau
    Réponses: 0
    Dernier message: 29/04/2010, 02h47
  4. Redirection de ports avec proxmox
    Par billoux70 dans le forum Virtualisation
    Réponses: 3
    Dernier message: 14/10/2009, 15h53
  5. Mapping de port avec iptables
    Par segphault dans le forum Sécurité
    Réponses: 1
    Dernier message: 12/01/2006, 00h01

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