Como restringir o encaminhamento de porta ssh, sem negar?

6

Suponha que eu criei uma conta cujo shell de login é realmente um script que não permite um login interativo, e apenas permite que um conjunto muito limitado e específico de comandos seja executado remotamente.

No entanto, ssh permite que o usuário dessa conta encaminhe as portas, o que é um buraco.

Agora, a diferença é que, na verdade, quero que essa conta configure uma configuração de encaminhamento de porta específica quando a sessão ssh for estabelecida. Mas deve ser impossível configurar o encaminhamento de porta arbitrário.

(É uma solução aceitável se a configuração de encaminhamento de porta permitida for incondicionalmente estabelecida como parte de toda sessão.)

    
por Kaz 07.12.2012 / 21:18

2 respostas

7

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.

  1. 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 bloco Match , portanto, pode ser restringida por usuário, grupo ou nome do host ou padrão de endereço IP.

  2. Em um arquivo authorized_keys , as opções podem ser associadas a uma chave específica. Existe uma opção permitopen 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 usar ssh 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 de ssh , 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.

por 07.12.2012 / 23:08
0

There doesn't seem to be a way to create an empty list of permitted opens, to prevent users from making any -L style connections whatsoever. However, a workaround is to use a harmless, nonexistent or impossible host name, such as the empty string. Concretely, permitopen=":1234" does the trick.

Um argumento de "qualquer" pode ser usado para remover todas as restrições e permitir quaisquer solicitações de encaminhamento. Um argumento de "nenhum" pode ser usado para proibir todas as solicitações de encaminhamento. Por padrão, todas as solicitações de encaminhamento de porta são permitidas.

    
por 24.02.2016 / 11:13