it-swarm.com.de

Wie verstecke ich Prozessargumente vor anderen Benutzern?

Vor einiger Zeit habe ich die grsecurity Kernel-Patches verwendet, die die Option hatten, Prozessargumente vor anderen Nicht-Root-Benutzern zu verbergen. Grundsätzlich machte dies nur /proc/*/cmdline be mode 0600 und ps behandeln dies ordnungsgemäß, indem sie zeigen, dass der Prozess existiert, aber nicht seine Argumente.

Das ist ein bisschen nett, wenn jemand auf einem Mehrbenutzer-Computer läuft, sagen wir vi christmas-presents.txt, um das kanonische Beispiel zu verwenden.

Gibt es eine unterstützte Möglichkeit, dies in Ubuntu zu tun, außer durch Installieren eines neuen Kernels?

(Ich bin mit der Technik vertraut, mit der einzelne Programme ihre Argumente ändern können, aber die meisten Programme tun das nicht und es ist trotzdem rassig. Dieser Stackoverflow-Benutzer scheint die gleiche Frage zu stellen, aber tatsächlich scheint nur sehr verwirrt zu sein.)

7
poolie

Es gibt jetzt eine hidepid Mount-Option für procfs , mit der Sie Argumente vor anderen Benutzern verbergen und optional zulassen können, dass eine Gruppe alle Prozesse sieht:

Die erste Mount-Option heißt "hidepid" und ihr Wert definiert, wie viele Informationen über Prozesse für Nicht-Besitzer verfügbar sein sollen:

hidepid = 0 (Standard) bedeutet das alte Verhalten - jeder kann alle von der Welt lesbaren/proc/PID/* -Dateien lesen.

hidepid = 1 bedeutet, dass Benutzer nicht auf/proc/PID/-Verzeichnisse zugreifen dürfen, sondern auf ihre eigenen. Sensible Dateien wie cmdline, sched *, status sind jetzt gegen andere Benutzer geschützt. Da die in proc_pid_permission () durchgeführte Berechtigungsprüfung und die Berechtigungen der Dateien unberührt bleiben, werden Programme, die bestimmte Dateimodi erwarten, nicht verwechselt.

hidepid = 2 bedeutet, dass hidepid = 1 plus all/proc/PID/für andere Benutzer unsichtbar ist. Es bedeutet nicht, dass es verbirgt, ob ein Prozess existiert (es kann auf andere Weise erlernt werden, zum Beispiel durch töten von -0 $ PID), aber es verbirgt Prozess 'euid und egid. Es gibt dem Eindringling die Aufgabe, Informationen über laufende Prozesse zu sammeln, ob ein Dämon mit erhöhten Rechten ausgeführt wird, ob ein anderer Benutzer ein vertrauliches Programm ausführt, ob andere Benutzer überhaupt ein Programm ausführen usw.

gid = XXX definiert eine Gruppe, die in der Lage ist, die Informationen aller Prozesse zu erfassen (wie im Modus hidepid = 0). Diese Gruppe sollte verwendet werden, anstatt Benutzer ohne Rootberechtigung in die sudoers-Datei oder etwas anderes zu setzen. Nicht vertrauenswürdige Benutzer (wie Daemons usw.), die die Aufgaben im gesamten System nicht überwachen sollen, sollten jedoch nicht zur Gruppe hinzugefügt werden.

hidepid = 1 oder höher wurde entwickelt, um den Zugriff auf procfs-Dateien einzuschränken, wodurch möglicherweise vertrauliche private Informationen wie genaue Tastatureingaben angezeigt werden:

http://www.openwall.com/lists/oss-security/2011/11/05/

hidepid = 1/2 unterbricht die Überwachung der Userspace-Tools nicht. ps, top, pgrep und conky behandeln EPERM/ENOENT ordnungsgemäß und verhalten sich so, als ob der aktuelle Benutzer der einzige Benutzer ist, der Prozesse ausführt. pstree zeigt den Prozess-Teilbaum an, der den Prozess "pstree" enthält.

6
poolie

Die einzige Möglichkeit, dies derzeit zu tun, besteht darin, jeden Benutzer in einen separaten Container zu stellen (siehe Klon mit CLONE_NEWPID und CLONE_NEWNS) und montiere ein neues /proc im Behälter. ( lxc erledigt einen Teil davon für Sie.)

Es ist jedoch geplant, Portierung von grsecurity-Funktionen auf den Ubuntu-Kernel und den Upstream-Kernel zu übertragen. Wenn Sie können, melden Sie sich bitte für etwas an und helfen Sie mit.

8
Kees Cook

Bis einschließlich Natty ist es nicht möglich, die Berechtigungen für die /proc/$pid/cmdline - Dateien mit dem Standardkernel zu ändern. Die Berechtigungsbits sind in den Kernel integriert. Derzeit müssten Sie einen maßgeschneiderten Kernel mit diesen Patches erstellen.

Wenn die Patches diese Funktionalität einfach ermöglichen, ist es möglicherweise sinnvoll, sie in die Liste des Ubuntu-Kernel-Teams ([email protected]) aufzunehmen, und wir können sie für zukünftige Versionen in Betracht ziehen .

6
Andy

Vor Jahren habe ich die folgenden zwei Kernel-Patches veröffentlicht:

Diese beiden Patches funktionieren immer noch für den aktuellen stabilen Vanilla-Kernel von kernel.org. Bei Interesse kann ich den aktuellen Patch posten. Fragen Sie mich nicht, warum nie jemand eine Option zum Ausblenden von Prozessen in den Upstream-Kernel aufgenommen hat.

Warnung: Diese Patches verbergen vollständig die Prozesse anderer Benutzer mit Ausnahme von root.

1
user9899