it-swarm.com.de

Sollte der einzige Benutzer eines * nix-Systems zwei Konten haben?

Sollte der einzige Benutzer eines * nix (insbesondere Linux und MacOS) zwei Konten haben, eines mit Sudo-Berechtigungen und eines ohne? Vor Jahren habe ich gelesen, dass Sie auf Ihrem PC Ihre täglichen Aufgaben als nicht privilegierter Benutzer erledigen und für Verwaltungsaufgaben zu einem privilegierten Benutzer wechseln sollten. Ist das wahr?

Hinweis: Ich beziehe mich nicht darauf, ob Sie sich für den täglichen Gebrauch als root anmelden sollten oder nicht. Das ist natürlich eine schlechte Idee, aber sollte Ihr Konto für den täglichen Gebrauch in der Lage sein, sudo zu verwenden?

Zweiter Hinweis: Ich beziehe mich speziell auf persönliche Geräte, die nicht als Server verwendet werden oder Funktionen für Remotebenutzer hosten.

78
Ender Wiggin

Nach 69 Upvotes dramatisch aktualisiert, die ursprüngliche Antwort finden Sie im Antwortverlauf. Danke an @JimmyJames für die Diskussion .


Lassen Sie uns zunächst über das Bedrohungsmodell sprechen: Was versuchen Sie, den potenziellen Angreifer davon abzuhalten?

Bedrohungsmodell: Identitätsdiebstahl/Ransomeware auf einem Einzelbenutzersystem

Im Allgemeinen ist für Endbenutzersysteme das Bedrohungsmodell de facto Identitätsdiebstahl/Ransomware. Wenn der Angreifer Zugriff auf Ihre Dokumente hat und/oder Shell-Befehle ausführen kann, ist das Spiel beendet. Aus dieser Perspektive bringt der Root-Zugriff dem Angreifer nichts. Sie können bekommen, was sie wollen, ohne es.

Wenn Identitätsdiebstahl/Malware das einzige ist, worüber Sie sich Sorgen machen, scheint es nicht wichtig zu sein, ob Ihr Benutzer über Sudo Befugnisse verfügt oder ob der Browser jemals als Root ausgeführt wird.

(Ich sollte auch darauf hinweisen, dass Malware/das Verbinden mit einem Botnetz ohne Root-Zugriff auftreten kann, da für Anmeldeskripte/das Planen eines Cron-Jobs kein Root erforderlich ist.).

Randall Munroe bei XKCD scheint dieser Ansicht zuzustimmen :

