Comment est-ce que sudo est plus sûr que d'utiliser directement su si l'utilisateur a accès à toutes les commandes?

40

J'ai donc lu les différences entre l'utilisation de su et de sudo , et tout le monde semble être d'accord sur le fait 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 pouvez casser votre système entier avec une seule commande. Ceci je comprends. MAIS l'utilisateur initial créé sur le système a également accès à toutes les commandes utilisant sudo. C'est ce que je peux découvrir en exécutant su -l . Si tel est le cas, je peux simplement exécuter sudo <game-ending command> pour détruire mon système. Alors, comment cette approche est-elle meilleure ou plus sûre, me permettant ainsi d'accéder directement au compte super utilisateur? Je peux exécuter toutes les mêmes commandes ...

Est-ce parce que, en utilisant sudo sur la ligne de commande, je dis explicitement à l'ordinateur que je pense savoir ce que je fais? Est-ce qu'ils pensent que les gens vont oublier qu'ils sont sous le compte super utilisateur à moins qu'ils ne le disent explicitement?

Les gens déclarent également que si le système était compromis et entré par une personne étrangère, le fait d’être sous le compte root leur permettrait de faire des choses terribles sur 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 les mêmes choses terribles en utilisant sudo et en entrant mon mot de passe, car ils n'ont même pas besoin de connaître le mot de passe du super utilisateur. Qu'est-ce que je ne reçois pas ici?

    
posée bmcentee148 21.02.2018 - 03:14
la source

6 réponses

40

Personnellement, je ne le considère pas nécessairement comme plus sûr et la plupart des avantages (de sudo) sont sur un système multi-utilisateurs. Sur un système mono-utilisateur, il s’agit probablement d’un lavage.

