AppArmor 转换至子配置文件 - 未找到配置文件

AppArmor 转换至子配置文件 - 未找到配置文件

我正在尝试为 PHP 应用程序编写自定义 AppArmor 配置文件。PHP 应用程序由 PHP-FPM(PHP 主进程)运行。我想使用特殊的配置文件/hat 限制 PHP 通过 shell_exec/exec/proc_open/... 执行的所有内容。

我有以下配置文件结构:

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 执行限制在新的配置文件/帽子中?

相关内容