Como desativar a criação de soquete para um processo Linux, para sandboxing?
Estou considerando várias opções para sandboxing de um processo Linux. Usandoclone()
comCLONE_NEWNET
(etc.) é uma das opções.CLONE_NEWNET
garante que o processo em área restrita não possa fazer ou aceitar conexões de rede reais. Mas eu gostaria de desativar soquetes inteiramente para esse processo, mesmobind()
em qualquer porta0.0.0.0
e ligação a um soquete doman Unix (mesmo anônimo). Eu gostaria de fazer isso para impedir que o processo use muitos recursos do kernel vinculando-se a milhares de portas. Como faço isso?
Em geral, estou interessado em muitas abordagens de sandboxing (ou seja, aquelas fornecidas pelo kernel do Linux e aplicadas peloptrace()
), mas nesta pergunta, estou interessado apenas no aspecto de criação de soquete das abordagens de sandbox (por isso, se você sugerir uma abordagem de sandbox, explique também como impedir a criação de soquete), e não estou interessado em abordagens que precisa de correções do kernel ou que envolvam o carregamento de um módulo do kernel que não faz parte do pacote binário padrão do Ubuntu Lucid, ou que afetaria todos os processos do sistema.