Cómo Hacer Túneles SSH
Una de las funcionalidades extraordinarias que posee openssh es la de encapsular el tráfico inseguro a puertos TCP. A continuación vemos algunos ejemplos útiles de cuándo y cómo utilizarlos.
Algunas suposiciones:
-
openssh-server.example.com
: Es el host que posee el servicio ssh y el servicio sin cifrar -
otrohost.example.com
: Es un host que posee un servidor web sin TLS pero que carece de ssh. -
192.0.2.1/24
: Es la dirección IP del cliente ssh. -
filtrado.example.com
: Es un host que tiene el puerto del servicio al que queremos acceder pero se encuentra filtrado para el exterior. -
casa.example.com
: Es un host remoto respecto a un servidor ssh accesible desde la red defiltrado.example.com
. Este host está en un lugar en el cual podemos trabajar cómodamente 😊 por fuera de la infraestructura defiltrado.example.com
.
Caso 1: Redireccionado remoto (Segurizar un servicio sin cifrar)
Queremos segurizar el acceso a un servidor web sin TLS.
ssh -N -f -v -L 10001:localhost:80 openssh-server.example.com
-
80
: Es el puerto que tiene el servicio sin cifrar -
localhost
: Es la dirección en el host servicio-remoto.example.com que escucha en el puerto 80. -
10001
: Es el puerto local al cual tendremos que conectarnos para obtener el servicio web. -
-N
No ejecuta comandos en el lado remoto. -
-g
Permite a otros hosts conectarse a nuestro puerto 10001. -
-f
El proceso va al segundo plazo antes de la ejecución de comandos. -
-v
Imprime información detallada. - El url que habrá que poner en el navegador es http://localhost:80.
Caso 2: Redireccionado remoto laxo (Segurizar un servicio sin cifrar)
Queremos permitir que otros hosts de la red puedan acceder nuestro servicio encapsulado.
ssh -g -N -f -v -L 10001:localhost:80 openssh-server.example.com
-
-g
Permite acceder a otros hosts de la red 192.0.2.0/24 acceder a el url http://192.0.2.1:10001/
Caso 3: Redireccionado remoto (Segurizar un servicio sin cifrar en otro host)
Queremos acceder de manera segura a un servicio sin TLS ni ssh.
ssh -N -f -v -L 10001:otrohost.example.com:80 openssh-server.example.com
- Aquí la url será http://otrohost.example.com/10001
Caso 4: Acceder puertos filtrados
Queremos acceder a un puerto filtrado
ssh -v -N -f -R 9000:localhost:22 casa.example.com
-
22
es el puerto al que queremos conectarnos desde casa.example.com al puerto 9000
Caso 5: Acceder a puertos filtrados y permitir acceso a otros hosts de la red
Queremos permitir que otros hosts de la red local de casa.example.com puedan acceder al servicio encapsulado
ssh -v -N -f -R 0.0.0.0:9000:localhost:22 casa.example.com
- Luego para acceder al puerto ssh de
filtrado.example.com
podremos hacer por afuera de la red:
ssh -p 9000 casa.example.com
- En este caso debe estar habilitado
GatewayPorts
en el archivosshd_config
Comentarios
Comments powered by Disqus