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.

Túneles

unsplash-logo Aaron Burden

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 de filtrado.example.com. Este host está en un lugar en el cual podemos trabajar cómodamente 😊 por fuera de la infraestructura de filtrado.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 archivo sshd_config

Comentarios

Comments powered by Disqus

MentorCruise