(Authorization

Zuletzt möchte ich diesen Haftungsausschluss hinzufügen: Ja, ich bin mir bewusst, dass dies gegen die allgemeine öffentliche Meinung verstößt, dass "mehr Sicherheit immer besser ist". Es ist einfach nicht wahr. Manchmal ist mehr Sicherheit schlechter, wie zu komplexe Kennwortrichtlinien, die dazu führen, dass Benutzer ihre Kennwörter aufschreiben müssen. Sie müssen immer die Risiken betrachten und entscheiden, wie viel Sicherheit tatsächlich angemessen ist. In diesem Fall schadet es nicht, den Root-Zugriff zu sperren, aber Sie machen Ihr Leben komplizierter und es ist nicht klar, dass Sie etwas davon profitieren.

Bedrohungsmodell: Root-Zugriff oder Mehrbenutzersystem

Wenn Sie ein Bedrohungsmodell haben, bei dem der Angreifer etwas möchte, auf das nur root Zugriff hat, oder wenn sich mehr als ein Benutzerkonto auf dem Computer befindet, hängt die Antwort tatsächlich davon ab, von welchem ​​* nix Sie sprechen. Dies führt schnell von PC-Fällen zu Server-Fällen, aber ich werde es trotzdem diskutieren. Unter Linux sollte Ihr tägliches Konto aufgrund eines Fehlers (* ahem feature *) im Xorg-Fenstersystem wahrscheinlich keine Sudo-Befugnisse haben. Für Betriebssysteme, die kein X verwenden, ist dies wahrscheinlich in Ordnung.

Linux (mit X.org Fenstersystem)

Hier ist ein großartiger Artikel , der Ihnen zeigt, wie Sie alle Tastenanschläge auf einem GUI-Linux-Computer mit einem einfachen Shell-Befehl für Benutzerland (ohne Root) protokollieren. Zusammenfassend:

$ xinput list zeigt Ihnen alle angeschlossenen Eingabegeräte

$ xinput test <id> gibt alle Tastenanschläge auf dem ausgewählten Gerät wieder.

Ich habe getestet und bekomme Protokolle des Passworts, das ich in Sudo in einem anderen Terminalfenster eingebe. Wenn ich meinen Computer sperre, werden beim erneuten Anmelden Protokolle des Kennworts angezeigt, das ich in den Sperrbildschirm eingegeben habe. Anscheinend ist dies kein Fehler in X, sondern eine Funktion. Richtig, ich werde mich jetzt unter meinem Bett verstecken.

Ja, dies unterstützt die Idee, dass jeder Benutzer, mit dem Sie sich in der GUI anmelden, keine Sudo Befugnisse haben sollte, da es trivial ist, Ihr Passwort zu protokollieren und dann root zu werden. Ich nehme an Sie sollten ein dediziertes Konto für Sudoing haben und zu einem TTY-Terminal wechseln (ctrl+alt+#) wenn Sie Sudo verwenden möchten. Ob dies eine Sorge wert ist oder nicht, liegt bei Ihnen: Persönlich sind alle Daten, die mir wichtig sind, bereits in meinem Benutzerkonto vorhanden, aber ich werde wahrscheinlich mein Laptop-Setup ändern, weil ich ein Sicherheits-Nerd bin.

Beachten Sie, dass ich in meinen Tests kein Keylog zwischen Benutzern erstellen konnte. Wenn Sie "Konto wechseln" in der GUI oder startx in einem neuen tty-Terminal ausführen, wird anscheinend eine isolierte Instanz von X gestartet.

Vielen Dank an @ MichaelKjörling für diese Beobachtung:

Das ist eines der Dinge, die Wayland [Fenstersystem, das X ersetzen soll] tatsächlich versucht es zu beheben (siehe den Punkt zur Sicherheit). Denken Sie daran, dass X11 zu einer Zeit entstand, als sich das Bedrohungsmodell stark von dem unterschied, was es heute ist.

Für Sysadmins : Dies verstärkt die Gewohnheit, nur über ssh mit Ihren Linux-Boxen zu interagieren. Verwenden Sie niemals die GUI.

Mac OS X

Ich bin kein OSX-Experte, aber ich weiß, dass der Xorg-Server nicht verwendet wird. Daher würde ich davon ausgehen, dass die GUI von Apple dies ordnungsgemäß handhabt, aber ich würde es lieben, wenn jemand, der erfahrener ist als ich, abwägt.

Windows

Ich bin auch kein Windows-Experte, aber ich glaube, dass die in Windows 7 eingeführte Funktion ser Account Control (UAC) dies behoben hat, indem Administratoranweisungen in einem sicherer Desktop gerendert wurden deren Eingangsbusse von Ihrem normalen Desktop isoliert sind.

99
Mike Ounsworth

In den meisten Situationen ist das Erfordernis eines Passworts bei Sudo ausreichend geschützt.

Der Hauptunterschied zwischen suing zu einem anderen Konto und Sudoing, um Berechtigungen zu erhalten, besteht darin, dass Sie mit Sudo dasselbe Kennwort eingeben, mit dem Sie sich angemeldet haben. Wenn Ihr Bedrohungsmodell davon ausgeht, dass ein Angreifer Ihr Kontokennwort hat Wenn Sie dann bereits in große Schwierigkeiten geraten, schützt Sie mehr als ein anderes Kennwort im Root-Konto.

Ich habe festgestellt, dass zwei Konten auf meinen Unix-Systemen aus folgendem Grund unerlässlich sind:

Wenn ich jemals meine .bashrc- oder andere Login-/Terminal-Setup-Dateien durcheinander bringe, kann ich in eine Situation geraten, in der ich mich nicht einmal anmelden kann. Ich bin also total fertig. Dies ist die schlimmste denkbare Situation, da Sie nicht viel tun können, wenn Sie sich nicht anmelden können.

Die einzige Möglichkeit, dies auf einigen Computern zu beheben, war die andere Anmeldung, mit der ich Sudo verwenden und die Startdateien für mein primäres Konto reparieren konnte. Ich melde mich dann von meinem Konto '2' ab und wieder auf meinem regulären Konto.

Manchmal kann ich möglicherweise die Option zum Booten von USB verwenden, aber um ehrlich zu sein, kann ich mich bei einem anderen Konto anmelden, Sudo verwenden und meine .bashrc reparieren, mich dann abmelden und wieder bei dem anderen Konto anmelden in wenigen Sekunden mit dem zweiten Login erledigt und viel weniger beängstigend/ungewohnt als der USB-Boot, um die Option für mich zu reparieren. Natürlich YMMV (Ihr Kilometerstand kann sehr)

6
Michael Durrant

Ich verwende dieses Setup, aber der Grund geht über ein einzelnes System hinaus.

Wenn Sie Backups wünschen, die einen gewissen Schutz gegen Ransomeware bieten (und Sie möchten nicht davon ausgehen, dass niemand Ransomeware für Linux schreibt), müssen Sie auf einem externen System sichern, das mehrere Revisionen enthält.

Ich habe jedoch keine dedizierte Workstation/Terminal für die Verwaltung des Sicherungsservers. Die Anmeldung als separater Benutzer hierfür (ohne su) bietet hier eine Schutzschicht. Wenn mein normales Login Sudo Berechtigungen hätte, würde es immer noch einen Geschwindigkeitsschub geben, aber es wäre ziemlich dünn (Unklarheit und Malware müssten das Sudo Passwort erfassen).

1
sourcejedi

Jeder Computer benötigt ein Administratorkonto, unabhängig vom Betriebssystem. Ok, die meisten Linux-Varianten verbergen Root-Benutzer, indem sie ihm ein nicht existierendes Passwort geben - in dem Sinne, dass jede Eingabe false zurückgibt - aber root existiert und hat einen Benutzer id 0.

Dieses Administratorkonto kann alles am System ändern, einschließlich Dinge, die normalen Benutzern nicht gestattet sind. Die Verteidigungslinie hier ist, dass ein Angreifer, wenn er zufällig Zugriff auf den Root-Benutzer erhält (*), leicht eine Hintertür installieren kann, um dies zu können gewinne es wieder nach Belieben. Und Sie werden es kaum bemerken, wenn Sie die Sicherheit Ihrer Systeme (Protokolle, Änderungen in Systemdateien, ...) nicht regelmäßig analysieren.

Wenn ein Angreifer zufällig Zugriff auf ein Nicht-Root-Konto erhält, kann er nur Änderungen an dem vornehmen, auf das dieses Konto zugreifen kann. Ok, er könnte das Passwort ändern, wenn er eine Shell bekommen würde, aber Sie werden es sicherlich bemerken, wenn Sie das nächste Mal versuchen, sich anzumelden!

Das bedeutet, dass die Verteidigungslinie, Root nicht zu verwenden, nur gegen entfernte Angriffe gerichtet ist. Wenn jemand physischen Zugriff auf einen Computer hat, kann er alles lesen, was nicht stark verschlüsselt ist, und absolut alles schreiben/löschen - einschließlich der Kennwortdatenbank, um andere Administratorkonten hinzuzufügen . Die einzige Ausnahme ist, dass, wenn die gesamte Festplatte verschlüsselt ist, die einzig mögliche Aktion darin besteht, alles zu löschen und neu zu installieren.

Aber ich gebe zu, auch wenn ich weiß, dass Sudo eine großartige Software ist und verwendet werden kann, um feinkörnige Berechtigungen zuzulassen. Ich mag die Standard-Linux-Methode, mit der Sudo alles kann, nicht sehr, weil es dafür anfällig ist:

  • ein Angreifer erhält Zugriff auf eine Nicht-Root-Shell, die Sudo erlaubt ist
  • er ändert das Passwort des Kontos
  • er sudoes als root und installiert eine Hintertür (oder eine modifizierte Version von su, die kein Passwort verlangt - trivial zu schreiben)
  • er bricht die Master-Passwortdatei und geht weg

Wenn Sie das nächste Mal versuchen, sich anzumelden, werden Sie feststellen, dass Sie das Wiederherstellungsverfahren nicht verwenden können, um festzustellen, ob das Hauptkennwort fehlerhaft ist, es neu zu erstellen oder von einer archivierten Version neu zu installieren. Wenn Sie das System nicht sorgfältig analysieren, bemerken Sie es nie die Hintertür.


Wenn ich sagte , dass ich zufällig Zugriff bekomme , meine ich auf nicht reproduzierbare Weise, zum Beispiel, wenn es eine Sicherheitslücke verwendet, wenn Sie eine Verbindung zu einer schädlichen Site herstellen. Wenn der Angreifer keine Hintertür installiert, erhält er erst wieder Zugriff, wenn Sie zu dieser Site zurückkehren, was möglicherweise vorkommt oder nicht.

TL/DR: Meiner Meinung nach sollte jeder Computer mindestens zwei Konten haben: ein nicht privilegiertes für den normalen Gebrauch und ein administratives für administrative Aufgaben.

0
Serge Ballesta

Was sind die Vorteile von Sudo?

Sie müssen das Root-Kennwort nicht für jeden Benutzer freigeben, um Verwaltungsaufgaben auf Ihrem eigenen System auszuführen.

Die Authentifizierung läuft nach kurzer Zeit (15 Minuten) automatisch ab und Sie können timestamp_timeout=0 Unter /etc/sudoers Einstellen, damit das Sudo-Passwort alle 0 (Null) Sekunden abläuft. Dies bedeutet, dass Sie jedes Mal, wenn Sie Sudo verwenden, nach dem Passwort gefragt werden.

Was ist das Nachteile von Sudo:

Wenn ein Benutzer ein schwaches Kennwort verwendet, kann ein Angreifer das Benutzerkennwort schnell knacken und das Privileg erhöhen, um den Root-Zugriff zu erhalten

Das root Passwort kann in einigen Linux-Distributionen wie Ubuntu standardmäßig gesperrt werden. Warum?

Denn bei Vorhandensein des Kontos root versucht ein Angreifer beim ersten Brute-Force-Erzwingen des Root-Passworts. Es wird komplizierter, wenn das Root-Konto deaktiviert ist.

Ein Benutzer kann den Besitz von Systemdateien ändern, indem er das Root-Kennwort kennt oder Ihr System durch Ausführen von Schadprogrammen beschädigt.

0
GAD3R

Alle PC-Benutzer sollten mindestens einen lokalen Administrator haben, aber der gesunde Menschenverstand schreibt vor, dass dies passwortgeschützt ist (Android-Benutzer beachten dies.). Je nach Nutzung sehe ich keinen Grund, warum es nicht nur einen Account geben kann. Dies ist bei Puppy Linux der Fall und seit Jahren recht erfolgreich. Es ist jedoch gut, zwei Schutzstufen und einen separaten Ordner/sbin zu haben, wenn wir ungeschickt und/oder dumm sind. Es ist eine Sache, jemanden zu wählen, es ist eine andere, Verzeichnisse zu löschen. Faule Benutzer fügen der sudoers-Datei einfach alles hinzu, was sie brauchen. Die Eskalation von Berechtigungen hängt im Allgemeinen davon ab, dass Sie überhaupt Zugriff auf ein Konto haben. Daher kontrollieren wir dies. Konten auf Servern und Appliances müssen begründet werden, und wir kümmern uns darum, dass unsere Workstation als defacto Appliance gegen uns verwendet wird. Der Punkt ist, für viele PCs gibt es ist nein andere echte Benutzer.

0
mckenzm