我如何解析 apparmor 配置文件?

我如何解析 apparmor 配置文件?

apparmor我想看看例如dhclient的限制

我试着跑

 apparmor_parser -p /sys/kernel/security/apparmor/policy/profiles/usr.sbin.dhclient.6/raw_data

我有 :

AppArmor parser error for /sys/kernel/security/apparmor/policy/profiles/usr.sbin.dhclient.6/raw_data in profile /sys/kernel/security/apparmor/policy/profiles/usr.sbin.dhclient.6/raw_data at line 1: Lexer found unexpected character: '' (0x4) in state: INITIAL

如何通过查看/sys/kernel/security/apparmor/policy/profiles/目录查看 apparmor 对某些进程的限制?

答案1

中的配置文件/etc/apprmor.d是文本形式,供人类编辑,并且(通常)依赖于大型包含文件。

生成的配置文件缓存在解析器特定的目录中,并且大多数都不是人类可读的。

.load解析器通常使用 apparmorfs 文件系统特殊文件(如或)将二进制配置文件(立即编译或从缓存加载)加载到内核中.replace

有了正确的内核配置,您还可以查看加载到内核中的二进制配置文件,但同样,它们的内容大多无法被人类读取,因为它们完全是二进制的并且内部使用两种复杂的编码。

如果您有兴趣,您可以通过阅读 Linux 内核的源代码(security/apparmor/policy_unpack.c)和 AppArmor 解析器(parser/parser_interface.c)以及使用您最喜欢的十六进制编辑器查看原始字节来了解更多信息。

我已经启动了一个项目,提供二进制配置文件的可读分析https://gitlab.com/zygoon/go-apparmor但目前只有 Go 开发人员对此感兴趣。我将发布一个基于该库的工具,该工具可以反编译任何配置文件,只要这些配置文件可以反编译,因为优化将许多人类可读的规则变成了复杂的状态机。

我现在最好的建议是关注 /etc/apparmor.d 中的配置文件文本

相关内容