Inwiefern ist sudo sicherer als die direkte Verwendung von su, wenn dem Benutzer Zugriff auf alle Befehle gewährt wird?

Inwiefern ist sudo sicherer als die direkte Verwendung von su, wenn dem Benutzer Zugriff auf alle Befehle gewährt wird?

suIch habe mich also mit den Unterschieden zwischen der Verwendung von und beschäftigt sudound alle scheinen sich einig zu sein, dass dieser sudoAnsatz sicherer ist, als den Zugriff auf das Root-Konto selbst zuzulassen. Es heißt, dass man mit dem Root-Konto mit nur einem einzigen Befehl das gesamte System zerstören könnte. Das verstehe ich. ABER der ursprüngliche Benutzer, der auf dem System erstellt wird, hat auch Zugriff auf alle Befehle, die sudo verwenden. Das kann ich herausfinden, indem ich ausführe su -l. Wenn dies der Fall ist, kann ich einfach ausführen, sudo <game-ending command>um mein System zu ruinieren. Inwiefern ist dieser Ansatz also besser oder sicherer, als mir direkten Zugriff auf das Superuser-Konto zu gewähren? Ich kann alle dieselben Befehle ausführen...

Liegt es daran, dass sudoich dem Computer durch die Verwendung der Befehlszeile ausdrücklich mitteile, dass ich glaube, zu wissen, was ich tue? Glauben sie, die Leute werden vergessen, dass sie sich unter dem Superuser-Konto befinden, wenn sie es nicht ausdrücklich sagen?

Die Leute behaupten auch, dass jemand, der sich Zugang zu meinem System verschafft, mit dem Root-Konto schreckliche Dinge mit meinem System anstellen könnte, wenn er kompromittiert und in das System eingedrungen wäre. Aber ich habe den Eindruck, dass jemand, der bereits Zugriff auf mein Konto hat und mein Passwort kennt, dieselben schrecklichen Dinge tun kann, indem er sudo verwendet und mein Passwort eingibt, da er nicht einmal das Passwort des Superusers kennen muss. Was verstehe ich hier nicht?

Antwort1

Persönlich halte ich es nicht unbedingt für sicherer und die meisten Vorteile (von sudo) kommen auf einem Mehrbenutzersystem zum Tragen. Auf einem Einzelbenutzersystem ist es wahrscheinlich gleichauf.

Die Vorteile sind (in keiner bestimmten Reihenfolge):

  • sudo verfügt über eine hervorragende Protokollierung. sudo protokolliert jeden Befehl.
  • sudo ermöglicht eine feinere Steuerung. Man kann sudo so konfigurieren, dass Root-Zugriff auf einige, aber nicht alle Befehle gewährt wird.
  • sudo verwendet das Anmeldekennwort. Dadurch müssen Sie das Root-Kennwort nicht eingeben (wie bei su) und es hängt mit dem obigen Punkt bezüglich feinkörnigerer Kontrolle/Zugriff auf Root zusammen.
  • In Ubuntu ist das Root-Konto standardmäßig gesperrt. Dies schreckt Cracker ab, da sie zum Anmelden (remote über beispielsweise ssh) sowohl einen Benutzernamen als auch ein Passwort erraten müssen. Wenn das Root-Konto nicht gesperrt ist, wie dies bei su der Fall ist, müssen sie nur das Root-Passwort knacken.
  • sudo -iist wahrscheinlich die beste Methode, um die Umgebungsvariablen von root von Ihrem Benutzer zu isolieren. Dies kommt von Zeit zu Zeit vor, ist aber ziemlich esoterisch. Siehehttps://help.ubuntu.com/community/RootSudo#Spezielle Hinweise zu sudo_und_shells
  • einige Leutehaben das Gefühl, dass sie durch die Eingabe von sudo vor jedem Befehl, den sie als Root ausführen möchten, oder durch die Zeitüberschreitung von sudo innehalten und klarer nachdenken können und so ihre Fehler oder die Ausführung fehlerhafter Befehle reduzieren. Wenn Ihnen das hilft, wäre das ebenfalls von Vorteil.

Es gibt wahrscheinlich noch mehr Vorteile, aber das sind meiner Meinung nach die wichtigsten.

Siehe auch -https://help.ubuntu.com/community/RootSudo

Um zu versuchen, einige Ihrer anderen Gedanken zu beantworten:

  • Weder su noch sudo verhindern, dass Sie Schadcode ausführen, solange Sie das Passwort kennen. Keines von beiden ist sicherer oder besser.
  • Cracker können Shell-Zugriff auf verschiedene Arten erhalten. Wenn in einem Sicherheitshinweis „beliebigen Code ausführen“ steht -https://usn.ubuntu.com/usn/- das bedeutet, dass ein Cracker /bin/bash oder jeden anderen Code ausführen kann. So kann ein Cracker über verschiedene Exploits Shell-Zugriff erhalten, ohne Ihren Anmeldenamen oder Ihr Passwort zu kennen. Weder sudo noch su helfen dabei.
  • Wenn ein Cracker Shell-Zugriff hat, kann er ohne Root-Zugriff großen Schaden anrichten. Beispielsweise die Ransomware, die alle Ihre persönlichen Daten verschlüsselt.
  • Wenn ein Cracker über su oder sudo Shell-Zugriff auf ein Konto mit Root-Zugriff hat, kann er über eine Reihe von Methoden, die über den Rahmen dieser Diskussion hinausgehen, Root-Zugriff erhalten. Weder sudo noch su sind in dieser Hinsicht überlegen.

