使用apparmor限制和允许程序的行为

为程序应用apparmor策略

例如, 限制/bin/touch, 让touch/tmp/目录下的所有文件只读, 步骤如下

/etc/apparmor.d/中新建一个配置文件, 文件名最好是bin.touch, 这是因为apparmor的约定是为每一个程序使用一个配置文件, 配置文件的路径就是程序的路径把/替换成., 此约定应该不是强制的, 我测试发现使用任意配置文件名都可以, 只要配置文件里面的内容正确即可

配置文件内容如下, 注意: 要限制的程序不能是软连接, 必须跟踪到目标文件, 否则规则无效

#include <tunables/global>

/bin/touch {
  #include <abstractions/base>
  /tmp/** r,
}

使用apparmor_parser /etc/apparmor.d/bin.touch把配置通知给驱动即可, 此时touch /tmp/xxx会提示被拒绝, dmesg可以看到拒绝日志

如果之后又修改了配置文件内容可以使用/etc/init.d/apparmor reload重新加载配置文件

使用cat /sys/kernel/security/apparmor/profiles可以查看驱动应用了哪些配置文件

配置文件简介

apparmor配置文件使用的是一种说明性语言编写, 配置文件中的条目的顺序是不重要的, 你可以把所有配置都写到一个文件里面, 也可以分开写成多个文件然后会用#include包含其他文件; 最终, 这个策略文件会被编译成架构独立的二进制文件通知到内核

配置文件中include的路径是相对于/etc/apparmor.d/的, 例如include <abstructions/base>文件在/etc/apparmor.d/abstructions/base

配置文件格式

/bin/touch {...}

其中/bin/touch是程序的全路径, 注意: 如果是软连接要跟踪到目标文件
{...}中填写具体的规则, 例如/tmp/** r,/tmp/目录下的说有文件都只读

详细配置文件格式见参考资料

参考资料

https://manpages.ubuntu.com/manpages/jammy/en/man5/apparmor.d.5.html
https://manpages.ubuntu.com/manpages/jammy/en/man8/apparmor_parser.8.html
https://manpages.ubuntu.com/manpages/jammy/en/man7/apparmor.7.html
配置文件组件和语法
https://zhuanlan.zhihu.com/p/547772872

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值