/
Passive SSH (reverse SSH) a través de relay server
Search
Duplicate
Try Notion
Passive SSH (reverse SSH) a través de relay server
Fecha publicación
March 25, 2022
Dificultad
Intermedio
#
16
3 more properties
Descripción
A veces necesitamos abrirnos una acceso vía SSH para acceder a nuestro dispositivo, pero no podemos redirigir ningún puerto en el router o el firewall. Los accesos pasivos permiten abrir un puerto en un servidor de internet neutro (relay server) con nuestro equipo que se encuentra detrás de ese router o firewall en el que no podemos abrir un puerto. Gracias a este escenario ahora podemos acceder al equipo a través del “relay server”.
Configuración del “relay server”
Desde un servidor de Internet (en el esquema “relay server”)
Crear un usuario “dummy”: limited-user
Modificar configuración de: /etc/ssh/sshd_config
Match User limited-user
GatewayPorts yes
ForceCommand while true;do echo 'This account can only be used for maintenance purposes';sleep 10;done
view raw sshd_config hosted with ❤ by GitHub
Asistencia puntual:
Los pasos descritos a continuación son ideales para cuando hay que dar un soporte remoto puntual. Vamos a requerir una persona con acceso al “Linux” para poder ejecutar este comando SSH:
Comando a ejecutar desde el equipo remoto (en el esquema aparece como “Linux”)
ssh -R 0.0.0.0:55055:localhost:22 limited-user@IP_RELAY_SERVER
Copy
Bash
⚠️
- debemos usar el password de “limited-user” para establecer la conexión - también hay la opción de usar SSH con passwordless - recordar que “limited-user” no tiene shell - cada 10” aparecerá este mensaje “This account can only be used for maintenance purposes” - cuando se acabe de trabajar se puede parar la sesión con Control+C
Puerta trasera siempre activa:
ℹ️
Se asume que los pasos descritos en el punto anterior funcionan.
Opción 1. Comando autossh
Instalar el paquete autossh en “Linux”:
apt install autossh
Copy
Bash
Comando que debemos lanzar como servicio:
autossh -M 0 -N -o StrictHostKeyChecking=no -o ServerAliveInterval=10 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -t -t -R 0.0.0.0:55055:IP_LINUX:22 -p 22 limited-user@IP_SERVIDOR_DO
Copy
Bash
Opción 2. Contenedor Docker de autossh
ℹ️
Se asume que tenemos docker instalado en el “Linux”.
docker-compose.yml
version: '3.7'
services:
ssh-sabat-iot-gw:
image: jnovack/autossh
container_name: autossh
environment:
- SSH_REMOTE_USER=limited-user
- SSH_REMOTE_HOST=IP_SERVIDOR_DO
- SSH_REMOTE_PORT=22
- SSH_BIND_IP=0.0.0.0
- SSH_TUNNEL_PORT=55055
- SSH_TARGET_HOST=IP_LINUX
- SSH_TARGET_PORT=22
restart: unless-stopped
volumes:
- /root/.ssh/id_rsa:/id_rsa
dns:
- 8.8.8.8