Riesgos de seguridad de PermitUserEnvironment en ssh

11

He leído bastantes publicaciones sobre el uso PermitUserEnvironmenty el archivo ~/.ssh/environmentpara pasar variables env a un shell ssh. Los documentos oficiales de sshd y algunos otros recursos aluden a algunos riesgos de seguridad al hacer esto.

Habilitar el procesamiento del entorno puede permitir a los usuarios eludir las restricciones de acceso en algunas configuraciones utilizando mecanismos como LD_PRELOAD.

¿Cuáles son los posibles problemas de seguridad de la activación PermitUserEnvironment? Estaba buscando mantener los detalles de conexión de DB en estas variables de entorno, ¿es esto aconsejable?

Rob Squires
fuente
Archivé un informe de error con el proyecto OpenSSH, pidiéndoles que agreguen algunas palabras a la página de manual de sshd_config, aclarando este problema: bugzilla.mindrot.org/show_bug.cgi?id=2317
Florin Andrei

Respuestas:

16

En primer lugar, si no está tratando de hacer algo elegante con las restricciones de acceso de los usuarios, es decir, si está ofreciendo acceso de shell interactivo, probablemente no existan riesgos de seguridad adicionales al permitir el uso del .ssh/environmentarchivo, ya que cualquier cosa el usuario podría lograr con ese archivo que también podría hacer interactivamente en su shell

Habilitar el procesamiento del entorno puede permitir a los usuarios eludir las restricciones de acceso en algunas configuraciones utilizando mecanismos como LD_PRELOAD.

Si está utilizando comandos forzados SSH para limitar lo que las personas pueden hacer a través de ssh (por ejemplo, si está restringiendo a las personas a usar solo sftpo scp), permitir que alguien establezca variables de entorno como LD_PRELOAD(o posiblemente incluso PATH) les permitiría secuestrar su restricciones al reemplazar las llamadas básicas de la biblioteca con su propio código. Por otro lado, si está creando el .ssh/environmentnombre en nombre de sus usuarios y no pueden administrarlo de otra manera, sus riesgos son relativamente pequeños.

Sin saber más sobre su caso de uso particular, es difícil proporcionar una respuesta definitiva.

larsks
fuente
Solo estoy permitiendo el acceso al servidor de 2 o 3 partes confiables (desarrolladores dentro de nuestra propia organización) a través de sus claves rsa. Entonces, por lo que dices, suena bien
Rob Squires
De su respuesta, supongo que no debería perder el sueño por las implicaciones de seguridad de habilitar esta opción si todas mis cuentas ssh proporcionan acceso completo a bash (sin sudo). ¿Correcto?
Florin Andrei
Eso es correcto. Si proporciona acceso bash completo, las personas ya pueden establecer las variables de entorno que deseen.
larsks