¿Cómo deshabilitar la creación de socket para un proceso de Linux, para sandboxing?
Estoy considerando varias opciones para sandboxing un proceso de Linux. Utilizandoclone()
conCLONE_NEWNET
(etc.) es una de las opciones.CLONE_NEWNET
garantiza que el proceso de espacio aislado no pueda realizar o aceptar conexiones de red reales. Pero me gustaría deshabilitar los sockets por completo para ese proceso, inclusobind()
ing a cualquier puerto en0.0.0.0
, y vinculante a un zócalo Unix doman (incluso anónimo). Me gustaría hacer esto para evitar que el proceso use demasiados recursos del núcleo al vincular a miles de puertos. ¿Cómo puedo hacer eso?
En general, estoy interesado en muchos enfoques de sandboxing (es decir, los proporcionados por el kernel de Linux y los aplicados porptrace()
), pero en esta pregunta solo estoy interesado en el aspecto de creación de socket de los enfoques de sandboxing (por lo que si sugiere un enfoque de sandboxing, explique también cómo evitar la creación de socket con él), y no estoy interesado en los enfoques que necesita parches de kernel o que implican cargar un módulo de kernel que no forma parte del paquete de kernel binario predeterminado de Ubuntu Lucid, o que afectaría a todos los procesos del sistema.