Aller au contenu principal

Pivoting & Port Forwarding

SSH Local Port Forwarding

Permet d'acceder a un service qui n'ecoute que sur localhost de la machine distante, en le rendant accessible depuis notre machine locale.

ssh -L <port_local>:localhost:<port_distant> <user>@<IP>

Exemple : acceder a PostgreSQL via SSH (Funnel)

PostgreSQL ecoute sur le port 5432 uniquement en local sur la cible. On cree un tunnel :

ssh -L 1234:localhost:5432 christine@<IP>

Ensuite, depuis un autre terminal sur notre machine :

psql -U christine -h localhost -p 1234

Box : Funnel

Decouvrir les services locaux

Avant de faire du port forwarding, il faut identifier les services qui ecoutent en local sur la cible :

ss -tl      # Liste les sockets TCP en ecoute
ss -tlnp # Avec les numeros de ports et le processus

Box : Funnel

Resume des types de port forwarding SSH

TypeCommandeUsage
Localssh -L local:remote user@ipAcceder a un service distant depuis notre machine
Remotessh -R remote:local user@ipExposer un service local vers la machine distante
Dynamicssh -D 1080 user@ipProxy SOCKS (toutes les connexions passent par le tunnel)
Reflexe

Si un service n'est pas accessible depuis l'exterieur mais que vous avez un acces SSH, pensez au port forwarding local. Utilisez ss -tl pour trouver les services caches.