Les avantages sont (sans ordre particulier):

  • sudo a une journalisation supérieure. sudo enregistre chaque commande.
  • sudo permet un meilleur contrôle du grain. On peut configurer sudo pour donner un accès root à certaines mais pas à toutes les commandes.
  • sudo utilise le mot de passe de connexion. Cela évite d'avoir à donner le mot de passe root (comme vous le feriez avec su) et est lié au point ci-dessus concernant un contrôle / accès plus fin à la racine.
  • Dans Ubuntu, par défaut, le compte root est verrouillé. Cela dissuade les craqueurs de se connecter (via via disons 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, alors il suffit de 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 revient de temps en temps mais est modérément ésotérique. Voir lien
  • certaines personnes estiment que le fait d’avoir à taper sudo avant chaque commande qu’elles souhaitent exécuter en tant que root ou à expirer permet de réfléchir plus clairement et de réduire les erreurs ou les commandes erronées. Si cela vous aide, cela serait également un avantage.

Il y a probablement plus d’avantages, mais ce sont les principaux, à mon humble avis.

Voir aussi - lien

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

  • Rien dans su ou sudo ne vous empêche d’exécuter du code malveillant tant que vous connaissez le mot de passe. Ni est plus sûr ou meilleur.
  • Les craqueurs peuvent accéder au shell via un certain nombre de méthodes. Lorsque vous voyez "exécuter du code arbitraire" dans un avis de sécurité - lien - cela signifie qu’un pirate peut exécuter / bin / bash ou toute autre autre code. Ainsi, un pirate, via divers exploits, peut obtenir un accès au shell sans connaître votre identifiant ou votre mot de passe. Ni sudo ni su ne vous aide.
  • Si un cracker a un accès shell, il peut causer beaucoup de dégâts sans accès root. Par exemple, le ransomware qui crypte toutes vos données personnelles.
  • Si un cracker a un accès shell à un compte avec un accès root, via su ou sudo, le cracker peut obtenir un accès root via un certain nombre de méthodes au-delà de la portée de cette discussion. Ni sudo ni su n'est supérieur à cet égard non plus.

Donc, alors que vous avez observé des problèmes ou des failles avec sudo, su a exactement les mêmes vulnérabilités et su n'est pas supérieur à sudo dans ces aspects, IMHO

    
réponse donnée Panther 21.02.2018 - 03:38
la source
9

Imaginez que vous ayez 20 minutes pour faire quelque chose de complexe. Vous êtes un peu la gueule de bois et vous devez vous précipiter. "Utilisons su", dites-vous. "Cela vous fera gagner du temps" est votre raisonnement.

Par accident, vous tapez

rm -rf /*

au lieu de

rm -rf ./*

Votre système se dépose maintenant et vous disposez de 10 minutes avant la date limite.

Si vous choisissez explicitement quand vous avez besoin de root, vous pouvez réduire les risques que cela se produise. La racine peut ne pas être nécessaire pour rm -r ./* alors pourquoi l'utiliser? Pourquoi prendre le risque?

C'est ce que "sécurité" signifie ici. Minimiser le risque que les utilisateurs (tous les utilisateurs, pas seulement les débutants) commettent une erreur fatale.

Bien sûr, il s’agit d’un exemple extrême qui ne devrait pas être autorisé dans un environnement de production (je garantis que cela s’est produit dans un environnement prod).

Au niveau de la sécurité, il y a des choses pour lesquelles sudo est meilleur. Comme @Panther dit - la journalisation, les restrictions, le mot de passe root est SPOF, etc.

    
réponse donnée dijksterhuis 21.02.2018 - 13:03
la source
9

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

Il y a quelque temps, dans les années 1990, les distributions facilitaient l'installation de Linux sur votre propre matériel, même avec peu de connaissances en informatique¹. Ainsi, Linux a commencé à attirer de plus en plus de personnes administrateurs système sur certains dialectes UN * X. Au lieu de cela, beaucoup étaient habitués aux systèmes (mono-utilisateur) comme Windows 95/98. Et ils ont appris que la plupart des tâches d'administration du système Linux nécessitaient de travailler sous cet étrange compte "root".

Ainsi, certains utilisateurs se sont simplement connectés en tant que root et ont utilisé ce compte pour toutes leurs tâches quotidiennes. Pourquoi devraient-ils devoir taper à nouveau le mot de passe su et root ou se connecter à un nouveau tty juste pour certaines commandes admin? Mais utiliser root pour tout n'est bien sûr pas une bonne idée, car vous pourriez faire beaucoup plus de mal à votre système avec des commandes inattendues au mauvais endroit. Cela a même amené une distribution (était-ce SuSE?) À modifier l'arrière-plan du bureau pour que l'utilisateur root affiche un gros message d'avertissement indiquant que vous ne devez utiliser ce compte que pour les tâches d'administration.

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

  • Vous ne pouvez pas vous connecter directement au compte root .²: -)
  • Le processus d’installation ne vous demandera pas de mot de passe root (supplémentaire), vous n’aurez besoin que d’un mot de passe (de votre utilisateur).
  • sudo met en cache vos informations d'identification, donc pour plusieurs commandes admin en séquence, il vous suffit de saisir votre mot de passe une fois (contrairement à su ). Cela réduit le besoin d'ouvrir un shell ou un nouveau terminal avec des privilèges root .
  • Et il est plus facile d’indiquer aux utilisateurs en ligne et dans la documentation les commandes qu’ils doivent saisir en tant qu’admin et celles qui ne le sont pas.

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

    
réponse donnée Dubu 21.02.2018 - 16:00
la source
2

Il est 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 rendre les gens tout à fait est tout simplement un gadget. Juste "sudo -s" et vous avez un shell root. Désactiver la connexion root via ssh et la laisser là.

    
réponse donnée P. Goetterup 21.02.2018 - 08:22
la source
0

Selon la configuration, sudo <game ending command> ne fonctionnera pas nécessairement. Bien sûr, si la configuration sudoers indique "utilisateur ALL = (ALL) ALL", sudo n'offrira aucune protection supplémentaire. Vous pouvez cependant spécifier une liste de commandes privilégiées que vous devez exécuter fréquemment, comme l'installation de nouveaux packages, et ne pas utiliser les commandes dangereuses telles que rm .

De cette façon, vous pouvez exécuter toutes les commandes si vous vous connectez avec root , mais comme vous n’en aurez besoin que de temps en temps, le risque d’exécuter <game ending command> sera considérablement réduit.

    
réponse donnée Dmitry Grigoryev 21.02.2018 - 15:57
la source
0

Ce sudo vous permet d’autoriser seulement certaines commandes n’est pas le seul avantage de sudo sur su.

Dans la plupart des magasins, ce n’est même pas l’avantage le plus important.

Avec sudo, vous savez qui a exécuté une commande particulière.

Maintenant, peut-être que cela ne vous concerne pas. Par exemple, vous pouvez être le seul utilisateur de votre ordinateur. Si oui, alors sudo n'est peut-être pas meilleur que su.

Beaucoup d’hôtes ont plus d’un administrateur.

sudo devient alors très utile car si quelqu'un fait la mauvaise chose, sudo vous permet de savoir qui l'a fait.

Cela vous permet de comprendre pourquoi les erreurs sont survenues et de sensibiliser les utilisateurs à la prévention des erreurs récurrentes ou, si nécessaire, à supprimer les outils de quelqu'un.

En prime, lorsque les gens savent que leurs actions sont enregistrées, ils sont souvent un peu plus prudents.

Sudo n'est pas parfait.

Si deux personnes font "sudo sh" en même temps, il peut être difficile d’attribuer des commandes à l’un ou l’autre.

Et un administrateur malveillant peut toujours supprimer ou éditer les journaux - bien que cela ne soit pas toujours aussi simple que le pensent les gens, surtout si vous avez une journalisation centralisée.

sudo n'arrête pas nécessairement une action stupide ou malveillante, pour toutes les raisons identifiées dans la question initiale.

Mais cela vous donne une bien meilleure chance d’empêcher une récurrence.

    
réponse donnée Ben Aveling 22.02.2018 - 05:13
la source

Lire d'autres questions sur les étiquettes