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çãopermitopen
que funciona de maneira semelhante à configuração do servidor-config.
Notas / limitações:
-
A opção
AllowTcpForwarding
desativa 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
PermitOpen
para as conexões-R
style. Isso provavelmente está bem. O que isso significa é que os usuários podem usarssh
para 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-R
portas (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
-L
style. 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.