![我如何解析 apparmor 配置文件?](https://linux22.com/image/1200931/%E6%88%91%E5%A6%82%E4%BD%95%E8%A7%A3%E6%9E%90%20apparmor%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%EF%BC%9F.png)
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 中的配置文件文本