Obwohl Sie also Probleme oder Mängel bei sudo festgestellt haben, weist su genau dieselben Schwachstellen auf und su ist in diesen Aspekten meiner Meinung nach sudo nicht überlegen.

Antwort2

Stellen Sie sich vor, Sie haben 20 Minuten Zeit, um etwas Komplexes zu erledigen. Sie sind ein bisschen verkatert und müssen sich beeilen. „Lass uns su verwenden“, sagen Sie. „Das spart Zeit“, ist Ihre Begründung.

Durch Zufall tippen Sie

rm -rf /*

anstatt

rm -rf ./*

Ihr System stürzt jetzt ab und Sie haben noch 10 Minuten bis zu Ihrer Deadline.

Wenn Sie explizit angeben, wann Sie Root benötigen, können Sie die Wahrscheinlichkeit dafür minimieren. Root ist möglicherweise nicht erforderlich, rm -r ./*warum also verwenden? Warum das Risiko eingehen?

Das ist es, was „Sicherheit“ hier bedeutet. Minimieren des Risikos, dass Benutzer (alle Benutzer, nicht nur Anfänger) einen fatalen Fehler machen.

Natürlich handelt es sich hierbei um ein extremes Beispiel, das in einer Produktionsumgebung nicht vorkommen sollte (ich garantiere, dass es in einer Produktionsumgebung bereits vorgekommen ist).

Auch in puncto Sicherheit ist sudo besser geeignet.@Panther sagt- Protokollierung, Einschränkungen, Root-Passwort ist SPOF usw.)

Antwort3

Ich möchte den anderen Antworten noch ein wenig historische Perspektive hinzufügen. Leider habe ich außer meinen eigenen Erinnerungen an Usenet-Diskussionen und Zeitschriftenartikel keine Quellen parat.

Vor einiger Zeit, in den 1990er Jahren, machten es Distributionen einfacher, Linux auf der eigenen Hardware zu installieren, selbst wenn man nicht viel Computerwissen hatte.¹ So begann Linux immer mehr Leute anzuziehen, die überraschenderweise nicht zuvor als Systemadministratoren in irgendeinem UN*X-Dialekt gedrillt worden waren. Stattdessen waren viele an (Einzelbenutzer-)Systeme wie Windows 95/98 gewöhnt. Und sie lernten, dass die meisten Linux-Systemadministrationsaufgaben es erforderlich machten, mit diesem seltsamen „Root“-Konto zu arbeiten.

Einige Benutzer haben sich einfach alsWurzelund nutzten dieses Konto für ihre gesamte tägliche Arbeit. Warum sollten sie tippen suund dieWurzelPasswort immer wieder neu eingeben oder sich für einige Admin-Befehle in ein neues TTY einloggen? Aber mitWurzelfür alles ist natürlich keine gute Idee, da Sie Ihrem System mit einem unachtsamen Befehl an der falschen Stelle viel mehr Schaden zufügen könnten. Dies führte sogar dazu, dass einige Distributionen (war es SuSE?) den Desktop-Hintergrund für dieWurzelBenutzer, um eine große Warnung anzuzeigen, dass Sie dieses Konto nur für Administratoraufgaben verwenden sollten.

Der Ubuntu-Weg hat also sudoeinige Vorteile (zusätzlich zu denen, die bereitsgelistet von Panther).

  • Sie können sich nicht direkt bei derWurzelKonto.² :-)
  • Während des Installationsvorgangs werden Sie nicht nach einem (zusätzlichen) Root-Passwort gefragt, Sie benötigen nur ein Passwort (Ihr Benutzer-Passwort).
  • sudospeichert Ihre Anmeldeinformationen im Cache, sodass Sie bei mehreren Admin-Befehlen in Folge Ihr Passwort nur einmal eingeben müssen (im Gegensatz zu su). Dadurch wird der Drang verringert, einfach eine Shell oder ein neues Terminal mitWurzelBerechtigungen.
  • Und es macht es einfacher, Benutzern online und in der Dokumentation mitzuteilen, welche Befehle sie als Administrator eingeben müssen und welche nicht.³

¹ Und für diejenigen, die es nicht selbst wagten, gab es Installationspartys.
² Aber Siedürfenverwenden Sie einen Befehl wie sudo -ioder sudo su - rootum eine Root-Shell zu erhalten, nachdem Sie sich als normaler Benutzer angemeldet haben.
³ Aber Sie wissen natürlich, dass Siesollte nicht einfach Befehle aus dem Internet kopieren und einfügen, Rechts?

Antwort4

Abhängig von der Konfiguration funktioniert dies nicht unbedingt. Wenn die Konfiguration „user ALL=(ALL) ALL“ lautet, bietet dies sudo <game ending command>natürlich keinen zusätzlichen Schutz. Sie können jedoch eine Liste mit privilegierten Befehlen angeben, die Sie häufig ausführen müssen, z. B. zum Installieren neuer Pakete, und gefährliche Befehle wie weglassen .sudoerssudorm

Auf diese Weise können Sie alle Befehle ausführen, wenn Sie sich als anmelden root. Da Sie dies jedoch nur gelegentlich benötigen, <game ending command>wird das Risiko des Ausführens erheblich verringert.

verwandte Informationen