42 votes

Comment le sudo est-il plus sûr que l'utilisation directe de su si l'utilisateur a accès à toutes les commandes?

Alors j'ai étudié les différences entre utiliser su et sudo, et tout le monde semble être d'accord que l'approche sudo est plus sûre que d'autoriser l'accès au compte root lui-même. Ils disent qu'avec le compte root, vous pourriez casser tout votre système avec juste une seule commande. Cela je comprends. MAIS l'utilisateur initial créé sur le système a également accès à toutes les commandes en utilisant sudo. Je peux le vérifier en exécutant su -l. Si c'est le cas, alors je peux simplement exécuter sudo pour ruiner mon système. Alors comment cette approche est-elle meilleure ou plus sûre que de me donner un accès direct au compte super utilisateur? Je peux exécuter toutes les mêmes commandes...

Est-ce parce qu'en utilisant sudo en ligne de commande, je dis explicitement à l'ordinateur que je pense savoir ce que je fais? Pensent-ils que les gens oublieront qu'ils sont sous le compte super utilisateur à moins de le dire explicitement?

Les gens disent aussi que si le système était compromis et qu'une personne étrangère y entrait, être sous le compte root leur permettrait de faire des choses terribles à mon système. Mais il me semble que s'ils ont déjà accès à mon compte et connaissent mon mot de passe, ils peuvent faire ces mêmes choses terribles en utilisant sudo et en entrant mon mot de passe puisqu'ils n'ont même pas besoin de connaître le mot de passe du super utilisateur. Qu'est-ce que je ne comprends pas ici?

42voto

Panther Points 96601

Personnellement, je ne considère pas nécessairement plus sûr (sudo) et la plupart des avantages sont sur un système multi-utilisateur. Sur un système mono-utilisateur, c'est probablement pareil.

Les avantages sont (sans ordre particulier):

  • sudo a une journalisation supérieure. sudo enregistre chaque commande.
  • sudo permet un contrôle plus fin. On peut configurer sudo pour donner un accès root à certaines commandes mais pas à toutes.
  • sudo utilise le mot de passe de connexion. Cela évite de donner le mot de passe root (comme avec su) et est lié au point ci-dessus concernant le contrôle plus fin / l'accès à root.
  • Par défaut, dans Ubuntu, le compte root est verrouillé. Cela dissuade les pirates car pour se connecter (à distance par exemple via ssh), ils doivent deviner à la fois un nom d'utilisateur et un mot de passe. Si le compte root n'est pas verrouillé, comme c'est le cas avec su, ils n'ont qu'à craquer le mot de passe de root.
  • sudo -i est probablement la meilleure méthode pour isoler les variables d'environnement de root de votre utilisateur. Cela arrive de temps en temps mais c'est assez ésotérique. Voir https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells
  • certains pensent que devoir taper sudo avant chaque commande qu'ils souhaitent exécuter en tant que root ou que sudo prenne du temps leur permet de s'arrêter et de réfléchir plus clairement, et de réduire leurs erreurs ou l'exécution de commandes erronées. Si cela vous aide, ce serait également un avantage.

Il y a probablement plus d'avantages, mais ceux-ci sont les principaux, à mon avis.

Voir aussi - https://help.ubuntu.com/community/RootSudo

Pour essayer de répondre à certaines de vos autres pensées:

  • Il n'y a rien dans su ou sudo qui empêche l'exécution de code malveillant tant que vous connaissez le mot de passe. Aucun des deux n'est plus sûr ou meilleur.
  • Les pirates peuvent obtenir un accès shell via plusieurs méthodes. Lorsque vous voyez "exécuter du code arbitraire" dans un avis de sécurité - https://usn.ubuntu.com/usn/ - cela signifie qu'un pirate peut exécuter /bin/bash ou tout autre code. Ainsi, un pirate, via divers exploits, peut obtenir un accès shell sans connaître votre nom d'utilisateur ou votre mot de passe. Ni sudo ni su n'aident dans ce cas.
  • Si un pirate a un accès shell, il peut faire beaucoup de dégâts sans avoir un accès root. Par exemple, le ransomware qui crypte toutes vos données personnelles.
  • Si un pirate a un accès shell à un compte avec accès root, via su ou sudo, le pirate peut obtenir un accès root via plusieurs méthodes qui dépassent le cadre de cette discussion. Ni sudo ni su ne sont supérieurs à cet égard non plus.

Donc, même si vous avez observé des problèmes ou des failles avec sudo, su présente les mêmes vulnérabilités et su n'est pas supérieur à sudo dans ces aspects, à mon avis

10voto

dijksterhuis Points 225

Imaginez que vous avez 20 minutes pour faire quelque chose de complexe. Vous êtes un peu à jeun et vous devez vous dépêcher. "Utilisons su" dites-vous. "Ça va gagner du temps" est votre raisonnement.

