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
4 Commentaires to Firewall iptables : Rediriger un port vers un autre
Ajouter un commentaire
Links
Recherche
Derniers articles
Tresronours Twitter
Keywords cloud topic
Membre de la FSF
Liens qui vont bien
Mots clés vrac – keyword cloud
License du contenu – CC By NC SA
Archives
- Resumed posting and expanding on X
- Linkedin Access to your account has been restricted – Final debrief and resilience plan
- I’m thankful for the support I get in rough time
- Cyber security news of the day – 2024 May 31
- Alexandre Blanc Cyber Kicked out from Linkedin
- You’ll most likely find me on LinkedIn
- The Russian roulette landing page !
- RTSP, Debian, VLC, not playing, IP Camera
- 5G network hosted in the cloud, no internet, no phone ! So smart ! And I ended on TV, This week in cyber
- They lock the door for privacy… but they keep a copy of the key, and couple of backdoors
- Worst is yet to come, but they all warned you
- Migrating an old WordPress and handling character set, UTF8, latin1, latin1_swedish_ci
- From a broken TLS CA, to Facebook, to FIN12 hit and run
- Yes we can fix this mess, but do we want to ? That’s another story
- Criminals are still dominating the game, why are we doing so wrong, and what can we learn in this tech ocean ?
- Riding cloud can be tricky, don’t fall from it, in the weekly cyber !
- The threat landscape is very dynamic – Cyber news this week
- Cybersecurity is not obvious even for this newsletter !
- Install Slack desktop app on Kali rolling fixing libappindicator3-1 missing dependency
- How to delete all resources in azure to avoid charges after trial on your forced credit card registration
- Proxmox – ZFS – Dead drive on active VM, recover from replicated disk
- Restrict access to proxmox web admin interface
- Migrate your ESXI VMs to proxmox ZFS
- Install your VPN server with pi-hole on OVH VPS in 30 min
- Using raspberry pi 3 as wifi bridge and repeater and firewall
- Raspberry 3 – create a wifi repeater with USB wifi dongle
- raspberry 3 – routeur pare feu point d’acces wifi avec filtrage pub et tracking – router firewall access point with ads and tracking filtering
- Dell XPS 13 touchpad – corriger la sensibilité
- Utiliser Zazeen set top box depuis une connexion videotron
- Fermeture de mon compte facebook – la dernière goutte
- Choisir un kernel par defaut au demarrage de Centos 7.2 – configuration grub2
- Openvpn access server 2.0.25 et android
- Régler la luminosité du laptop par ligne de commande
- chromium outlook web app version complete sous linux
- Nexus 7 2012 – android 5 lollipop solution au probleme de lenteur
- HDD led sur Xubuntu – xfce
- xubuntu 14.04 verrouiller ecran de veille et desactiver mise en veille a la fermeture de l’ecran
- Authentification avec Radmin en utilisant Wine sur Gentoo
- Patcher bash sur une distribution plus supportee comme fedora 11
- Zimbra desktop sous xubuntu 14.04 64bit – fix
- xubuntu 12.10 probleme de son avec VLC – pulse audio – alsa – toshiba L855D – solution
- Evolution sous xubuntu 12.10 – bug affichage a la configuration – solution temporaire
- Booster son acces internet en changeant de DNS pour opendns
- Serveur DLNA sous ubuntu – minidlna
- sshfs sous windows – dokan sshfs
- xubuntu 11.10 Installer le plugin java pour firefox
- Installer Google Earth sur Xubuntu 11.10
- Installer nagios sur Fedora 11 depuis les sources
- Configurer varnish-cache avec des virtualhosts, apache, fedora, redhat, centos
- Installer Varnish depuis les sources sur Fedora 11
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 )
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…
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.
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.