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
- Je parle ici de l'utilisation de
sudo
dans une session utilisateur interactive, pas pour des services ou des scripts d'administration - 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)
- 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.
0 votes
@SnakeDoc Merci, c'est le genre de réponse que j'attendais. Aurais-tu l'obligeance d'écrire une réponse détaillée? Je suis content d'apprendre!
0 votes
@SnakeDoc - comment proposeriez-vous d'autoriser l'accès programmatique aux commandes sudo si "sudo ne doit jamais être sans mot de passe".
2 votes
@EEAA c'est en fait assez facile sous linux. Les seuls comptes qui devraient être autorisés à être sans mot de passe en sudo, seraient des comptes système auxquels on ne peut pas se connecter et donc ne peut pas élever ses privilèges à ce compte et utiliser ces permissions contre vous. Définissez un shell bidon pour le compte dans
/etc/passwd
tel que nologin, définissez aucun mot de passe, puis définissez sans mot de passe dans visudo. Si vous le faites, vous devriez également vous assurer que le paramètre visudo est uniquement pour ce dont ce compte système a absolument besoin, c'est-à-dire le verrouiller sur les seules commandes qu'il devrait jamais exécuter.0 votes
@SnakeDoc D'accord. C'est différent de votre déclaration selon laquelle "sudo ne doit jamais être sans mot de passe", cependant.
0 votes
@EEAA j'étais dans l'optique de l'utilisateur interactif... je n'avais pas réalisé que nous parlions initialement de tous les comptes.
0 votes
@EEAA, SnakeDoc je voulais en fait dire un cas d'utilisateur interactif (comme je l'ai précisé plus tard) mais des informations supplémentaires sont également utiles!
0 votes
@DmitryPashkevich Oui, compris. J'essaie toujours de fournir une vue d'ensemble de toutes les informations pertinentes sur un sujet.
0 votes
Amazon pense évidemment que c'est OK parce qu'ils le font. Mais vous pouvez évidemment le changer après que votre AMI a été démarré. Les AMI ne sont aussi sécurisés que le fichier clé et le nom du serveur par défaut. Mais une fois que vous lancez votre ami, vous pouvez le personnaliser comme vous le souhaitez.
0 votes
Cloud = "mon cul" ;)