Riscos de segurança do PermitUserEnvironment no ssh

11

Eu li alguns posts sobre o uso PermitUserEnvironmente o arquivo ~/.ssh/environmentpara passar variáveis ​​env para um shell ssh. Os documentos oficiais do sshd e alguns outros recursos aludem a alguns riscos de segurança ao fazer isso.

A ativação do processamento do ambiente pode permitir que os usuários ignorem as restrições de acesso em algumas configurações usando mecanismos como LD_PRELOAD.

Qual é o provável problema de segurança da ativação PermitUserEnvironment? Eu estava procurando manter os detalhes da conexão com o banco de dados nessas variáveis ​​de ambiente, isso é aconselhável?

Rob Squires
fonte
Arquivei um relatório de bug no projeto OpenSSH, pedindo que adicionassem algumas palavras à página de manual sshd_config, esclarecendo este problema: bugzilla.mindrot.org/show_bug.cgi?id=2317
Florin Andrei

Respostas:

16

Antes de tudo, se você não está tentando fazer algo sofisticado com as restrições de acesso do usuário - isto é, se você está oferecendo acesso interativo ao shell - provavelmente há zero risco de segurança adicional ao permitir o uso do .ssh/environmentarquivo, pois qualquer coisa que o usuário pode realizar com esse arquivo que também pode executar interativamente em seu shell.

A ativação do processamento do ambiente pode permitir que os usuários ignorem as restrições de acesso em algumas configurações usando mecanismos como LD_PRELOAD.

Se você estiver usando comandos forçados do SSH para limitar o que as pessoas podem fazer via ssh (por exemplo, se você estiver restringindo as pessoas a usar apenas sftpou scp), permitir que alguém defina variáveis ​​de ambiente como LD_PRELOAD(ou possivelmente até PATH) permitiria que eles sequestrassem o seu restrições, substituindo as chamadas básicas da biblioteca por seu próprio código. Por outro lado, se você estiver criando o .ssh/environmentnome de seus usuários e eles não conseguirem gerenciá-lo, seus riscos serão relativamente pequenos.

Sem saber mais sobre seu caso de uso específico, é difícil fornecer uma resposta definitiva.

larsks
fonte
Estou permitindo apenas o acesso ao servidor de 2 ou 3 partes confiáveis ​​(desenvolvedores de nossa própria organização) por meio de suas chaves rsa. Assim, desde que você está dizendo que parece ok
Rob Squires
Pela sua resposta, entendo que não devo perder o sono com as implicações de segurança de ativar essa opção se todas as minhas contas ssh fornecerem acesso completo ao bash (sem sudo). Corrigir?
Florin Andrei
Está correto. Se você estiver fornecendo acesso completo ao bash, as pessoas já poderão definir as variáveis ​​de ambiente que desejarem.
Larsks