Como posso limitar o encaminhamento de porta ssh * remote *?

21

Eu preciso limitar quais portas podem ser remotamente ' ssh -R ' encaminhadas por um usuário.

Eu sei sobre a opção permitopen em authorized_keys, mas como diz na man page, ela limita apenas o encaminhamento de porta ' ssh -L ' local

Conforme discutido aqui , um usuário receberia o mesmo com netcat ou similar, mas neste caso, o usuário não tem acesso ao shell

Eu também encontrei este tópico que fala sobre usar o selinux ou LD_PRELOAD , mas eu nunca configurou o selinux antes e não consegue encontrar informações sobre como fazer isso com LD_PRELOAD .

talvez alguém tenha feito um patch para o openssh implementá-lo?

EDITAR: Eu encontrei este relatório de bug então eu acho que ele ainda não está implementado

    
por Lluís 28.12.2012 / 14:42

4 respostas

1

Isso foi implementado no OpenSSH 7.8p1, que foi lançado em 2018-08-24. Cite as notas de lançamento:

add a PermitListen directive to sshd_config(5) and a corresponding permitlisten= authorized_keys option that control which listen addresses and port numbers may be used by remote forwarding (ssh -R ...).

    
por 20.11.2018 / 15:06
4

Há uma opção no-port-forwarding que você pode usar, que impede todo o encaminhamento de porta. Presente pelo menos a partir do OpenSSH 4.3p2 (CentOS 5.3 - a máquina mais antiga a que tenho acesso). Coloque-o no mesmo lugar em que você colocaria permitopen .

    
por 28.12.2012 / 15:33
0

Não é possível limitar isso usando o ssh. Talvez selinux ou iptables pudessem ser usados para esse fim. No entanto, existe uma estratégia alternativa que pode ou não atender às suas necessidades. Use a ligação para soquetes do UNIX. Isso deve estar disponível a partir da versão 6.8 do openssh.

Ao usar soquetes, você tem a ACL do sistema de arquivos (apesar de os soquetes respeitarem que podem ser * nix dependentes) e você pode usá-los para impedir que um usuário se conecte a outros soquetes. No entanto, ele não impede a ligação às portas de forma alguma, portanto, dependendo do seu caso de uso, talvez não ajude, mas talvez as portas não importem se você puder usar apenas soquetes de forma consistente.

Com o UNIX sockets, é difícil lidar com arquivos de soquete pendentes, pois os editores reversos tentam se reconectar. Eu tenho outra pergunta (e resposta) para esse problema. Em suma, você provavelmente também quer usar StreamLocalBindUnlink yes :

Como limpar Soquete do túnel reverso do SSH após a conexão ser fechada?

    
por 27.03.2018 / 09:12
-1

Duplicar: link

Parece que você pode usar o seguinte?

In the server configuration file there is a PermitOpen option. This option can be used to specify hosts and ports for which forwards can be established. This option can be used inside a Match block, so it can be restricted by user, group, or hostname or IP address pattern.

Editar: Então, na configuração do servidor, adicione o seguinte

PermitOpen host:port

PermitOpen IPv4_addr:port

PermitOpen [IPv6_addr]:port

    
por 22.12.2016 / 21:48