GNU/Linux >> Linux Esercitazione >  >> Linux

Come disabilitare la creazione di socket per un processo Linux, per il sandboxing?

ptrace sembra essere lo strumento più ovvio ma a parte questo…

util-linux[-ng] ha un comando unshare , che utilizza il clone del kernel /unshare interfacce. Se esegui il nuovo processo attraverso unshare -n (o clone(CLONE_NEWNET) ), tutti i socket di rete che crea si trovano in uno spazio dei nomi diverso. Ciò non risolve il problema delle risorse del kernel, ma esegue il sandboxing del processo.

Il kernel di Linux supporta anche seccomp, una modalità inserita con prctl(PR_SET_SECCOMP, 1) che impedisce al processo (beh, thread, in realtà) di chiamare qualsiasi chiamata di sistema diversa da read , write , exit e sigreturn . È una sandbox piuttosto efficace ma difficile da usare con codice non modificato.

Puoi definire un dominio SELinux che non consente socket /bind /eccetera. chiamate ed eseguire una transizione dinamica in quel tipo. Questo (ovviamente) richiede un sistema con una policy SELinux attiva. (Forse cose simili sono possibili con AppArmor e TOMOYO, ma non ne ho molta familiarità.)


Dai un'occhiata a systrace, non limitato ai socket, ma a un generico generatore/applicatore di policy syscall. Citazione:

Il porting GNU/Linux è terminato e la patch del kernel è mantenuta attivamente da Marius Eriksen. Può essere eseguito senza modifiche al kernel utilizzando il backend ptrace.

Disclaimer - Non l'ho mai provato su Linux.


Linux
  1. Come uccidere un processo zombie su Linux

  2. Come installare vtop su Linux

  3. Come aggiornare il kernel su desktop Linux

  4. Linux:come annullare la condivisione della rete per il processo corrente?

  5. Linux:come disabilitare il segnale acustico di sistema per utenti non privilegiati?

Come uccidere un processo in Linux

Come KILL un processo su Linux

Come disabilitare lo scambio in Linux

Come disabilitare l'accesso SSH per l'utente root in Linux?

Come codificare un modulo del kernel Linux?

Come impostare l'ID processo in Linux per un programma specifico