Par accident, vous tapez

rm -rf /*

au lieu de

rm -rf ./*

Votre système est maintenant en train de se briquer et vous avez 10 minutes avant la date limite.

Si vous choisissez explicitement quand vous avez besoin de root, vous pouvez minimiser les chances que cela se produise. Root n'est peut-être pas nécessaire pour rm -r ./* donc pourquoi l'utiliser ? Pourquoi prendre le risque?

C'est ce que "sécurité" signifie ici. Minimiser le risque d'erreurs fatales commises par les utilisateurs (tous les utilisateurs, pas seulement les débutants).

Évidemment, c'est un exemple extrême qui ne devrait pas être autorisé à se produire dans un environnement de production (je vous garantis que cela s'est produit dans un environnement de prod).

En termes de sécurité, il y a des choses pour lesquelles sudo est meilleur aussi. Comme @Panther le dit - journalisation, restrictions, le mot de passe root est un unique point de défaillance, etc.)

9voto

Dubu Points 879

Je veux ajouter un peu de perspective historique aux autres réponses. Malheureusement, je n'ai pas de sources prêtes, sauf mes propres souvenirs de discussions sur Usenet et d'articles de magazines.

Il y a quelque temps, dans les années 1990, les distributions rendaient l'installation de Linux sur votre propre matériel plus facile, même avec peu de connaissances en informatique. Ainsi, Linux a commencé à attirer de plus en plus de personnes qui, étonnamment, n'avaient pas été formées auparavant en tant qu'administrateurs système sur un dialecte UN*X. Au lieu de cela, beaucoup étaient habitués à des systèmes (à utilisateur unique) comme Windows 95/98. Et ils ont appris que la plupart des tâches d'administration système sous Linux nécessitaient de travailler sous ce compte étrange de "root".

Ainsi, certains utilisateurs se connectaient simplement en tant que root et utilisaient ce compte pour toutes leurs tâches quotidiennes. Pourquoi devraient-ils taper su et le mot de passe root encore et encore ou se connecter à un nouveau tty juste pour quelques commandes d'administration? Mais utiliser root pour tout n'est bien sûr pas une bonne idée, car vous pourriez causer beaucoup plus de dommages à votre système avec une commande imprudente au mauvais endroit. Cela a même amené certaines distributions (était-ce SuSE?) à modifier le fond d'écran du bureau pour l'utilisateur root et afficher un grand avertissement disant que vous devriez utiliser ce compte uniquement pour les tâches d'administration.

Ainsi, la méthode Ubuntu avec sudo présente quelques avantages (en plus de ceux déjà énumérés par Panther).

  • Vous ne pouvez pas vous connecter directement au compte root.² :-)
  • Le processus d'installation ne vous demandera pas un mot de passe root (supplémentaire), vous n'avez besoin que d'un seul mot de passe (celui de votre utilisateur).
  • sudo met en cache vos informations d'identification, donc pour plusieurs commandes d'administration successives, vous n'avez à entrer votre mot de passe qu'une seule fois (contrairement à su). Cela réduit l'envie d'ouvrir simplement un shell ou un nouveau terminal avec des privilèges root.
  • Et cela facilite la tâche de dire aux utilisateurs en ligne et dans la documentation quelles commandes ils doivent entrer en tant qu'administrateur et lesquelles non.³

¹ Et pour ceux qui n'osent pas le faire eux-mêmes, il y avait des fêtes d'installation.
² Mais vous pouvez utiliser une commande comme sudo -i ou sudo su - root pour obtenir un shell root après vous être connecté en tant qu'utilisateur normal.
³ Mais bien sûr, vous savez que vous ne devez pas simplement copier-coller des commandes de l'Internet, n'est-ce pas? Vous devez aussi le savoir.

3voto

P. Goetterup Points 139

Il a été possible de désactiver la connexion root via ssh depuis des décennies. La manière Ubuntu de désactiver le compte root et de faire en sorte que les gens fassent tout en tant que sudo n'est rien de plus qu'un gadget. Il suffit de taper "sudo -s" et vous avez un shell root. Désactivez la connexion root via ssh et laissez-la ainsi.

0voto

Dmitry Grigoryev Points 1769

En fonction de la configuration, sudo ne fonctionnera pas nécessairement. Bien sûr, si la configuration des sudoers indique "user ALL=(ALL) ALL", sudo n'offrira aucune protection supplémentaire. Vous pouvez cependant spécifier une liste de commandes privilégiées que vous avez besoin d'exécuter souvent, comme l'installation de nouveaux packages, et exclure des commandes dangereuses comme rm.

De cette manière, vous pouvez exécuter toutes les commandes si vous vous connectez en tant que root, mais comme vous n'aurez besoin de le faire que de temps en temps, le risque d'exécuter sera considérablement réduit.

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