Was ist falsch daran, immer root zu sein?

83

Ich habe das Gefühl, dass dies eine dumme Frage ist, aber das ist etwas, worüber ich mich eine Weile gewundert habe.

Ich habe ein VPS und dies ist mein erstes großes Linux-Unternehmen. Ich bin die einzige Person, die Zugang dazu hat. Meine Frage ist, was ist falsch daran, sich nur als root anzumelden, anstatt ein Konto zu erstellen und ihnen sudo-Zugriff zu gewähren? Wenn ein Sudoer alles kann, was Root kann, was ist dann der Unterschied? Wenn ein Hacker mein Passwort für mein Standardkonto, das kein Root-Konto ist, knacken könnte, könnte er auch sudo-Befehle ausführen. Wie kann ein Hacker, der mein Root-Konto knackt, also mehr oder weniger wichtig sein?

Ryeguy
quelle
28
Ich möchte auch bemerken, dass dies keine dumme Frage ist, wenn Sie mit dem "Unix-Weg" nicht vertraut sind. Sie sollten einen Denkbonus erhalten, wenn Sie als neuer Linux-Administrator die Frage stellen.
Bart Silverstrim
Und ich möchte einige der Antworten kommentieren. Insbesondere diejenigen, die sagen "Sie können Sachen vermasseln, die Wurzel sind". Ich glaube nicht, dass das der Punkt ist ... "rm -rf /" macht dasselbe wie "sudo rm -rf /". Der Punkt liegt darin, dass Dinge wie "sudo rm" nicht funktionieren, aber "sudo startMyApp on low port" funktioniert.
Zlatko
Was ist falsch daran, niemals zu sein?
ostendali

Antworten:

70

Wenn Sie als root angemeldet sind, können Sie auf einfache Weise Verzeichnisse löschen oder etwas tun, das im Nachhinein auf dem System wirklich dumm ist, während Sie als Benutzer normalerweise ein paar zusätzliche mentale Zyklen in das investieren müssen, was Sie tun Sie tippen, bevor Sie etwas Gefährliches tun.

Außerdem hat jedes Programm, das Sie als Root ausführen, uneingeschränkten Zugriff auf Ihre Website, wenn Sie von jemandem oder etwas dazu gebracht werden, eine gefährliche Website zu starten, zu kompilieren oder zu durchsuchen, die Ihr System beschädigen möchte, z. B. einen Trojaner oder andere Malware System und kann tun, was es will, einschließlich Zugriff auf TCP-Ports unter 1024 (so kann es Ihr System beispielsweise ohne Ihr Wissen in einen Remailer verwandeln).

Grundsätzlich fragen Sie nach Problemen, die durch das Anmelden als Sie selbst möglicherweise verhindert werden. Ich habe viele Leute gekannt, die froh waren, dass sie dieses Sicherheitsnetz in einem Moment der Unachtsamkeit hatten.

EDIT: Es gibt auch das Problem, dass root das bekannteste und somit einfachste Ziel für Skripte und Hacks ist. Systeme, die das Konto deaktivieren und stattdessen Benutzer zur Verwendung von sudo zwingen, bedeuten, dass jeder Versuch, das Root-Verzeichnis von ssh oder einem lokalen Exploit auf das Konto zu knacken, mit dem Kopf gegen eine Wand schlägt. Sie müssten ein Passwort und einen Benutzernamen erraten / knacken . Es ist bis zu einem gewissen Grad Sicherheit durch Unbekanntheit, aber es ist schwer zu argumentieren, dass es die meisten Skript-Kiddie-Angriffe nicht vereitelt.

Bart Silverstrim
quelle
25
+1 - Die Verwendung von "sudo" macht das Ausführen von Programmen als root zu einem offensichtlichen Akt. Es geht nicht darum, "Hacker zu stoppen", sondern Sie dazu zu bringen, als nicht privilegierter Benutzer zu arbeiten und den Aufruf von Root-Rechten zu einer beabsichtigten, offensichtlichen Handlung zu machen.
Evan Anderson
2
Ich frage mich, ob Evan wirklich eine KI ist.
Bart Silverstrim
11
Sudo fügt auch einen Audit-Trail hinzu. Als wer, was und wann wird protokolliert, wenn es als sudo ausgeführt wird. Welche Protokolldatei mit der Distribution variieren kann, aber RedHat-Distributionen tendieren dazu, / var / log / secure zu verwenden, und Ubuntu verwendet /var/log/auth.log ... Ich bin nicht sicher, ob dies für alle Debian-basierten Distributionen gilt.
3dinfluence
3
+1 - es geht nicht nur um das Recht, Dinge zu erschaffen oder zu tun, es geht auch um das Recht, Dinge zu zerstören. Sich als root anzumelden (oder gleichwertig mit einem anderen Betriebssystem) ist so, als würde man eine Waffe mit ausgeschalteter Sicherheit herumlaufen. Sie werden diesen Auslöser vielleicht nie absichtlich berühren, aber würden Sie sich darauf verlassen, dass Sie es trotzdem tun?
Maximus Minimus
3
mh: / ich ziehe seinen cowboyhut an, schalte die sicherheit seiner pistole aus, öffne ein bier, murmle leise etwas über stiefmütterchen und logge mich dann als root ein.
Kyle Brandt
29

