Sehr aktualisiert nach 69 Upvotes, siehe Antwortverlauf für ursprüngliche Antwort. Danke an @JimmyJames für die Diskussion.
Lassen Sie uns zunächst über das Bedrohungsmodell sprechen:Wovon wollen Sie den potenziellen Angreifer abhalten?
Bedrohungsmodell:Identitätsdiebstahl / Ransomware auf einem Einzelbenutzersystem
Im Allgemeinen für Endbenutzersysteme die de facto Bedrohungsmodell ist Identitätsdiebstahl / Ransomware. Wenn der Angreifer Zugriff auf Ihre Dokumente hat und/oder Shell-Befehle wie Sie ausführen kann, ist das Spiel vorbei. 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 so wichtig zu sein, ob Ihr Benutzer sudo
hat Befugnisse, oder überhaupt, ob der Browser als root ausgeführt wird.
(Ich sollte auch darauf hinweisen, dass Malware / das Verbinden mit einem Botnet ohne Root-Zugriff erfolgen kann, da für Anmeldeskripts / das Planen eines Cron-Jobs kein Root erforderlich ist).
Randall Munroe von XKCD scheint dieser Ansicht zuzustimmen:
Abschließend füge ich diesen Haftungsausschluss hinzu:Ja, mir ist bewusst, dass dies der allgemeinen öffentlichen Meinung widerspricht, dass „mehr Sicherheit immer besser ist“. Es ist einfach nicht wahr. Manchmal ist mehr Sicherheit schlechter, wie zum Beispiel übermäßig komplexe Passwortrichtlinien, die die Leute dazu zwingen, ihre Passwörter aufzuschreiben. Man muss sich immer die Risiken anschauen 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, ob Sie etwas davon haben.
Bedrohungsmodell:Root-Zugriff oder Mehrbenutzersystem
Wenn Sie ein Bedrohungsmodell haben, bei dem der Angreifer etwas will, auf das nur Root Zugriff hat, oder wenn mehr als ein Benutzerkonto auf dem Computer vorhanden ist, hängt die Antwort tatsächlich davon ab, von welcher * nix Sie sprechen. Dies führt schnell weg von PC-Gehäusen und hin zu Server-Gehäusen, aber ich werde es trotzdem besprechen. Für Linux sollte Ihr alltägliches Konto aufgrund eines Fehlers (*ahem-Funktion*) im Xorg-Windowing-System wahrscheinlich nicht sudo
haben Kräfte. Für Betriebssysteme, die kein X verwenden, ist es 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-Rechner mit einem einfachen Benutzerland-Shell-Befehl (nicht als Root) protokollieren. Zusammengefasst:
$ xinput list
zeigt Ihnen alle angeschlossenen menschlichen Eingabegeräte
$ xinput test <id>
beginnt mit der Wiedergabe aller Tastenanschläge auf dem ausgewählten Gerät.
Ich habe es getestet und bekomme Protokolle des Passworts, das ich in sudo
eingebe in einem anderen Terminalfenster. Wenn ich meinen Computer sperre und mich dann wieder anmelde, sehe ich Protokolle des Passworts, das ich auf dem Sperrbildschirm eingegeben habe. Anscheinend ist dies kein Fehler in X, sondern ein Feature. Gut, ich werde mich jetzt unter meinem Bett verstecken.
Also ja, dies unterstützt die Idee, dass jeder Benutzer, mit dem Sie sich in der GUI anmelden, nicht sudo
haben sollte Befugnisse, weil es trivial ist, sein Passwort zu protokollieren und dann root zu werden. Ich nehme an, Sie sollten ein dediziertes Konto für sudo
haben und wechseln Sie zu einem TTY-Endgerät (ctrl+alt+#
), wenn Sie sudo
verwenden möchten . Ob es sich lohnt, sich darüber Gedanken zu machen, liegt an 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 benutzerübergreifendes Keylog durchführen konnte. "Konto wechseln" in der GUI oder startx
in einem neuen tty-Terminal scheint eine isolierte Instanz von X gestartet zu werden.
Danke an @MichaelKjörling für diese Beobachtung:
Das ist eines der Dinge, die Wayland [Fenstersystem, das X ersetzen soll] tatsächlich zu beheben versucht (siehe den Aufzählungspunkt zur Sicherheit). Denken Sie daran, dass X11 zu einer Zeit entstand, als sich das Bedrohungsmodell stark von dem von heute unterschied.
Für Systemadministratoren :Dies verstärkt die Angewohnheit, nur über ssh mit Ihren Linux-Boxen zu interagieren und niemals die GUI zu verwenden.
Mac OSX
Ich bin kein OSX-Experte, aber ich weiß, dass es den Xorg-Server nicht verwendet, also würde ich davon ausgehen, dass Apples GUI dies richtig handhabt, aber ich würde mich freuen, wenn sich jemand mit mehr Experten als mir einmischt.
Windows
Ich bin auch kein Windows-Experte, aber ich glaube, dass die in Windows 7 eingeführte Benutzerkontensteuerungsfunktion (UAC) dieses Problem behoben hat, indem Administratoraufforderungen auf einem sicheren Desktop gerendert wurden, dessen Eingabebusse von Ihrem normalen Desktop isoliert sind.
In den meisten Situationen reicht die Anforderung eines Passworts mit sudo als ausreichender Schutz aus.
Der Hauptunterschied zwischen su
mit einem anderen Konto und sudo
Um Privilegien zu erlangen, müssen Sie bei sudo dasselbe Passwort eingeben, mit dem Sie sich angemeldet haben. Wenn Ihr Bedrohungsmodell davon ausgeht, dass ein Angreifer Ihr Kontopasswort hat, dann haben Sie bereits ziemlich große Probleme, mehr als ein anderes Passwort für das Root-Konto schützt Sie vor.
Ich habe festgestellt, dass es aus folgendem Grund unerlässlich ist, zwei Konten auf meinen Unix-Systemen zu haben:
Wenn ich jemals meine .bashrc- oder andere Anmelde-/Terminal-Setup-Dateien durcheinander bringe, kann ich in eine Situation geraten, in der ich mich nicht einmal einloggen kann. Also bin ich total genervt. Dies ist die schlimmste Situation, die man sich vorstellen kann, 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, die es mir ermöglicht, hineinzugehen und mit sudo die Startdateien für mein primäres Konto zu reparieren. Ich melde mich dann von meinem Konto „2“ ab und wieder bei meinem regulären Konto an.
Manchmal vielleicht in der Lage sein, die Boot-from-USB-Option zu verwenden, aber um ehrlich zu sein, finde ich, dass ich mich bei einem anderen Konto anmelden, sudo verwenden und meine .bashrc-Datei reparieren, mich dann abmelden und wieder bei dem anderen Konto anmelden kann, alles in wenigen Sekunden mit der zweiten Anmeldung und viel weniger beängstigend / ungewohnt als die USB-Boot-to-Fix-Option für mich. Natürlich YMMV (Your Mileage May Very)