Ich erwäge mehrere Optionen für das Sandboxing eines Linux-Prozesses. Die Verwendung von clone()
mit CLONE_NEWNET
(usw.) ist eine der Optionen. CLONE_NEWNET
stellt sicher, dass der Sandkastenprozess keine echten Netzwerkverbindungen herstellen oder akzeptieren kann. Aber ich möchte Sockets vollständig für diesen Prozess deaktivieren, sogar an einen beliebigen Port auf 0.0.0.0
und binden an einen Unix-Doman-Socket (auch anonym). Ich möchte dies tun, um zu verhindern, dass der Prozess zu viele Kernel-Ressourcen verwendet, indem er an Tausende von Ports bindet. Wie mache ich das?Wie kann die Socket-Erstellung für einen Linux-Prozess für Sandboxing deaktiviert werden?
Im Allgemeinen bin ich an vielen Sandboxing-Ansätzen interessiert (dh solche, die vom Linux-Kernel bereitgestellt werden und denen von ptrace()
erzwungen), aber in dieser Frage interessiert mich nur der Socket-Erstellungsaspekt der Sandboxing-Ansätze (so Wenn Sie einen Sandbox-Ansatz vorschlagen, erklären Sie bitte auch, wie man die Socket-Erstellung verhindert. Ich bin nicht an Ansätzen interessiert, die ein Kernel-Patching benötigen oder ein Kernel-Modul laden, das nicht Teil des Standard-Binary-Kernel-Pakets von Ubuntu ist oder was jeden Prozess auf dem System beeinflussen würde.
ähnlicher Qs auf Sandbox/jailing Prozesse in Linux oder Unix: * http://unix.stackexchange.com/q/6433/4319 * http://stackoverflow.com/q/3859710/94687 * http://stackoverflow.com/q/4249063/94687 * http://stackoverflow.com/q/1019707/94687 –