1

Я пытаюсь написать собственный профиль AppArmor для приложения PHP. Приложение PHP запускается PHP-FPM (основной процесс PHP). Я хочу ограничить все, что PHP выполняет через shell_exec/exec/proc_open/... специальным профилем /hat.

У меня следующая структура профилей:

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

Теперь phpfpmmaster (как ни странно, apparmor не поддерживает тире в именах профилей при использовании в переходах) имеет правило для перехода в профиль userprogs:

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

Но Audit.log говорит, что AppArmor не может найти профиль:

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

Я понимаю, что это может быть связано с тем, что Cx ищет дочерний профиль в шляпе ^ phpfpmmaster. Apparmor_parser делает его дочерним профилем / шляпой и говорит, что не может заменить профиль, потому что он не найден.

Затем я попытался назвать шапку "phpfpmmaster//userprogs". apparmor_parser принимает это, но переход профиля по-прежнему не выполняется с "переход профиля не найден".

Как я могу ограничить выполнение /bin /dash новым профилем /hat?

0