65 votes

Est-il ok de configurer un `sudo` sans mot de passe sur un serveur cloud ?

J'adore l'idée d'accéder aux serveurs via des clés, de sorte que je n'ai pas à taper mon mot de passe à chaque fois que je me connecte en ssh sur une machine, j'ai même verrouillé le mot de passe de mon utilisateur (pas root) (passwd -l nom_utilisateur) pour que ce soit impossible de se connecter sans clé.

Mais tout cela est compromis si je dois entrer un mot de passe pour les commandes sudo. Je suis tenté de mettre en place sudo sans mot de passe pour harmoniser avec la connexion sans mot de passe.

Cependant, j'ai toujours le pressentiment que cela pourrait me nuire de manière inattendue, cela semble quelque peu insécurisé. Y a-t-il des inconvénients à une telle configuration? Recommanderiez-vous ou déconseilleriez-vous de le faire pour un compte utilisateur sur un serveur?

Clarifications

  1. Je parle ici de l'utilisation de sudo dans une session utilisateur interactive, pas pour des services ou des scripts d'administration
  2. Je parle de l'utilisation d'un serveur cloud (donc je n'ai pas d'accès physique local à une machine et je ne peux me connecter que à distance)
  3. Je sais que sudo a un délai après lequel je n'ai pas à retaper mon mot de passe. Mais mon souci n'est pas vraiment de perdre du temps supplémentaire à taper un mot de passe. Mon idée était en réalité de ne pas avoir à gérer un mot de passe du tout, car je pars du principe que :
    • Si je dois le mémoriser, il est très probablement trop court pour être sécurisé ou réutilisable
    • Si je génère un mot de passe long et unique pour mon compte distant, je devrai le stocker quelque part (dans un programme de gestion de mots de passe local ou un service cloud) et le récupérer à chaque fois que je veux utiliser sudo. J'espérais éviter cela.

Ainsi, avec cette question, je souhaitais mieux comprendre les risques, les inconvénients et les compromis d'une configuration possible par rapport aux autres.

Suite 1

Toutes les réponses disent que sudo sans mot de passe est insécurisé car cela permet une élévation "facile" des privilèges si mon compte utilisateur personnel est compromis. Je comprends cela. Mais d'un autre côté, si j'utilise un mot de passe, nous courons tous les risques classiques liés aux mots de passe (trop courts ou courants, répétés sur différents services, etc.). Mais je suppose que si je désactive l'authentification par mot de passe dans /etc/ssh/sshd_config de sorte que vous devez toujours avoir une clé pour vous connecter, je peux utiliser un mot de passe plus simple juste pour sudo qui est plus facile à taper? Est-ce une stratégie valide?

Suite 2

