Passive SSH (reverse SSH) a través de relay server

Fecha publicación
Dificultad
Intermedio
#
16
3 more properties
Publicado
tags
ssh, passive, reverse, sysadmin, system administrator, remote, industry 4.0, industrial iot, industrial internet of things

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”.
SolucionesAccesoRemoto.drawio.png

Configuración del “relay server”

  1. Desde un servidor de Internet (en el esquema “relay server”)
  2. Crear un usuario “dummy”: limited-user
  3. Modificar configuración de: /etc/ssh/sshd_config
    Shell
    Match User limited-user
        GatewayPorts yes
        ForceCommand while true;do echo 'This account can only be used for maintenance purposes';sleep 10;done

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”)
Bash
ssh -R 0.0.0.0:55055:localhost:22 limited-user@IP_RELAY_SERVER

Puerta trasera siempre activa:

Opción 1. Comando autossh

  1. Instalar el paquete autossh en “Linux”:
    Bash
    apt install autossh
  2. Comando que debemos lanzar como servicio:
    Bash
    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

Opción 2. Contenedor Docker de autossh


docker-compose.yml
YAML
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