Toujours dans une optique de contourner des restrictions de pare-feu, on va voir un truc assez simple pour rediriger un port vers au autre uniquement pour les paquets provenant d’une IP donnée. Deux cas de figure où ça peut s’avérer utile :
- vous êtes au travail, vous avez besoin d’accéder à un service sur votre serveur qui tourne sur un port bloqué par le pare-feu de la boite
- vous avez des machines chez un client, elles doivent pouvoir communiquer entre elles sur un port qui n’a pas été autorisé
C’est tout simple ça se fait avec une seule commande sur le serveur qu’on veut joindre :
iptables \
-t nat \
-I PREROUTING \
--src <ip-source> \
--dst <ip-du-serveur> \
-p tcp \
--dport <port-intial> \
-j REDIRECT \
--to-ports <port-bloqué>
On utilise donc iptables
, l’outil qui permet de gérer les règle de pare-feu du noyau Linux, avec les arguments suivants :
-t nat
: on indique qu’on veut utiliser la tablenat
qui gère donc la translation d’adresse réseau, la table par défaut étantfilter
-I PREROUTING
: on insère notre règle dans la chaînePREROUTING
, qui permet d’appliquer des actions sur les paquets avant qu’ils ne soient routés vers pour la machine elle-même (et la chaîneINPUT
) ou vers une autre machine (et la chaîneFORWARD
)--src <ip-source>
: pour appliquer la règle uniquement en provenance d’une IP donnée--dst <ip-du-serveur>
: pour appliquer la règle uniquement à destination d’une IP donnée-p tcp
: on traite du traffic TCP--dport <port-initial>
: le port de destination du point de vue du client, donc celui qu’on va rediriger vers le « vrai » port de destination-j REDIRECT
: on envoie vers la cibleREDIRECT
qui fait ce que son nom indique :-)--to-ports <port-bloqué>
: le port vers lequel rediriger
Exemple, en admettant que l’IP publique de mon lieu de travail soit 1.2.3.4 et celle de mon serveur 5.6.7.8, et que je veuille faire passer le traffic pour mon serveur OpenVPN à travers le port 443 (initialement dédié au HTTPS) :
iptables \
-t nat \
-I PREROUTING \
--src 1.2.3.4 \
--dst 5.6.7.8 \
-p tcp \
--dport 443 \
-j REDIRECT \
--to-ports 1194
Alors bien évidemment, pour cet exemple il faut que depuis mon lieu de travail je n’ai pas besoin d’accéder au service HTTPS sur mon serveur (adieu la consultation de mon blog perso). Aussi, si le traffic est filtré par un proxy ça risque de ne pas fonctionner. Mais voilà ça peut parfois dépanner.
Pour virer cette règle, on remplace -I
par -D
, car on veut delete
au lieu de insert
:
iptables \
-t nat \
-D PREROUTING \
--src 1.2.3.4 \
--dst 5.6.7.8 \
-p tcp \
--dport 443 \
-j REDIRECT \
--to-ports 1194
Ou sinon, en utilisant le numéro de la règle :
# liste les règles de la table `nat`
iptables -t nat -L --line-numbers
# on supprime la règle `<num>` dans la chaîne `PREROUTING`
iptables -t nat -D PREROUTING <num>
Commenter
Articles de blogs que je lis
40 ans de GNU
40 ans de GNU Richard Stallman ne voulait pas changer le monde. Il ne voulait pas se battre contre les moulins à vent. Il ne voulait pas réinventer la roue. Richard Stallman voulait simplement retrouver ses amis, sa communauté. Pour ce jeune homme barbu et …
– Ploum.net · 27 Sep 2023
La blogchain
Avec les réseaux sociaux, les petits espaces personnels interconnectés qu’étaient les blogs ont peu à peu disparu du paysage. Il en reste, mais les liens ne sont plus aussi forts. À la grande époque il était fréquent d’avoir des blogroll. sur un coin de c…
– Carnet de notes · 8 Sep 2023
#63 : Comment parler du vivant pour mieux l’appréhender
Baptiste Morizot est philosophe, maître de conférences à Aix-Marseille Université et auteur de plusieurs ouvrages sur les relations entre l'humain et le reste du vivant (Les Diplomates, Sur la piste animale, Manières d'être vivant…). En avril dern…
– Nourritures terrestres · 13 Aug 2023