sudo sans mot de passe lorsque connecté avec des clés privées SSH

20

Est-il possible de créer une commande sudo pour prendre en charge les clés privées SSH, de sorte que lorsque l'utilisateur se connecte à l'aide d'une clé privée, il / elle puisse se connecter à sudo sans saisir de mot de passe.

Cela permettrait de stocker les mots de passe UNIX sysadmin dans un entrepôt frigorifique chiffré sans avoir à y accéder, en supposant que les utilisateurs utilisent toujours des clés SSH privées sécurisées pour se connecter au serveur.

Mikko Ohtamaa
la source
askubuntu.com/a/135838 Si vous mettez ces utilisateurs dans un groupe, vous pouvez le faire!
Rob
essayez sudo visudoet changez votre mot de passe pour NOPASSWD: ALLvoir si ca marche
pneumatics
3
@AlanTuring Cela fonctionnerait également pour les utilisateurs de ce groupe qui s'identifiaient via un mot de passe.
Xyon
@AlanTuring Cela réduirait effectivement la sécurité du serveur - je ne veux que certains utilisateurs, pas tous, sudo
Mikko Ohtamaa
Il est possible de donner des privilèges à des utilisateurs spécifiques. Voir ma réponse.
Isaac Rabinovitch

Réponses:

5

Cette option existe depuis (au moins) avril 2014 .

Vous devrez installer un package appelé pam_ssh_agent_auth(disponible immédiatement pour YMMV, disponible pour Centos 7), puis configurer /etc/pam.d/sudopour l’accepter comme méthode d’autorisation. Enfin, vous devrez peut-être ajouter SSH_AUTH_SOCKà la liste des variables d'environnement qui persistent pendant sudo.

Le wiki Gentoo a des détails pour ces étapes.

Liam Dawson
la source
1
Bien, merci Liam. Dommage que je n'ai pas été dans sysadmin depuis de nombreuses années!
Mikko Ohtamaa
2

Ce n'est pas possible sans quelques modifications sérieuses dans sudo et sshd. Sudo ne connaît pas les méthodes de connexion et ssh ne publie dans les autres programmes aucune information indiquant si une clé publique, un mot de passe ou un autre mécanisme a été utilisé pour la connexion.

Comme quelqu'un d'autre l'a dit, vous pouvez utiliser l'option NOPASSWD dans les sudoers - cela s'appliquerait toujours aux utilisateurs spécifiés, mais pas seulement lorsqu'ils utilisent ssh avec des clés privées.

Si vous le souhaitez vraiment, vous pouvez utiliser certaines astuces avec un programme suid qui vérifie le journal sshd et verrouille / édite le fichier sudoers pour permettre à cet utilisateur d'effectuer un sudo sans mot de passe, ainsi qu'une tâche périodique pour révoquer cette autorisation.

Cela dit, je pense que c'est une mauvaise idée. Exiger un mot de passe pour les commandes privilégiées présente quelques avantages intéressants par rapport à la clé privée SSH. En particulier, il vous laisse des délais pour l'authentification (le mot de passe doit être saisi à nouveau, ce n'est pas le cas pour les sessions ssh), il vous permet de définir des minimums de mot de passe et une rotation (contrairement aux clés ssh, dont la phrase secrète est en dehors du contrôle du serveur).

Dagon
la source
9
"Cela ne peut pas être fait" n'est pas une réponse, surtout quand cela peut être fait.
Isaac Rabinovitch
Modification de la réponse par la réponse correcte contenant un nouvel informatino.
Mikko Ohtamaa
1

Quelques réponses Pointez sur sudo sans mot de passe utilisateur distinct. Vous devriez être conscient que cela diminuera votre sécurité.

Pour un utilisateur qui s'est déjà fortement authentifié avec un certificat, cela peut ne pas être un problème, car il est en possession du certificat qui pourrait théoriquement le rendre root.

Toutefois, si vous envisagez des vulnérabilités qui fourniront à un attaquant un shell utilisateur limité et que cet utilisateur a NOPASSWD défini dans le fichier sudoers, l'attaquant est root sans aucune information d'identification du système.

Si sudo requiert un mot de passe de l'utilisateur, l'attaquant a besoin de temps et de chance pour faire passer ses privilèges à root.

Sebastian Brabetz
la source