Wenn Sie nicht zulassen würden, dass sich ein Idiot als Root bei Ihrem Server anmeldet, müssen Sie sich nicht immer als Root anmelden. Es sei denn, Sie können mit ganzem Herzen sagen, dass Sie noch nie ein Idiot waren. Nicht wirklich? Bist du sicher? :)

Vorteil: Reduziert die Wahrscheinlichkeit, dass Sie gleichzeitig Root und Idiot sind.

Tom Newton
quelle
6
+1 - "Vorteil: Reduziert die Wahrscheinlichkeit, dass Sie gleichzeitig Root und Idiot sind." Ich liebe das absolut.
Evan Anderson
+1 für die Philosophie von Scott Adams, dass jeder ein Idiot ist. :) Ja, das heißt du und ich auch.
Ernie
Auf jeden Fall - dies ist eine meiner wichtigsten Fragen in Vorstellungsgesprächen - wann haben Sie das letzte Mal Mist gebaut? Jeder hat, müssen Sie nur die Threads hier über "unterhaltsamste Sysadmin Fubar" oder was auch immer lesen. Wenn jemand nicht zugeben will, mindestens einmal in seinem Leben einen wirklich blöden Fehler begangen zu haben, gibt es wahrscheinlich eine Handvoll Gründe, warum Sie nicht mit ihm zusammenarbeiten möchten.
Tom Newton
9

Der Hauptgrund sind Fehler. Wenn Sie immer root sind, könnte ein einfacher Tippfehler das System wirklich vermasseln. Wenn Sie sich nur als root anmelden oder sudo verwenden, um Dinge zu tun, die dies erfordern, minimieren Sie das Risiko, einen gefährlichen Fehler zu machen.

Kyle Brandt
quelle
9

Wenn Sie root sind, werden Sie in Bezug auf Berechtigungen faul, da Sie die ganze Zeit über Zugriff auf alles haben. Es ist Ihnen egal, wann die Dinge 777 oder 644 oder was auch immer sind. Wenn Sie also jemals jemand anderem Zugriff auf Ihr System gewähren, der nicht auf alles zugreifen möchte, wird es plötzlich zu einer echten Schwierigkeit, die Maschine für andere sicherer zu machen.

Stu
quelle
5
Dies nennt man "Wurzelfäule".
kmarsh
1
Ich mag diesen Begriff "Wurzelfäule". Tatsächlich kann das ständige Ausführen als root dazu führen, dass * nix-Maschinen zu verrückten Windows 95-ähnlichen Maschinen werden, ohne dass die Sicherheit für mehrere Benutzer in Frage kommt. (Ich erinnere mich an eine SCO-Maschine, auf der vor Jahren jeder Benutzer der Shared Accounting-App als Root ausgeführt wurde, weil "die Berechtigungsprobleme verschwunden sind".> Seufz <)
Evan Anderson
Ich erinnere mich an eine Erklärung wie diese - sie hatten ein Mailinglisten-Tool, das neben sendmail als root lief. Meine Antwort lautete: "Die Berechtigungsprobleme sind auch für die Hacker verschwunden."
duffbeer703
7

Es gibt ein paar Grundprinzipien, um sich nicht als root anzumelden: 1) Das root-Passwort wird zum Zeitpunkt der Anmeldung nie über das Netzwerk gesendet. 3) Aus Versehen etwas 'Dummes' tun

Jeff Hengesbach
quelle
3

Dies dient eher dem Schutz vor sich selbst, damit Sie eine zweite Chance haben, die Befehle mit höheren Berechtigungen zu überprüfen, die Sie ausführen möchten, analog zur Benutzerkontensteuerung in Windows. Es ist ziemlich einfach, etwas aus Versehen zu tun, rm -rf /während Sie als root angemeldet sind.

Darüber hinaus haben Sie Rückverfolgbarkeit. Dies ist kein großes Problem in Ihrer Situation, in der Sie (theoretisch) die einzigen Befehle ausgeben, aber die Möglichkeit, eine Person zu protokollieren und zurückzuverfolgen, ist eine Schlüsselkomponente für viele Formen der Analyse.

Squillman
quelle
Die Rückverfolgbarkeit ist in Systemen von entscheidender Bedeutung, in denen mehr als eine Person als Systemadministrator arbeitet. Es ist nicht nur wünschenswert, dass es durch gesetzliche Regelungen vorgeschrieben wird.
APC
Ich habe das am Freitag gemacht. Anstatt "/ dump / folder /" zu löschen, habe ich "folder /" gelöscht. Ein stinkender Backslash erinnerte mich daran, warum wir uns nicht als root anmelden.
oneodd1
2

Der Unterschied besteht hauptsächlich darin,
dass man nicht aus Versehen etwas Schlechtes tun kann.
Dieser "böse" Code kann das System nicht übernehmen.
Hinweis: Böser Code bedeutet nicht unbedingt, dass jemand bereits Zugriff auf das System hat.

