SSH Tunneling
28 de marzo de 2019 • fjbalon
El tunneling es un proceso por el que se utiliza el protocolo SSH para fortificar la comunicación entre otros protocolos inseguros, por ejemplo para realizar peticiones HTTP, SMTP, etc.
Los túneles pueden ser locales o remotos. En los túneles locales, la máquina del administrador o cliente redirecciona un puerto local hacia un puerto de la máquina remota, a la que se disponga de acceso. En los túneles remotos se redirecciona un puerto remoto dela máquina remota, a la que se disponga de aacceso, a un puerto de la máquina local, donde se encuentra el administrador.
La sintaxis para la creación de un túnel local hacia el puerto remoto de la máquina remota es la siguiente:
ssh -L [direccion de escucha:]puerto escucha:maquina remota: puerto remoto usuario@server
El escenario idóneo para la utilización de túneles SSH locales es el siguiente:
El túnel remoto, por su lado, generará un socket a la escucha en un servidor, el cual al recibir una petición reenviará el tráfico mediante SSH a la máquina local donde se encuentre el administrador. La sintaxis es:
ssh -R puerto local:maquina remota:puerto remoto
Un ejemplo sería querer que una máquina en Internet llegase al interior de la Intranet a través de una máquina puente de la propia red privada, manteniendo una interfaz hacia Internet. El escenario sería el siguiente:
Estas técnicas cuentan con una serie de escenarios muy interesantes, siendo los más usuales:
ssh -L 7900:localhost:5900 usuario@internal #1
ssh -L 0.0.0.0:7900:localhost:5900 usuario@internal #2
ssh -R 7900:localhost:5900 usuario@internal #3
ssh -R 0.0.0.0:7900:localhost:5900 usuario@internal #4
ssh -L 7900:internal2:5900 usuario@internal #5