Es gibt gültige Bequemlichkeitsanwendungen für sudo, aber da sie bereits in anderen Beiträgen angemessen erklärt wurden, werde ich hier nicht viel darauf eingehen. Ich werde Sie jedoch auf sudoers (5)
verweisen, bei dem es sich um die sudo-Konfigurationsdatei handelt. Es zeigt einige der umfangreichen Konfigurationen, die mit sudo möglich sind. Ich werde erklären, wann und warum Sie sudo nicht verwenden sollten, um von Ihrem normalen Benutzer zum Root zu wechseln, und zwar aus rein sicherheitstechnischen Gründen.
Kurze Antwort: Es gibt keine Möglichkeit dazu Verwenden Sie sudo sicher, wenn Ihr normaler Benutzer gefährdet sein könnte. Verwenden Sie es nur zur Vereinfachung, nicht zur Sicherheit. Gleiches gilt für su und alle anderen Programme, mit denen Sie Ihren regulären Benutzer zu einem privilegierteren Benutzer machen können.
Lange Antwort: Es ist nicht wahr, dass Sie den vollständigen Pfad verwenden denn sudo schützt Sie vor einer schädlichen Umgebung. Das ist ein weit verbreitetes Missverständnis. Eine Bash-Funktion kann sogar Namen entführen, die zu Beginn einen /
enthalten. Versuchen Sie Folgendes auszuführen:
$ echo $ SHELL / bin / bash $ function / usr / bin / sudo {echo "Vertrau mir, gib jetzt dein Passwort ein:"; } $ / usr / bin / sudo idTrust mir, geben Sie jetzt Ihr Passwort ein:
Sie dürfen nur Option 1 verwenden, auch bekannt als Anmelden mit agetty oder Anmelden mit einem anderen tty (beachten Sie, dass in einigen Distributionen in tty1 Xorg ausgeführt wird, z. B. Fedora. In den meisten Distributionen jedoch , tty1 ist ein Ersatz-tty und Xorg läuft auf tty7). Sie müssen sich jedoch bewusst sein, dass Malware Strg kbd> + alt kbd> + f1 kbd> entführen und Ihnen einen gefälschten Bildschirm anzeigen kann Daher müssen Sie unter Linux die Kombination Secure Attention Key (SAK, die alt kbd> + sysrq kbd> + k kbd> verwendet) verwenden Systeme), die alle Prozesse in diesem tty abbricht. Dies tötet jeden gefälschten Anmeldebildschirm und bringt Sie nur zum echten. Wenn es keine gefälschten Anmeldebildschirme gibt, die versuchen, Ihr Root-Passwort zu stehlen (was hoffentlich der Fall ist), führt dies einfach dazu, dass agetty neu gestartet wird. Dies sollte nur als blinkende Anmeldeaufforderung erscheinen. Auf einigen Systemen sind viele SysRq-Funktionen deaktiviert, einschließlich SAK. Sie können sie alle vorübergehend aktivieren, indem Sie die Ganzzahl 1 in / proc / sys / kernel / sysrq
schreiben. Der Wert von / proc / sys / kernel / sysrq
ist eine Bitmap. Sehen Sie sich also den aktuellen Wert an und berechnen Sie, in was Sie ihn konvertieren müssen, um SAK-Unterstützung hinzuzufügen, bevor Sie ihn in dauerhaft machen /etc/sysctl.conf
. Es kann eine schlechte Idee sein, es für immer auf 1 zu setzen (Sie möchten nicht, dass irgendjemand alt kbd> + sysrq kbd> + e kbd> töten kann xscreensaver, oder?).
Die Idee, dass Sie Ihren normalen Benutzer schützen und sudo oder su sicher verwenden können, ist eine sehr gefährliche Idee. Selbst wenn dies möglich wäre, gibt es unzählige Möglichkeiten, Ihre laufende Sitzung zu entführen, z. B. LD_PRELOAD
, eine Umgebungsvariable, die auf ein gemeinsam genutztes Objekt (eine Bibliothek) verweist vom Programm zwangsweise geladen werden, um sein Verhalten zu ändern. Während es bei Setuid-Programmen wie su und sudo nicht funktioniert, funktioniert es bei Bash und allen anderen Shells, die su und sudo ausführen und diejenigen sind, die alle Ihre Tastenanschläge sehen. LD_PRELOAD
ist nicht die einzige Variable, die Programme entführen kann, die als Benutzer ausgeführt werden. LD_LIBRARY_PATH
kann ein Programm anweisen, schädliche Bibliotheken anstelle Ihrer Systembibliotheken zu verwenden. Es gibt viele weitere Umgebungsvariablen, mit denen das Verhalten beim Ausführen von Programmen auf verschiedene Weise geändert werden kann. Wenn Ihre Umgebungsvariablen gefährdet werden können, können Ihr Benutzer und alle als dieser Benutzer eingegebenen Tastenanschläge grundsätzlich gefährdet werden.
Wenn dies nicht ausreicht, kann Ihr Benutzer in den meisten Distributionen ptrace ()
mit dem GETREGS
oder PEEKTEXT verwenden / PEEKDATA
-Optionen, um den gesamten Speicher von Prozessen anzuzeigen, die als derselbe Benutzer ausgeführt werden (z. B. der Bash-Prozess, auf dem su oder sudo für Sie ausgeführt wird). Wenn Sie eine Distribution verwenden, die dies deaktiviert (z. B. mithilfe des Yama LSM), kann der Prozess möglicherweise weiterhin den Speicher Ihres Bash-Prozesses mit process_vm_readv (lesen und schreiben). )
bzw. process_vm_writev ()
. Auf einigen Kerneln können Sie auch direkt über / proc / pid / mem
in den Speicher schreiben, sofern der Prozess, der darauf schreibt, derselbe Benutzer ist. Im Linux-Kernel gibt es unzählige Sicherheitsüberprüfungen, um sicherzustellen, dass sich Prozesse nicht gegenseitig stören können. Sie alle beinhalten jedoch einen Inter -Benutzerschutz, keinen Intra -Benutzerschutz. Der Linux-Kernel geht davon aus, dass Benutzer A jeder einzelnen Aktion als Benutzer A vertraut. Wenn Sie also als Benutzer A rooten möchten, muss root genauso vertrauenswürdig sein wie dieser Benutzer.
Bevor ich überhaupt zu Xorg komme, möchte ich zunächst sagen, dass Xorg keinen Schutz vor Keyloggern bietet. Dies bedeutet, dass, wenn Sie sudo oder su in einem tty verwenden, in dem Xorg ausgeführt wird, alle Prozesse, die als derselbe Benutzer ausgeführt werden, Tastatureingaben abhören (und einfügen) können. Dies liegt daran, dass das Sicherheitsmodell des X11-Protokolls davon ausgeht, dass alles, was Zugriff auf das X11-Cookie hat, vertrauenswürdig ist und dass auf dieses Cookie für alle Benutzer zugegriffen werden kann, die unter Ihrem Benutzer ausgeführt werden. Dies ist eine grundlegende Einschränkung des X11-Protokolls, die so tief verwurzelt ist wie das Konzept der UIDs unter Linux. Es gibt keine Einstellung oder Funktion, um dies zu deaktivieren. Dies bedeutet, dass alles, was Sie in einer Xorg-Sitzung eingeben, einschließlich der Eingabe in su oder sudo (oder Frontends wie gksu, gksudo, kdesu, kdesudo, pinentry usw.), von allem beschnüffelt werden kann, das als derselbe Benutzer ausgeführt wird, also Ihr Browser, Ihre Spiele , Ihr Videoplayer und natürlich alles, was von Ihrem .bashrc gespalten wurde. Sie können dies selbst testen, indem Sie Folgendes in einem Terminal ausführen, dann zu einem anderen Terminal wechseln und einen Befehl mit sudo ausführen.
$ xinput list Virtueller Kernzeiger id = 2 [Hauptzeiger (3 )] ↳ XTEST-Zeiger-ID des virtuellen Kerns = 4 [Slave-Zeiger (2)] PS ETPS / 2 Elantech Touchpad-ID = 13 [Slave-Zeiger (2)] Tastatur-ID des virtuellen Kerns = 3 [Haupttastatur (2)] ↳ XTEST des virtuellen Kerns Tastatur-ID = 5 [Slave-Tastatur (3)] ↳ Power Button-ID = 8 [Slave-Tastatur (3)] ↳ USB-Kamera-ID = 10 [Slave-Tastatur (3)] ↳ AT Übersetzt Set 2 Tastatur-ID = 12 [Slave-Tastatur ( 3)] ↳ Videobus-ID = 7 [Slave-Tastatur (3)] ↳ Sleep-Button-ID = 9 [Slave-Tastatur (3)] ↳ Asus WMI-Hotkeys id = 11 [Slave k Eyboard (3)]
↳ Power Button ID = 6 [Slave-Tastatur (3)] $ xinput test 12 # 12 durch die ID-Nummer Ihrer Tastatur ersetzen ^ C
Beachten Sie, dass wenn dieser spezielle Test für Sie nicht funktioniert, die Erweiterung XTEST
nicht aktiv ist. Auch ohne diese Funktion können Tastaturereignisse mit XQueryKeymap ()
aufgezeichnet werden. Die Lektion, die Sie lernen sollten, ist, dass es keine Möglichkeit gibt, Ihr Passwort mit su oder sudo durch einen kompromittierten Benutzer sicher einzugeben. Sie müssen unbedingt zu einem neuen tty wechseln und SAK verwenden und sich dann direkt als root anmelden.