Avaliação de risco do SSH PermitUserEnvironment com o ForceCommand

5

Um appliance de servidor dedicado aceita logins acima de ssh para uma única conta de login que

  • é autenticado usando apenas chaves públicas,
  • e executa um comando configurado com ForceCommand .

A conta de login pode ser usada por várias identidades, cada uma com sua chave pública registrada em authorized_keys .

Eu quero passar um token de controle para o comando de algumas dessas chaves públicas.

Eu posso usar uma variável de ambiente para isso com a configuração environment= em authorized_keys . Para fazer isso, preciso ativar PermitUserEnvironment , que é uma opção global em sshd_config (não é suportado em um bloco Match ).

Ao ativar PermitUserEnvironment , também é possível que os clientes passem as varáveis do ambiente. No entanto, acho que isso é seguro porque:

  • apenas variáveis permitidas no servidor por AcceptEnv configurações podem ser passadas pelo cliente.
  • As variáveis
  • definidas em authorized_keys têm precedência sobre aquelas transmitidas de um cliente.
  • o único login válido inicia um comando forçado, portanto, não há como acessar um shell interativo em que é possível ajustar o ambiente.

E, portanto, acredito que

  • Dado que não usarei AcceptEnv , não deve ser possível para um cliente passar uma variável de ambiente.
  • Se eu definir um valor para a variável em todas as chaves públicas, será impossível que o cliente o substitua, mesmo que (erroeously) seja permitido por AcceptEnv .
  • Como não há acesso ao shell, não há outra maneira de o ambiente ser modificado.

Este é um uso seguro de PermitUserEnvironment , ou existem outros riscos que eu não considerei acima?

    
por starfry 08.02.2017 / 14:47

0 respostas

Tags