Transição do AppArmor para o subperfil - perfil não encontrado

1

Estou tentando escrever um perfil AppArmor personalizado para um aplicativo PHP. O aplicativo PHP é executado pelo PHP-FPM (processo mestre do PHP). Eu quero confinar tudo o que o PHP está executando via shell_exec / exec / proc_open / ... com um perfil especial / hat.

Eu tenho a seguinte estrutura de perfis:

docker-php-fpm
-> ^phpfpmmaster 
-> ^userprogs 

Agora, o phpfpmmaster (estranhamente, o apparmor não suporta traços em nomes de perfil quando usado em transições) tem uma regra para fazer a transição para o perfil userprogs:

^phpfpmmaster flags=(attach_disconnected,mediate_deleted) {
  ..
  /bin/dash  rCx -> userprogs,
  ..
}

Mas o audit.log diz que o AppArmor não consegue encontrar o perfil:

type=AVC msg=audit(1525448842.598:1849368): apparmor="DENIED" operation="exec" info="profile transition not found" error=-13 profile="docker-php-fpm//phpfpmmaster" name="/bin/dash" pid=19686 comm="php-fpm" requested_mask="x" denied_mask="x" fsuid=377118 ouid=0

Eu entendo que isso pode ser porque o Cx está procurando o perfil filho no chapéu ^ phpfpmmaster. Tornando um perfil / chapéu filho, apparmor_parser diz que não pode substituir o perfil porque não foi encontrado.

Eu então tentei nomear o chapéu "phpfpmmaster // userprogs". apparmor_parser aceita isso, mas ainda assim a transição do perfil falha com "transição de perfil não encontrada".

Como posso limitar a execução de / bin / traço a um novo perfil / chapéu?

    
por Phillipp 04.05.2018 / 18:00

0 respostas