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
| Type | Commande | Usage |
|---|---|---|
| Local | ssh -L local:remote user@ip | Acceder a un service distant depuis notre machine |
| Remote | ssh -R remote:local user@ip | Exposer un service local vers la machine distante |
| Dynamic | ssh -D 1080 user@ip | Proxy 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.