Acontece que o OpenSSH tem um recurso para isso, pois restringir o estilo -L é aberto no lado do servidor. O recurso está disponível de duas maneiras.
-
No arquivo de configuração do servidor, há uma opção
PermitOpen. Essa opção pode ser usada para especificar hosts e portas para os quais encaminhamentos podem ser estabelecidos. Essa opção pode ser usada dentro de um blocoMatch, portanto, pode ser restringida por usuário, grupo ou nome do host ou padrão de endereço IP. -
Em um arquivo
authorized_keys, as opções podem ser associadas a uma chave específica. Existe uma opçãopermitopenque funciona de maneira semelhante à configuração do servidor-config.
Notas / limitações:
-
A opção
AllowTcpForwardingdesativa todo o encaminhamento em ambas as direções, evitando que as portas de escuta sejam configuradas no servidor, bem como os encaminhamentos ativos. -
Não há controle de acesso
PermitOpenpara as conexões-Rstyle. Isso provavelmente está bem. O que isso significa é que os usuários podem usarsshpara abrir várias portas não privilegiadas para escutar no servidor. Onde estes se conectam no outro lado da conexão SSH é o problema do cliente. Se restringirmos o encaminhamento na direção-L, o usuário não terá como usar essas-Rportas (pelo menos não através dessh, se esse usuário não conseguir criar uma sessão interativa arbitrária). -
Não parece haver uma maneira de criar uma lista vazia de aberturas permitidas, para impedir que os usuários criem qualquer conexão
-Lstyle. No entanto, uma solução alternativa é usar um nome de host inofensivo, inexistente ou impossível, como a seqüência vazia. Concretamente,permitopen=":1234"faz o truque.