Estoy considerando varias opciones para sandboxing un proceso de Linux. El uso de clone()
con CLONE_NEWNET
(etc.) es una de las opciones. CLONE_NEWNET
asegura que el proceso de espacio aislado no puede hacer o aceptar conexiones de red reales. Pero me gustaría deshabilitar los sockets por completo para ese proceso, incluso bind()
ing en cualquier puerto en 0.0.0.0
, y enlazar a un socket doman Unix (incluso anónimo). Me gustaría hacer esto para evitar que el proceso use demasiados recursos del kernel vinculando a miles de puertos. ¿Cómo puedo hacer eso?Cómo deshabilitar la creación de socket para un proceso de Linux, para sandboxing?
En general, estoy interesado en muchos enfoques de sandboxing (es decir, los proporcionados por el kernel de Linux y los forzados por ptrace()
), pero en esta pregunta solo me interesa el aspecto de creación de socket de los enfoques de sandboxing (si sugiere un enfoque de espacio aislado, también explique cómo evitar la creación de socket con él), y no estoy interesado en enfoques que necesiten parcheo del kernel o que impliquen cargar un módulo kernel que no es parte del paquete kernel por defecto Ubuntu Lucid , o que afectaría todos los procesos en el sistema.
Qs similares en los procesos de caja de arena/encarcelamiento en Linux o 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 –