Temos um servidor público que aceita conexões SSH de vários clientes atrás de firewalls.
Cada um desses clientes cria um túnel SSH reverso usando o ssh -R
comando de seus servidores da web na porta 80 para o servidor público.
A porta de destino (no lado do cliente) do túnel SSH reverso é 80 e a porta de origem (no lado do servidor público) depende do usuário. Estamos planejando manter um mapa de endereços de portas para cada usuário.
Por exemplo, o cliente A encapsularia seu servidor da web na porta 80 para a porta 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
Basicamente, o que estamos tentando fazer é vincular cada usuário a uma porta e não permitir que eles façam túnel para outras portas.
Se estivéssemos usando o recurso de encapsulamento direto do SSH ssh -L
, poderíamos permitir que porta fosse encapsulada usando a permitopen=host:port
configuração. No entanto, não há equivalente para o túnel SSH reverso.
Existe uma maneira de restringir as portas de encapsulamento reverso por usuário?