AppArmor e montagens de ligação

3

Alguém pode descrever a semântica do AppArmor em relação às pastas montadas no bind?

Pelo que entendi depois de ler a documentação ( 1 , 2 , 3 , 4 - sim, estou usando o Ubuntu 12.04 com o kernel 3.8 - as políticas são "anexadas a caminhos" (ou seja, caminhos de programas que se tornam processos quando invocados).

Então, suponha que eu tenha a pasta /home/joe/Public e que tenha a localização /var/www/html/joe bind-mounted nela.

Terei que criar um perfil que cubra o original e o bind-mounted, um deles (que) ou há algo mais que eu tenho que fazer ou considerar?

Digamos que existe um programa /var/www/html/joe/foo , o confinamento ainda funcionará quando o perfil / regra mencionar apenas /var/www/html/joe/foo , mas Joe decide executá-lo como /home/joe/Public/foo ?

Links e outros indicadores também serão apreciados.

    
por 0xC0000022L 11.09.2013 / 23:49

1 resposta

2

Eu não tenho uma referência definitiva nem uma experiência direta, então essa não é uma resposta autoritária.

O AppArmor é baseado em caminhos (depois de resolver links simbólicos, acredito). Caminhos não se importam com pontos de montagem. Uma regra do AppArmor para /var/www/html/joe/foo se aplica a um arquivo acessado por esse caminho. O caminho /home/joe/Public/foo pode acontecer para designar o mesmo arquivo, mas como é um caminho diferente, as regras do AppArmor para /var/www/html/joe/foo não se aplicam.

Você terá que definir regras que cubram todos os locais de montagem da ligação. Você não precisa repetir suas regras, no entanto. Você pode informar ao AppArmor que um local é um alias para outro.

alias /home/joe/Public -> /var/www/html/joe

Não acredito que você possa usar um curinga para que um alias seja aplicado automaticamente a todos os usuários. Para isso, você pode expressar suas regras usando variáveis.

@{WWW_DIRS} = /home/*/Public /var/www/html/*
…
@{WWW_DIRS}/foo …
    
por 12.09.2013 / 00:15