La redirection de port est connue sous le nom de tunneling TCP. Il existe plusieurs façons de faire, notamment SSH, mais nous le ferons avec le logiciel plink. Commencez par télécharger l'application.
powershell -c curl https://the.earth.li/~sgtatham/putty/latest/w64/plink.exe -Outfile plink.exe
Redirection du port local 8888 vers un serveur distant sur le port 80
plink.exe -ssh -L 8888:20.20.20.20:80 username@10.10.10.10
Redirection du port local 8888 vers un serveur distant sur le port 80 avec identifiant intégré à la commande
plink.exe -ssh -l username -pw password -L 8888:20.20.20.20:80 10.10.10.10 -batch -N
Redirection de toute connexion entrante sur le port 9999 vers un serveur distant sur le port 80
plink.exe -ssh -L 0.0.0.0:9999:20.20.20.20:80 username@10.10.10.10
Ouvrez le port 9999/tcp entrant
netsh advfirewall firewall add rule name="ALLOW TCP PORT 9999" dir=in action=allow protocol=TCP localport=9999
Pour utiliser cette redirection, essayez d'ouvrir un navigateur et rendez-vous sur l'URL http://192.168.1.10:9999 pour voir le redirection de port en action.
Il est également possible de réaliser une redirection de port initiée depuis le site distant (par exemple avec le bureau à distance)
plink.exe -ssh -R 7777:localhost:3389 username@20.20.20.20
![]()
Redirection de port avec NETSH
La redirection de port avec plink est efficace mais requiert un logiciel spécifique. Nous allons faire la même chose mais avec la commande netsh présente sur toutes les plateformes Windows. Par exemple pour rediriger le port local 8888 vers le port 80 du serveur distant :
Sur le serveur local, nous pouvons vérifier que le port 8888/tcp est bien en écoute avecnetsh interface portproxy add v4tov4 listenport=8888 listenaddress=0.0.0.0 connectport=80 connectaddress=@remote_server_ip
Il faudra également s'assurer que le port local 9999 soit bien ouvert dans le firewall du serveur distantnetstat -aon| findstr /I "8888"
netsh advfirewall firewall add rule name="ALLOW TCP PORT 8888" dir=in action=allow protocol=TCP localport=9999
PSExec est un outil puissant pour les administrateurs informatiques. Il se présente sous la forme d'un exécutable fonctionnant en ligne de commande uniquement. PSExec peut être utilisé sur une machine locale avec les droits de l'utilisateur SYSTEM. Cet utilisateur dispose de plus de privilèges que l'utilisateur administrateur.
PSExec peut lancer des commandes sur des serveurs distants, en masse, et récupérer des résultats de ces commandes. PSExec peut exécuter des shells distants et renvoyer les résultats à la console. PSExec peut également permettre le déploiement à distance d'application, en mode silencieux, et renvoyer des informations.
Pour installer PSExec sur les desktop Windows il suffit de se rendre sur le Microsoft Store et de chercher la suite Sysinternals. Pour les environnements serveur, il faut se rendre sur le site SysInternals et télécharger les PsTools (https://docs.microsoft.com/fr-fr/sysinternals/downloads/psexec)
Pour que PSExec puisse fonctionner il faut absolument ouvrir le port 445 dans le firewall du serveur distant. Cela correspond au partge de fichiers et d'imprimantes sous Windows.
psexec -s -i command
=> Exécution de psexec localement avec les droits SYSTEM (-s) en mode
interactif (-i). Cela va créer un service spécifique qui va prendre l'élévation de privilège, gérer les threads et tout
fermer correctement quand la commande sera terminée.
Pour exécuter psexec sur plusieurs machines, il suffit soit de noter \\serveur1[,serveur2[,...] ou bien de passer un fichier avec @file, file étant le nom du fichier à traiter.
Par exemple, pour lancer un command prompt sur un serveur distant :
psexec \\serveur -s -i -u Administrateur cmd
Cela va créer un service psexesvc qui va lancer le command prompt à distante en redirigeant
les entrées et sorties depuis le shell local du poste d'administration.
Il est même possible d'affecter des priorités et des CPU à l'usage de psexec ;