Firewall iptables : Rediriger un port vers un autre

Pour plusieurs raisons, on peut avoir besoin de rediriger un port vers un autre, pour permettre par exemple, d'acceder à un service sur plusieurs ports sans avoir à changer la configuration du service.

Ici je veux permettre l'utilisation du smtp (port 25, sur le port 26) :

Dabord, autoriser la connexion au port voulu :
en tcp :
[bash]iptables -A INPUT -p tcp –dport 26 -j ACCEPT[/bash]
en udp :
[bash]iptables -A INPUT -p udp –dport 26 -j ACCEPT[/bash]

Puis rediriger le port vers celui du service concerné (ici le SMTP 25) :
[bash]iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 26 -j REDIRECT –to-port 25
iptables -t nat -A PREROUTING -i eth0 -p udp –dport 26 -j REDIRECT –to-port 25[/bash]

Et voilà ! Tout le traffic arrivant sur le port 26 sera renvoyé en local sur le 25. On pourra ainsi contourner un blocage du port 25 chez certains opérateurs pour l'envoi des mails, en utilisant le port 26.

Ensuite, par exemple, nous avons une machine sur notre reseau qui heberge un serveur web (port 80), et on souhaite rediriger tout le traffic du port 80 vers cette machine. Voici la règle qui permet de faire ça :
Autoriser les connexions au port voulu (sur la machine frontale) :
[bash]iptables -A INPUT -p tcp –dport 80 -j ACCEPT[/bash]
Interception de tous les paquets entrant sur eth0, et on les renvoie sur 192.168.1.2 :
[bash]iptables -t nat -A PREROUTING -j DNAT -i eth0 -p tcp –dport 80 –to-destination 192.168.1.2[/bash]
Traitement des réponses et masquage des paquets de la machine interne, comme etant emis de la notre :
[bash]iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 -p tcp –dport 80 -d 192.168.1.2[/bash]

Sources et références :

http://www.debian-administration.org/articles/73
http://aide.sivit.fr/index.php?2007/04/04/172-redirection-de-ports-avec-iptables
http://www.cyberciti.biz/faq/linux-port-redirection-with-iptables/
http://www.go2linux.org/iptables-port-26-redirection-accept-email-on-another-port
http://www.lea-linux.org/documentations/index.php/Reseau-secu-iptables

Loading

Tags: , , , , , , , , ,

samedi, octobre 9th, 2010 GNU - Linux, Paranoïa, Technologie

