ptrace se zdá být nejviditelnějším nástrojem, ale kromě toho…
util-linux[-ng] má příkaz unshare , který používá jádro clone /unshare rozhraní. Pokud spustíte nový proces přes unshare -n (nebo clone(CLONE_NEWNET) ), všechny síťové zásuvky, které vytvoří, jsou v jiném jmenném prostoru. To neřeší problém se zdroji jádra, ale proces to provádí v karanténě.
Linuxové jádro také podporuje seccomp, režim zadaný pomocí prctl(PR_SET_SECCOMP, 1) což zabraňuje procesu (no, vláknu, opravdu) volat jiná systémová volání než read , write , exit a sigreturn . Je to docela efektivní sandbox, ale těžko se používá s neupraveným kódem.
Můžete definovat doménu SELinux, která nepovoluje socket /bind /atd. volání a proveďte dynamický přechod do tohoto typu. To (samozřejmě) vyžaduje systém s aktivně prosazující politikou SELinuxu. (Možná podobné věci jsou možné u AppArmor a TOMOYO, ale žádný z nich moc neznám.)
Podívejte se na systrace – neomezený na sockety, ale generický generátor/enforcer zásad syscall. Citace:
Port GNU/Linux je dokončen a oprava jádra je aktivně udržována Mariusem Eriksenem. Lze spustit bez změn jádra pomocí backendu ptrace.
Disclaimer - Nikdy jsem to nezkoušel na Linuxu.