StampedeXV
quelle
Mir ist aufgefallen, dass böser Code heutzutage normalerweise Spam-Bots bedeutet, die von jedem Benutzer ausgeführt werden können.
Ernie
Wenn Sie an einen Virus (der versucht, etwas zu zerstören) oder ein Rootkit denken, ist es für die Malware viel komplizierter, wenn Sie kein Root sind.
StampedeXV
2

Sie sollten immer Konten mit der niedrigstmöglichen Berechtigungsstufe verwenden. Wenn Sie die ganze Zeit als root arbeiten, treten schlechte Angewohnheiten und Faulheit auf, die das Leben unangenehm machen, wenn Sie mit mehreren Benutzern arbeiten oder etwas einem öffentlichen / halböffentlichen Netzwerk aussetzen.

Denken Sie auch daran, dass das Knacken von Passwörtern nur ein Kompromissszenario ist - und auch nicht das häufigste. Es ist wahrscheinlicher, dass Sie Opfer einer Browser-Sicherheitsanfälligkeit oder einer Sicherheitsanfälligkeit in einem Daemon werden, der auf Ihrem System ausgeführt wird.

Denken Sie an Code, den Sie ohne nachzudenken verwenden. Zum Beispiel die Linux-Portierung von Adobe Flash, ein dampfender Haufen Kacke, der erst in der jüngeren Vergangenheit nutzbar geworden ist. Wie sicher ist dieser Code Ihrer Meinung nach? Möchten Sie, dass dies die volle Kontrolle über Ihr System ausübt?

duffbeer703
quelle
2

Es kann vor SSH-Brute-Force-Angriffen schützen. Jeder Unix hat ein Root-Konto. Von außen ist jedoch nicht klar, wie Ihr "sudo" -Nutzername lauten würde. Wenn also jemand versuchen will, sich brutal durchzusetzen, weiß er, dass es einen Root-Account gibt, und er wird es wahrscheinlich versuchen. Sie wissen jedoch nicht, wo sie anfangen sollen, wenn Sie sudo verwenden.

Rory
quelle
1

Mein Rat wäre, es eine Weile lang mit root zu versuchen. du wirst bald herausfinden, warum du es nicht tun solltest :)

Chopper3
quelle
1

Auch wenn ich nicht auf "security by obscurity" vertraue, ist es mit Sicherheit von Vorteil, ein benutzerdefiniertes Login anstelle des immer vorhandenen Root-Logins zu verwenden. Sie können SSH daher auch so konfigurieren, dass Root-Anmeldungen verhindert werden.

Wie schon gesagt, root kann alles ohne Bestätigung erledigen. Die Verwendung eines nicht privilegierten Benutzers kann also dumme Fehler und Tippfehler verhindern.

Ein weiteres Argument für mehrere Benutzerkonten besteht darin, unterschiedliche Software unter unterschiedlichen Benutzern auszuführen. Wenn dabei eine Sicherheitslücke in einer Anwendung ausgenutzt wird, kann der Exploiter nur auf Dateien und Ressourcen zugreifen, auf die sein aktiver Benutzer zugreifen kann.

Ein letzter Punkt, um root nicht zu verwenden: Ressourcenverbrauch. Root kann unbegrenzt viel Arbeitsspeicher, Verarbeitungszeit, Dateihandler oder Speicherplatz verwenden. Auf vielen Dateisystemen gibt es Datenblöcke, die nur für root reserviert sind. Ein normaler Benutzer kann sie also niemals verwenden, um Ihre Festplatte zu füllen. Der Befehl ulimit kann auch verwendet werden, um den Speicher und die Nummer des Datei-Handlers zu beschränken, die ein Benutzer verwenden kann. Wenn Sie jedoch Root sind (oder eine Anwendung, die als Root ausgeführt wird), hindert nichts Sie daran, dieses Limit zu ändern.

rolaf
quelle
0

Ja, ich stimme Ihnen zu, und ich denke, das ist eine Frage des Schutzes vor menschlichen Fehlern und manchmal vor bösartigen Programmen. Das Schlimme, was ich noch nie gesehen habe, ist, dass root als Standard-Gnomenkonto verwendet wird.
Ich denke, dass die meisten Benutzer, die dies tun, die Windows-Benutzer sind, die kürzlich zu Linux oder Unix migriert wurden. Versuchen Sie, die Verwendung des Administratorprivilegs auf root zu kopieren.

Ali Mezgani
quelle
0

Es ist nichts Falsches daran, als root angemeldet zu sein. Es hilft beim Aufbau des Muskelgedächtnisses, um nur sichere Befehle einzugeben, und fördert die Genauigkeit des Denkens, wenn Aktionen mit großen Konsequenzen ausgeführt werden. Ich empfehle dringend, als root zu arbeiten, um die Systemadministration zu verbessern.

du darfst auch coole Sachen machen wie ping -i 0.2 -c 1000 example.com

Lee
quelle