首页 理论教育 AppArmor策略语言深入解析及应用

AppArmor策略语言深入解析及应用

时间:2023-11-22 理论教育 版权反馈
【摘要】:AppArmor的策略语言并不复杂,但是文档太少。要想完整地描述AppArmor的策略语言需要阅读AppArmor用户态工具的源代码。下面举个例子,简单描述一下:AppArmor的策略语言允许使用include语句包含一个已有的策略文件。不知读者是否注意到,一条策略语句的头部可以有修饰符,例如下面列出的语句:audit表示记录日志,deny表示拒绝访问。deny的引入很重要,有了它,AppArmor可以基于黑名单进行访问控制。白名单是指策略只列出允许的操作,没有列出的都不被允许。

AppArmor策略语言深入解析及应用

AppArmor的策略语言并不复杂,但是文档太少。要想完整地描述AppArmor的策略语言需要阅读AppArmor用户态工具的源代码。下面举个例子,简单描述一下:

978-7-111-54905-5-Part02-189.jpg

978-7-111-54905-5-Part02-190.jpg

AppArmor的策略语言允许使用include语句包含一个已有的策略文件。客体类别capability和rlimit比较简单,capability列出允许的能力,rlimit列出限定的资源值。

客体类别文件略复杂。

其基本操作许可为:r(读)、w(写)、a(添加)、l(链接)、k(锁)、m(在mmap的内存中执行)、x(执行)。x又可以有若干前缀,比如“PUx”。下面对前缀做个分析,见表10-1

10-1 AppArmor执行(x)操作的前缀

978-7-111-54905-5-Part02-191.jpg

这些前缀可以组合使用,例如“pix”,意思是先找有没有与被执行文件匹配的域,如果没有就维持当前域不变。当然也不是所有前缀都可以组合的,例如“p”和“P”,“p”和“c”就不能组合。

不知读者是否注意到,一条策略语句的头部可以有修饰符,例如下面列出的语句:(www.xing528.com)

978-7-111-54905-5-Part02-192.jpg

audit表示记录日志,deny表示拒绝访问。deny的引入很重要,有了它,AppArmor可以基于黑名单进行访问控制。白名单是指策略只列出允许的操作,没有列出的都不被允许。黑名单则相反。下面看个例子:

978-7-111-54905-5-Part02-193.jpg

这个策略允许处于/bin/my-shell域的进程做任何操作,除了读文件/home/zhi/my-test

下面再看一个“changehat”的例子:

978-7-111-54905-5-Part02-194.jpg

978-7-111-54905-5-Part02-195.jpg

hat子域的定义需要前缀“^”

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