GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann die Socket-Erstellung für einen Linux-Prozess für Sandboxing deaktiviert werden?

ptrace scheint das naheliegendste Werkzeug zu sein, aber abgesehen davon…

util-linux[-ng] hat einen Befehl unshare , das den clone des Kernels verwendet /unshare Schnittstellen. Wenn Sie den neuen Prozess bis unshare -n ausführen (oder clone(CLONE_NEWNET) ), befinden sich alle erstellten Netzwerk-Sockets in einem anderen Namespace. Das löst das Problem mit den Kernel-Ressourcen nicht, aber es führt eine Sandbox des Prozesses durch.

Der Linux-Kernel unterstützt auch seccomp, einen Modus, der mit prctl(PR_SET_SECCOMP, 1) eingegeben wird was verhindert, dass der Prozess (naja, eigentlich Thread) andere Systemaufrufe als read aufruft , write , exit , und sigreturn . Es ist eine ziemlich effektive Sandbox, aber schwierig mit unverändertem Code zu verwenden.

Sie können eine SELinux-Domäne definieren, die socket nicht zulässt /bind /etc. Anrufe und führt einen dynamischen Übergang in diesen Typ durch. Dies erfordert (offensichtlich) ein System mit einer aktiv erzwingenden SELinux-Richtlinie. (Möglicherweise sind ähnliche Dinge mit AppArmor und TOMOYO möglich, aber ich bin mit keinem von ihnen sehr vertraut.)


Werfen Sie einen Blick auf systrace - nicht auf Sockets beschränkt, sondern ein generischer Generator/Enforcer für Syscall-Richtlinien. Zitat:

Die GNU/Linux-Portierung ist abgeschlossen und der Kernel-Patch wird aktiv von Marius Eriksen gepflegt. Kann ohne Kernel-Änderungen mit dem Ptrace-Backend ausgeführt werden.

Haftungsausschluss - Ich habe es nie unter Linux versucht.


Linux
  1. So deaktivieren Sie die Remote-Anmeldung für Root-Benutzer auf einem Linux-Computer

  2. Linux – Wie aktiviere ich User_namespaces im Kernel? (für Unprivilegiertes `unshare`.)?

  3. Linux – Wie kann ich die Netzwerkfreigabe für den aktuellen Prozess aufheben?

  4. So installieren und konfigurieren Sie Monit unter Linux für die Prozessüberwachung

  5. So verwenden Sie kdump für die Linux-Kernel-Crash-Analyse

So beenden Sie einen Zombie-Prozess unter Linux

So beenden Sie einen Prozess in Linux

Wie man einen Prozess unter Linux beendet

So deaktivieren Sie Swap unter Linux

Wie deaktiviere ich die SSH-Anmeldung für den Root-Benutzer in Linux?

So legen Sie die Prozess-ID in Linux für ein bestimmtes Programm fest