Tenemos un servidor público que acepta conexiones SSH de múltiples clientes detrás de firewalls.
Cada uno de estos clientes crea un túnel SSH inverso mediante el ssh -R
comando de sus servidores web en el puerto 80 a nuestro servidor público.
El puerto de destino (en el lado del cliente) del túnel SSH inverso es 80 y el puerto de origen (en el lado del servidor público) depende del usuario. Estamos planeando mantener un mapa de direcciones de puerto para cada usuario.
Por ejemplo, el cliente A haría un túnel en su servidor web en el puerto 80 a nuestro puerto 8000; cliente B de 80 a 8001; cliente C de 80 a 8002.
Client A: ssh -R 8000:internal.webserver:80 clienta@publicserver
Client B: ssh -R 8001:internal.webserver:80 clientb@publicserver
Client C: ssh -R 8002:internal.webserver:80 clientc@publicserver
Básicamente, lo que estamos tratando de hacer es vincular a cada usuario con un puerto y no permitirles hacer un túnel a ningún otro puerto.
Si estuviéramos usando la función de tunelización directa de SSH con ssh -L
, podríamos permitir qué puerto se tunelizaría usando la permitopen=host:port
configuración. Sin embargo, no hay equivalente para el túnel SSH inverso.
¿Hay alguna forma de restringir los puertos de túnel inverso por usuario?