Warum su als root anmelden anstatt sich als root anzumelden?


33

Ich habe oft gehört, dass es besser ist, sich als root anzumelden, als sich direkt als root-Benutzer anzumelden (und natürlich sagen die Leute auch, dass es noch besser ist, sudo zu verwenden). Ich habe nie wirklich verstanden, warum einer besser ist als der / die andere (n), Einsicht?


2
Denken Sie an SSH-Anmeldungen oder auch Anmeldungen von der physischen Maschine?
Telemachus

Antworten:


43

Der Rückschluss erfolgt nur auf suoder sudobei Bedarf.

Die meisten alltäglichen Aufgaben erfordern keine Root-Shell. Es empfiehlt sich daher, eine nichtprivilegierte Shell als Standardverhalten zu verwenden und dann nur dann als Root zu fungieren, wenn Sie spezielle Aufgaben ausführen müssen.

Auf diese Weise verringern Sie den Bereich für gefährliche Fehler (fehlerhaftes Scripting, falsch platzierte Platzhalter usw.) und Schwachstellen in allen von Ihnen verwendeten Anwendungen. Vor allem diejenigen, die sich mit dem Internet verbinden - siehe das alte Sprichwort "Don't IRC as root" .

sudo wird oft empfohlen, weil Sie damit die Verwendung solcher Berechtigungen überprüfen können.

Wenn Sie diese Vorgehensweisen beachten, können Sie auch Remote-Root-Anmeldungen deaktivieren. Dies erhöht die Zugangsbeschränkung für jeden potenziellen Angreifer, da er sowohl ein reguläres Benutzerkonto, das Mitglied der Gruppe "wheel" war und idealerweise nur von öffentlichen SSH-Schlüsseln autorisiert wurde, als auch das Root-Konto selbst gefährden müsste.


1
Könnten Sie erläutern, warum das Remote-Root-Login eine "ziemlich große Sicherheitsanfälligkeit" darstellt?
thepocketwade

5
Da die ganze Welt den Benutzernamen ('root') kennt, ist es nur eine Frage des Passworts. Und sie können das mit brachialer Gewalt tun und Ihren Computer übernehmen.
Shalom Craimer

2
Ein weiterer Vorteil von sudo: Protokollierung der ausgeführten Befehle.
Manuel Faux

Das ist Auditing;)
Dan Carley

1
While sudoist überlegen, suermöglicht es Ihnen auch, das -mFlag zu verwenden, um die Umgebungsvariablen in einem Root-Terminal gleich zu halten. Nichts treibt mich mehr suan als ein bisschen zu rooten , nur um etwas mit ~dem Verzeichnisnamen zu tun und es nicht funktionieren zu lassen.
tj111

27

Sie sollten den Remotezugriff auf Root deaktivieren, damit ein Angreifer Root nicht gefährden kann, ohne zuerst einen Benutzer zu gefährden und dann auf Root zu eskalieren. Wir aktivieren den Root-Zugriff nur an der Konsole.

Außerdem schafft es Rechenschaftspflicht. :)


+1 kurz und
bündig

15

Der Hauptgrund ist die Erstellung eines Audit-Trails. Wenn Sie sich als normaler Benutzer bei einem System anmelden müssen und dann su, können Sie nachverfolgen, wer für bestimmte Aktionen verantwortlich ist.


Wie bestimmen Sie, welche Befehle ausgeführt wurden, nachdem jemand su - root ausgeführt hat? Ist das irgendwo angemeldet?
Dobes Vandermeer

10

sudo protokolliert außerdem automatisch jeden Befehl in syslog und Sie können die Befehle definieren, die jeder Benutzer verwenden kann.


3
Was die Protokollierung betrifft: Dies ist der Fall für jeden Befehl, dem 'sudo' vorangestellt ist, aber in dem Fall, in dem sudo verwendet wird, um eine Root-Shell zu erstellen, werden Befehle nur in den traditionellen Bereichen (insbesondere im Shell-Verlauf) protokolliert.
Zenham

2
Wenn Sie in der Tat sudo vim foo.txtvon vim aus auf eine Shell ziehen, erhalten Sie eine Root-Shell ohne die reguläre Sudo-Protokollierung.
Ophidian

Oder nur sudo -ium eine interaktive Sitzung zu erhalten ...
Kamil Kisiel

Ich verstehe das Problem mit sudo vim foo.txt nicht. Ich bin das gelaufen, dann habe ich vim verlassen und war immer noch ich selbst. Gibt es etwas, was ich vermisse?
thepocketwade

Sie können sudo "tricksen", um eine Shell zu erhalten, indem Sie sudo su - oder sudo vim eingeben und dann in eine neue Subshell wechseln. Aber wenn Sie sudo verwenden, weil Sie möchten, dass alles in syslog (zentralisiert) protokolliert wird und Sie wissen, dass es auch verwendet werden kann, um eine andere Subshell zu erhalten, dann sehe ich nichts falsch daran, es ist nur ein Bonus, solange Ich bin nicht nur darauf angewiesen.
Jure1873