Si j'ai également une clé pour me connecter en tant que root via ssh, si quelqu'un accède à mon ordinateur et vole mes clés (elles sont tout de même protégées par le mot de passe du trousseau de l'OS!), ils pourraient tout aussi bien avoir un accès direct au compte root, contournant le chemin sudo. Quelle devrait être la politique pour accéder au compte root alors?

2 votes

Je ne le recommanderais pas du tout, car il y a souvent des moyens d'obtenir un shell en tant qu'utilisateur (puisque tous les services sont sujets à des violations de sécurité, mais ils fonctionnent généralement en tant qu'utilisateur pour éviter un accès complet au système), mais disposer d'un mot de passe pour se connecter en tant que root empêche les personnes non autorisées d'obtenir un accès root. S'il n'y en a pas, pensez que quiconque accède à votre compte utilisateur de quelque manière que ce soit a un accès complet au serveur. Définir un mot de passe pourrait ne pas être grand-chose, mais cela aide.

0 votes

Veuillez consulter mes questions de suivi.

1 votes

Sudo ne doit jamais être sans mot de passe. root devrait être désactivé pour les connexions distantes via SSH, le port ssh ne doit pas être par défaut (pour se débarrasser des robots stupides), et tout compte nécessitant sudo devrait être limité aux pouvoirs sudo strictement nécessaires pour ce dont ils ont besoin (redémarrer un service uniquement, etc.), et également avoir des mots de passe très forts.

3voto

hookenz Points 13952

Dans certains cas, il est nécessaire de le faire. par exemple certains API hyperviseurs nécessitent une connexion sans mot de passe et sans sudo. Mais vous pouvez toujours restreindre cela sans casser.

Pour ce que vous essayez d'accomplir. Je dirais, habituez-vous à taper un mot de passe. La sécurité est plus pratique que la commodité ici. D'ailleurs, si vous avez vraiment besoin d'un accès root, vous pouvez utiliser sudo et il mettra en cache les informations d'identification pendant un certain temps afin que si vous exécutez plusieurs commandes sudo à la suite, il ne demandera que le mot de passe la première fois. Donc ce n'est pas une si grande gêne que vous le supposez.

Aussi, si vous tapez un grand nombre de commandes avec des privilèges root et que vous ne voulez pas mettre sudo au début à chaque fois, vous pouvez soit utiliser su ou sudo -s pour obtenir un shell root. Vous saisirez votre mot de passe une fois et c'est tout.

2voto

aib Points 121

Une fois, j'ai été piégé par le sudo sans mot de passe. C'était un script shell, un installateur quelconque qui appelait sudo en mon nom au lieu de simplement exiger sudo ou afficher une erreur.

Imaginez taper 'make' et le script faisant la partie 'sudo make install' pour vous, sans configurer ou afficher le chemin de base, et le script étant si stupide au départ que vous n'êtes pas sûr qu'ils connaissent /usr/local et donc vous commencez à vérifier /usr pour des modifications...

J'ai promis de ne plus jamais utiliser NOPASSWD et j'ai aussi changé ce paramètre de délai à 0.

2voto

Ian Hinder Points 121

Les autres réponses ici sont excellentes et abordent la plupart des points importants. Une chose que je n'ai pas vue mentionnée est le fait que tout type d'authentification que vous effectuez lorsque vous êtes connecté peut être capturé par un attaquant distant qui a déjà établi une position dans votre compte. Ils peuvent modifier vos fichiers de connexion shell ou PATH pour installer un enregistreur de frappe de sorte que tout ce que vous tapez, y compris votre mot de passe sudo, leur soit envoyé. Ils pourraient ajouter un binaire sudo piraté à votre PATH pour collecter votre mot de passe. Ils peuvent détourner la connexion ssh de l'agent vers votre machine connectée pour contourner pam_ssh_agent_auth et devenir root dès que vous vous connectez. Donc, en termes de sécurité absolue, je ne vois pas de différence entre l'utilisation d'un mot de passe pour sudo et pas du tout. Bien sûr, cela rend l'attaque plus compliquée, et ils obtiennent les droits root une fois que vous avez utilisé sudo une fois, plutôt que immédiatement.

En résumé, je crois que la seule façon d'empêcher absolument qu'un compte utilisateur compromis devienne root si vous avez accès sudo est de supprimer l'accès sudo de vous-même, ou de ne jamais l'utiliser. Si vous n'êtes pas d'accord, faites-le moi savoir, car j'adorerais avoir tort !

1voto

daveharris Points 11

Alors que cela ne répond pas strictement à votre question, une autre option pourrait être de définir un timestamp_timeout plus long pour ne pas avoir à taper votre mot de passe aussi souvent. Cela empêchera n'importe qui d'obtenir des privilèges d'administrateur, tout en réduisant vos désagréments.

De la page man des sudoers:

timestamp_timeout

Nombre de minutes pouvant s'écouler avant que sudo ne demande à nouveau un mot de passe. Le délai peut inclure un composant fractionnaire si la granularité de la minute est insuffisante, par exemple 2,5. La valeur par défaut est 5. Définissez-la sur 0 pour toujours demander un mot de passe. Si elle est définie sur une valeur inférieure à 0, le jeton temporel de l'utilisateur n'expirera jamais. Ceci peut être utilisé pour permettre aux utilisateurs de créer ou de supprimer leurs propres jetons temporels via "sudo -v" et "sudo -k" respectivement.

Ce billet de blog montre quelques exemples utilisant visudo pour définir le délai en minutes, par exemple:

Defaults timestamp_timeout=60

Peut-être que c'est un compromis intéressant entre sécurité et facilité d'utilisation?

0 votes

Merci pour votre contribution! Ma question initiale concernait le fait de ne jamais avoir à utiliser (et mémoriser) un mot de passe puisque vous pouvez utiliser des clés pour vous connecter en SSH à la machine, non pas à quelle fréquence je suis censé le saisir. D'autres personnes ont toutefois indiqué que c'était une mauvaise idée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X