Risques de sécurité de PermitUserEnvironment dans ssh

11

J'ai lu pas mal de messages concernant l'utilisation de PermitUserEnvironmentet le fichier ~/.ssh/environmentafin de passer des variables env à un shell ssh. Les documents officiels de sshd et quelques autres ressources font allusion à certains risques de sécurité de faire cela.

L'activation du traitement de l'environnement peut permettre aux utilisateurs de contourner les restrictions d'accès dans certaines configurations à l'aide de mécanismes tels que LD_PRELOAD.

Quels sont les problèmes de sécurité probables liés à l'activation PermitUserEnvironment? Je cherchais à conserver les détails de connexion DB dans ces variables d'environnement, est-ce conseillé?

Rob Squires
la source
J'ai déposé un rapport de bogue avec le projet OpenSSH, leur demandant d'ajouter quelques mots à la page de manuel sshd_config, clarifiant ce problème: bugzilla.mindrot.org/show_bug.cgi?id=2317
Florin Andrei

Réponses:

16

Tout d'abord, si vous n'essayez pas de faire quoi que ce soit d'extraordinaire avec les restrictions d'accès utilisateur - c'est-à-dire si vous offrez un accès shell interactif - il n'y a probablement aucun risque de sécurité supplémentaire à autoriser l'utilisation du .ssh/environmentfichier, car l'utilisateur pourrait accomplir avec ce fichier, ils pourraient également le faire de manière interactive dans leur shell.

L'activation du traitement de l'environnement peut permettre aux utilisateurs de contourner les restrictions d'accès dans certaines configurations à l'aide de mécanismes tels que LD_PRELOAD.

Si vous utilisez des commandes forcées SSH pour limiter ce que les gens peuvent faire via ssh (par exemple, si vous limitez les gens à utiliser uniquement sftpou scp), autoriser quelqu'un à définir des variables d'environnement telles que LD_PRELOAD(ou peut-être même PATH) leur permettrait de détourner votre restrictions en remplaçant les appels de bibliothèque de base par leur propre code. En revanche, si vous créez .ssh/environmentle compte de vos utilisateurs et qu'ils ne sont pas capables de le gérer autrement, vos risques sont relativement faibles.

Sans en savoir plus sur votre cas d'utilisation particulier, il est difficile de fournir une réponse définitive.

larsks
la source
Je n'autorise l'accès au serveur qu'à partir de 2 ou 3 parties de confiance (développeurs au sein de notre propre organisation) via leurs clés rsa. Donc, d'après ce que vous dites, cela semble correct
Rob Squires
D'après votre réponse, je suppose que je ne devrais pas perdre de vue les implications de sécurité de l'activation de cette option si tous mes comptes ssh fournissent un accès bash complet (pas de sudo). Correct?
Florin Andrei
C'est correct. Si vous fournissez un accès bash complet, les utilisateurs peuvent déjà définir les variables d'environnement de leur choix.
larsks