9

Ein weiterer guter Grund: Wenn ein Benutzer über sudo zum Root-Benutzer aufsteigt, authentifiziert er sich mit seinen eigenen Anmeldeinformationen. Dies bedeutet, dass er nicht unbedingt das Root-Kennwort erhalten muss, wodurch das Sperren von Daten erleichtert wird, wenn jemand Ihr Unternehmen verlässt.


4

Wenn Sie einen Audit-Trail erstellen und nicht den hier erwähnten Problemen "sudo su -" oder "sudo vim foo.txt" zum Opfer fallen möchten, können Sie "sudosh" verwenden. Verteilen Sie den Root-Zugriff über sudo, aber geben Sie den einzigen zulässigen Befehl ein, um "sudosh" auszuführen.

sudosh ist eine Protokollierungsshell, und Sie können die gesamte Terminalsitzung zu einem späteren Zeitpunkt erneut abspielen und dabei genau anzeigen, was der Benutzer auf seinem Terminal gesehen hat.


Das setzt natürlich voraus, dass sudosh auf dem System verfügbar ist. Ich habe es gerade überprüft und ich habe es auf keiner meiner Linux-Boxen.
John Gardeniers

Sie können auch das neue ksh93 mit aktivierter Audit-Trail-Protokollierung verwenden. Lesen
Mei,

Ziemlich einfach zu umgehen, indem Sie einfach ein Shell-Skript ausführen (das Sie anschließend löschen). Erstellen Sie das Skript unter einem harmlosen Namen als nicht geprüfter Benutzer (oder scpen Sie es von Ihrer Workstation aus), und führen Sie es dann sudo aus. Sie können es sogar wirklich verstecken, indem Sie es mit 'ls' oder ähnlichem bezeichnen und in $ PATH ablegen (ggf. $ PATH ändern) und es beim Aufrufen von / bin / ls seine Dirty-Arbeit ausführen lassen, damit es normal aussieht. Wischen Sie es danach ab. Das Überwachungsprotokoll weiß nicht, dass / home / anthony / bin ein 'ls' enthielt.
Derobert

Ja, es ist nicht perfekt. Wir wissen das - aber es ist eine verdammt gute Seite als "sudo su" - IMHO. Und ja, es ist nicht standardmäßig überall AFAIK installiert. Unter Solaris und Linux läuft es jedoch recht problemlos.
Bus

1

Sie sollten die Sicherheit gründlich üben.

Deaktivieren Sie den Remotestammzugriff (oder zumindest den Stammzugriff über Kennwörter). (Wenn Sie den Root-Zugriff über Schlüssel zulassen, kontrollieren Sie diese Schlüssel sorgfältig, oder verwenden Sie besser so etwas wie Kerberos, das die zentralisierte Sperrung von Schlüsseln ermöglicht.)

Ich würde su deaktivieren und sudo verwenden. Auf diese Weise verwenden Benutzer Schlüssel (vorzugsweise verschlüsselt), um auf das System zuzugreifen, und verwenden dann ihr Kennwort nur zur Eskalation von Berechtigungen. Sie können einschränken, auf welche Programme die Benutzer mit sudo zugreifen, aber meistens beschränken Sie den Zugriff nur auf Personen, die das root-Passwort kennen.

In einer idealen Welt sollten Sie in der Lage sein, Ihre Root-Passwörter im Internet zu veröffentlichen, und es wäre auch dann unerheblich, wenn Sie Benutzern Zugriff auf Ihren Computer gewähren (diese aber nicht in die Datei / etc / sudoers aufnehmen). Natürlich sollten Sie das root-Passwort nicht veröffentlichen, aber die Idee ist, dass Sie Ihre Systeme mit konzentrischen Schutzebenen schützen.


0

Die Idee ist, die Root-Anmeldung zu deaktivieren und daher kein Standard-Administratorkonto zu haben. Auf diese Weise muss ein Angreifer sowohl den Benutzernamen als auch das Passwort (und nicht nur das Passwort) erraten.


0

Wenn Sie regelmäßig root verwenden, sind Ihre Berechtigungen möglicherweise falsch, oder Sie müssen möglicherweise sudo-Rechte oder neue Gruppenrechte für r / w / x der Dateien oder Verzeichnisse erteilen.

Gute Berechtigungsschemata sind etwas, was selbst Linux-Langzeitbenutzer falsch verstehen oder den Umfang, den sie haben, nicht erkennen.

Lass mich nicht mal anfangen, was Ubuntu gemacht hat!


-2

Es hindert Sie daran, rm -r -f auszuführen / Ich habe es vor 2 Tagen ausgeführt (als nicht privilegierter Benutzer wollte ich rm -r -f * ausführen).


Die akzeptierte Antwort enthielt bereits alle Informationen.
Theuni
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.