Criando um “sandbox” do Linux com o AppArmor

3

Estou tentando proteger um processo específico do Python, dando acesso somente a comunicações de rede e a um número selecionado de arquivos no sistema de arquivos. Eu segui as instruções no site de documentação da comunidade do Ubuntu e no projeto do Chrom artigo sobre o sandbox .

No entanto, só quero bloquear alguns processos do Python. Para contornar isso, eu vinculei o executável do Python a outro local (chame-o de python sandbox ) e apliquei um perfil do AppArmor nele.

Quando eu abro python-sandbox , ainda consigo abrir arquivos arbitrários no sistema de arquivos e ler a partir deles. O que há de errado? Eu fiz o seguinte:

Criado um perfil do AppArmor da seguinte forma:

#include <tunables/global>
/opt/python-sandbox {
    #include <abstractions/base>
    #include <abstractions/fonts>
    /proc/** r,
    /usr/lib/python2.7/** r,
    /usr/local/lib/python2.7/** r,
    network,
}

Copiei para o diretório /etc/apparmor.d/ com o nome opt.python-sandbox (já que o link simbólico é para /opt/python-sandbox .

Executar apparmor_parser /etc/apparmor.d/opt.python-sandbox .

Eu fiz algo errado? Devo considerar outra abordagem?

    
por nickname 15.07.2011 / 21:05

1 resposta

3

Aha! Eu perdi alguma coisa. Aparentemente, é sabido que o AppArmor não funciona em links simbólicos em geral. Copiar o executável do Python para / opt / python-sandbox funcionou bem.

    
por 15.07.2011 / 21:17