Redirection de ports

LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à effectuer une redirection de ports.

Imaginez que vous habitiez à une adresse où vous recevez votre courrier. Vous déménagez ensuite dans une nouvelle chambre et souhaitez que tout le courrier envoyé à votre ancien numéro de chambre, la chambre 80, soit automatiquement livré dans votre nouvelle chambre, la chambre 8080. Vous ne voulez pas demander à tout le monde de modifier son carnet d’adresses ; vous voulez simplement que le gestionnaire de l’immeuble s’occupe de la redirection.

La redirection de ports fait partie du NAT (Network Address Translation, traduction d’adresses réseau). Elle réécrit le trafic entrant afin que les requêtes arrivant sur un port soient redirigées vers une autre destination.

Cela signifie que le pare-feu ne se contente pas d’autoriser ou de bloquer le trafic. Il modifie activement les informations de destination des paquets, afin qu’un point d’accès visible depuis l’extérieur puisse mener vers une autre destination interne.

Scénario :

Un serveur web fonctionne sur le port 8080. Cependant, les navigateurs web standards recherchent les sites sur le port 80. Au lieu de modifier le serveur web, vous allez indiquer au pare-feu : « Si quelqu’un se connecte au port 80, envoyez-le directement vers le port 8080. »

Dans ce laboratoire, vous allez :

  1. Préparer le pare-feu à gérer le trafic (Masquerading).
  2. Créer une règle pour rediriger le port 80 vers le port 8080.
  3. Tester et comprendre le fonctionnement de la redirection de ports.

Activer le Masquerading

Dans cette étape, avant que firewalld puisse rediriger des ports, il doit être autorisé à modifier les paquets réseau. Cette fonction s’appelle Masquerading.

Le Masquerading est une forme de traduction d’adresses. Dans de nombreux déploiements réels, il permet à un pare-feu ou à une passerelle de s’intercaler et de faire croire que le trafic provient d’un autre contexte d’adressage que celui dans lequel il a été généré.

Considérez le Masquerading comme une autorisation donnée au pare-feu pour jouer le rôle d’intermédiaire : il réécrit les adresses inscrites sur les paquets afin qu’ils atteignent la bonne destination.

Remarque : dans cet environnement de laboratoire, nous utilisons la zone trusted comme zone active afin de maintenir la connexion de votre terminal web.

Commencez par vérifier quelle zone est actuellement active.

sudo firewall-cmd --get-active-zones

Vous devriez probablement voir trusted avec votre interface réseau, par exemple eth0.

Activez maintenant le masquerading sur cette zone trusted.

sudo firewall-cmd --zone=trusted --add-masquerade

Vérifiez qu’il est activé.

sudo firewall-cmd --zone=trusted --query-masquerade

Si la sortie affiche yes, vous pouvez continuer.

Créer une règle de redirection

Dans cette étape, passons à la partie principale : nous allons créer la règle de redirection.

Les règles de redirection sont utiles lorsque vous souhaitez conserver un comportement externe stable sans modifier l’application elle-même. Le pare-feu devient une couche de traduction entre ce que les clients attendent et le port sur lequel le service écoute réellement.

Nous voulons indiquer ceci : « Pour la zone trusted, prenez tout le trafic TCP destiné au port 80 et redirigez-le vers le port 8080. »

Exécutez la commande suivante :

sudo firewall-cmd --zone=trusted --add-forward-port=port=80:proto=tcp:toport=8080

Voici le détail des options :

  • port=80 : la destination d’origine, c’est-à-dire l’ancienne chambre.
  • proto=tcp : le protocole utilisé, car le trafic web utilise TCP.
  • toport=8080 : la nouvelle destination, c’est-à-dire la nouvelle chambre.

Vérifiez que la règle a été ajoutée correctement.

sudo firewall-cmd --zone=trusted --list-forward-ports

La règle devrait apparaître dans la sortie.

Tester la redirection

Dans cette étape, nous allons tester le serveur web simple démarré sur le port 8080 lors de la configuration initiale. Vérifions qu’il fonctionne en y accédant directement.

curl http://127.0.0.1:8080

Vous devriez voir le message suivant : « Hello from Port 8080! Port Forwarding is working. »

Testons maintenant la redirection en accédant à votre propre adresse IP sur le port 80.

Trouvez votre adresse IP :

MY_IP=$(hostname -I | awk '{print $1}')
echo "My IP is: $MY_IP"

Essayez de vous connecter au port 80 avec cette adresse IP.

curl http://$MY_IP:80

Remarque concernant le test : dans de nombreux environnements Linux, y compris ce laboratoire, vous pouvez obtenir une erreur Connection refused. Il s’agit d’une limitation connue appelée NAT Loopback. Le noyau empêche souvent une machine de se connecter à sa propre adresse IP externe pour appliquer les règles NAT.

Cette limitation est importante à retenir, car elle distingue la validité de la configuration du comportement observé lors d’un test local. Une règle peut être correcte même si un auto-test réalisé depuis la même machine donne une indication trompeuse.

Dans un scénario réel, un visiteur utilisant un ordinateur différent serait redirigé correctement. Le fait que la commande list-forward-ports de l’étape précédente ait affiché la règle constitue la véritable preuve de réussite.

Supprimer la règle

Dans cette étape, nettoyons la configuration comme il est recommandé de le faire après un test. Supprimons la règle de redirection afin que le trafic reprenne son comportement normal.

Le nettoyage est important pour l’administration d’un pare-feu, car des règles obsolètes peuvent modifier discrètement l’exposition d’une application longtemps après la fin du test initial.

Pour supprimer une règle, utilisez --remove-forward-port avec exactement les mêmes paramètres que lors de son ajout.

sudo firewall-cmd --zone=trusted --remove-forward-port=port=80:proto=tcp:toport=8080

Vérifiez que la règle a bien disparu.

sudo firewall-cmd --zone=trusted --list-forward-ports

La sortie devrait être vide.

Résumé

Dans ce laboratoire, vous avez appris à rediriger le trafic réseau à l’aide de la redirection de ports. Vous avez :

  1. Activé le Masquerading pour permettre au pare-feu de réécrire les paquets.
  2. Créé une règle pour rediriger le trafic du port 80 vers le port 8080.
  3. Découvert le NAT Loopback et compris pourquoi les tests locaux peuvent parfois être trompeurs.
  4. Supprimé la règle afin de rétablir l’état initial.

Cette technique puissante est souvent utilisée pour rendre des services internes, comme des bases de données ou des applications personnalisées, accessibles sur des ports publics standard.