4 Commentaires to Firewall iptables : Rediriger un port vers un autre

  • tresronours dit :

    Je rajouterais que pour bannir une IP par iptables, la commande suivante fait l’affaire :
    iptables -A INPUT -p tcp –source xx.xx.xx.xx -j DROP

    Au cas où le besoin pressent de dégager un client se ferait sentir :) (on peut faire pareil en udp )

  • Homer00 dit :

    Que deviendraient les 3 dernières règles de votre article si on modifiait l’énoncé ainsi :

    Ensuite, par exemple, nous avons une machine sur notre reseau qui heberge un serveur web (port 80), et on souhaite rediriger tout le traffic du port 8080 vers cette machine

    Donc avec un machine A (192.168.1.1) qui contient les règles de Firewall / iptables (qui dispose déjà d’un serveur http, port 80), et qui redirigerait vers 192.168.1.2:80 les requêtes envoyées sur son port 8080.

    Je me casse les dents là-dessus…

    • tresronours dit :

      Mettons que la machine A, soit configurée comme il faut, avec le ip_forward actif
      [bash]echo 1 > /proc/sys/net/ipv4/ip_forward[/bash]
      (j’assume que les autre redirections fonctionnent – selinux configuré ou desactivé, ) alors j’aurai une regle NAT comme suit :
      [bash]iptables -t nat -A PREROUTING -j DNAT -i eth0 -p tcp –dport 8080 –to-destination 192.168.1.2:80[/bash]
      oui eth0 serait la carte publique de la machine qui roule le firewall et dont les IPs internet sont en 192.168.1.x comme indiqué.
      ici le -i désigne l’interface d’entrée.
      et il devrait y avoir une regle qui autorise le forward aussi, sinon ca ne passera pas.
      Sauvagement un
      [bash]iptables -A FORWARD -j ACCEPT[/bash]
      ferait la job, mais ca devrait etre plus restreint pour limiter a ce qu’on veut autoriser.
      Une regle qui contiendrait ceci serait plus safe :
      [bash]-A FORWARD -i eth0 -d 192.168.1.2 -j ACCEPT
      -A FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT
      -A FORWARD -j REJECT –reject-with icmp-host-prohibited[/bash]
      ou eth0 serait la carte publique

      Voila, si ca peut aider.

  • pslay78 dit :

    Bonjour,
    Etant débutant, j’ai renconré des problèmes pour utiliser les commandes iptables sous Linux.
    Tout d’abord j’ai vu souvent des exemples utilsant DNAT et SNAT après l’otion -j.
    Question: faut-il créer des targets DNAT et SNAT dans les chaines PREROUTING et POSTROUNTING ?
    Car quand j’envoie la commande avec -j DNAT (ou -j SNAT), je ramasse une erreur disant que le target n’existe pas.
    Je travaille en Linux embarqué.

    Je reviens à mon problème principal:
    J’ai un PC Firewall avec 2 cartes réseaux, eth0 vers Internet et eth1 vers plusieurs PC d’un réseau local (192.168.1.x)
    Je souhaite que toute trame http avec port 8081 (venant d’Internet) arrivant sur eth0 soit redirigé vers le PC 192.168.1.1 port 80 sur l’interface eth1.
    Que toute réponse du serveur httpd venant du PC 192.168.1.1 port 80 par l’interface eth1 soit redirigée vers Internet sur l’interface eth0 avec le port 8081.
    Quelles commandes faut-il utiliser ?
    Merci d’avance pour votre aide qui sera grandement appréciée car je suis bloqué depuis quelques jours.

  • Laisser un commentaire à tresronours

    Not f'd — you won't find me on Facebook
    octobre 2010
    L M M J V S D
     123
    45678910
    11121314151617
    18192021222324
    25262728293031
     

     
    Suivez moi sur twitter - follow me on twitter
     
    Follow on LinkedIn
    [FSF Associate Member]
     
    Free Software, Free Society
    VIRTUALISATION :
    Compacter une image virtualbox VDI
    Bon petit tutoriel esxi
    Marche d'appliances vmware
    Installer ESXi sur un disque IDE
    Installer ESXi 3.5 sur un disque USB
    Installer proxmox avec DRBD et migration / réplication à chaud
    Installer OSSEC avec VMware
    Information sur le VDI
    SECURITE - FIREWALL :
    Ouvrir des ports dynamiquement iptables - knockd
    Autre tres bon tuto knockd
    Docs Arp poisoning - Anglais
    Metasploit test de pénétration
    Zone H - sites piratés en temps réel
    Blog invisible things
    Tips protection sécurité wordpress
    Pfsense - distribution firewall opensource - adsl internet failover
    Iproute 2 mini how to - linux advanced routing
    ClearOS - la passerelle sécuritaire lan - wan
    HAUTE DISPONIBILITE :
    CDN - Accélération de la distribution de données
    drbd iscsi ocfs2 dm multipath tutoriel
    Load balancing LVS
    Load balancing opensource list
    HA-Proxy :
    HAproxy - http load balancer
    Simple tutoriel HAproxy
    HAproxy - debian tutoriel
    Centos - Ip failover
    Configuratoin DM-Multipath Redhat
    VMware Doubletake - continuité
    Quelques liens sur la réplication MySQL : Manuel MySQL, chapitre sur la réplication
    Manuel MySQL, Tutoriel clair sur la mise en place
    Autre tuto sur la mise en place de la réplication MySQL
    Références pour optimisation du serveur MySQL
    Utilisation de EXPLAIN mysql pour optimiser vos bases
    optimiser vos bases - requetes et index
    STOCKAGE RESEAU :
    Un outil de clonage disque en reseau
    Internet NAS 250Go 250 accès VPN
    Server ISCSI avec Ubuntu tuto
    ISCSI centos redhat tutoriel
    Gérer et étendre un LVM
    Créer sa piratebox ! trop cool
    Deaddrops, les clés USB dans les murs, aussi cool !
    OPTIMISATION WORDPRESS :
    Télécharger Xenu
    Comment utiliser Xenu
    optimisation hébergement wordpress
    Super howto wordpress (En)
    Test de charge serveur web - Load impact
    VPN - ROUTEUR - LAN:
    Zeroshell - le mini-routeur wifi tout en un
    Retroshare, votre réseau d'échange crypté!
    Openvpn sur centos redhat
    Intégrer Linux dans active directory
    Routage inter-vlan avec Linux
    Routage avec OSPF
    Network Weathermap
    TENDANCES - WEB:
    Boutons twitter
    Analyser les tendances des recherches Google
    Protocole sitemap - robots.txt
    Creer des animations CSS3
    Code php pour interagir avec twitter
    E reputation
    Jquery
    TRUCS ET ASTUCES GNU/LINUX :
    Tuxmachines.org - Actus et tips linux
    Configurer GRUB2 et grub2 ici
    Panoet - en anglais - tips & tricks
    Readylines tips and trick pertinents
    Squid Clamav - proxy antivirus
    Apprendre Unix en 10 minutes
    13 tips sur les expressions régulières
    IE Sous linux IES
    LDAP 2.4 Quickstart guide
    Tutoriel LDAP
    Installation annuaire LDAP
    Serveur Mail Postfix - Dovecot - LDAP - MDS
    Créer un linux personnalisé en ligne - custom linux
    Super site sur linux - en
    Capistrano - déploiement automatisé
    MONITORING :
    Nagios tutoriel et doc
    Nagios plugin NRPE tuto
    Nagios plugin NRPE autre tuto
    Nagios plugin NRPE officiel
    Zabbix - fonctionnalités
    Zabbix - installation
    Guide MRTGsys - grapher la charge locale
    MRTGsys - ajouter des graphs
    MRTGsys - interpréter les données
    Shinken - Monitoring
    Thruk Monitoring webinterface
    Shinken - Tutoriel
    Shinken - Référence chez Nicolargo
    AUTRES LIENS :
    RemixJobs IT jobs
    USB Multiboot
    Reset mot de passe windows
    Java python et autres tips, intéressant !
    Forum inforeseau
    Open Clipart
    Excellent comic en ligne
    Inforeseau.fr