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.
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`