关于linux内核中的Apparmor强制访问控制系统

**

关于linux内核中的Apparmor强制访问控制系统

**
一、Apparmor 是linux内核中的强制访问控制系统
AppArmor(Application Armor)是linux内核的一个安全模块,AppArmor允许系统管理员奖每个程序与一个安全配置文件关联,从而限制程序的功能。简单的说通过它你可以指定程序可以读、写或运行哪些文件,是否可以打开网络端口等。
作为对传统Unix的自主访问控制模块的补充,AppArmor提供访问控制机制,已被整合到linux 2.6 内核中。
二、应用
与程序 绑定的访问控制
AppArmor提供的访问控制是与程序绑定的:
假设有一个可执行文件的路径为/home/leagsoft/Leagview/Bin/UniRadiud, 如果要用AppArmor对其进行访问控制的话,就要新建一个配置文件, 名字为home.lei.UniRadiud,
并把这个文件放到AppArmor专门放置配置文件的目录下(/etc/AppArmor.d)。。每一个可执行文件都与一个配置文件绑定的,因此如果修改home.lei.UniRadiud文件名的话,配置文件将失效。
三、1 两种工作模式
AppArmor有两种工作模式: enforcement、complain/learning
enforcement–这种工作模式,配置文件里列出的条件都会得到执行,并且对于违反这些限制条件的程序会进行日志记录。
complain工作模式下, 配置文件的限制条件不会得到执行,AppArmor只是对程序的行为进行记录。只进行记录,不限制; 好处:如果某个程序的行为不符合其配置文件的限制,可以将其行为记录到系统日志,并且可以根据程序的行为,将日志转换成配置文件 。
如:追踪var/log/syslog的系统输出日志,在配置文件放开相应权限

   当然,我们可以随时对配置文件进行更改,选择自己需要的模式。

配置文件头内容如下::

#Last Modified: Fri Feb 1 20:06:09 2013
#include <tunables/global>
/home/lei/apparmor-helper/demoexe {
#include <abstractions/base>
}
这里,该文件默认使用enforcement 模式, 要修改模式,将配置文件改为:
#Last Modified: Fri Feb 1 20:06:09 2013
#include <tunables/global>
/home/lei/apparmor-helper/demoexe flags=(complain){
#include <abstractions/base>
}
红字前面的部分是文件的路径,作用是为这个配置文件绑定某个程序。。
好,接下来就可以在配置文件中添加相应的内容,在大括号加上:
/home/lei/apparmor-helper/data rw, # 对某一文件可读
set rlimit stack<=1M, #限制资源

然后 service apparmor reload 就OK 。 重新加载配置文件,使文件生效
这时候如果文件中语法错误会报错。

三、Apparmor可以对程序进行多方面控制,下面是采用的
(1)文件系统
Apparmor可以对某一文件、或某一目录下的文件进行访问控制,包括以下几种访问模式:
在这里插入图片描述
读、写、扩展、可链接等(还有可执行)
在配置文件中的写法:
如/tmp r (表示对/tmp目录下的文件进行读取)
没在配置文件中列出的文件,程序是不能访问的, 即白名单
ix: 表示执行并继承可执行

(2)资源限制:
Apparmor 可以对提供类似系统调用setrlimit一样的方式来限制程序可以使用的资源,要限制资源,可以在配置文件中:
set rlimit [resource] <=[value],
其resource 代表某一种资源,value代表某一值,
若对程序可以使用的虚拟内存做限制时,可以:
set rlimit as <=1M,(可以使用的虚拟内存最大为1M)
注意:Apparmor对程序使用多种资源进行限制,但不支持对程序可以使用的CPU时间进行限制

(3)访问网络
Apparmor可以控制程序是否可以访问网络进行限制,在配置文件里的语法是:
network [[domain][type][protocol]]
网络编程中才知道domain 、type、protocol是手膜
要让程序可以进行所有的网络操作,只需在配置文件中写:
network
要让程序在IPV4下使用TCP协议,可写:
network inet tcp

(4)除此外还可对capabliti条目进行限制, (因工作中不常用,略)

四、写完配置文件后,需要放到 /etc/apparmor.d这个目录下, 更靠谱、方便吧的方法:

sudo genprof [filename] --制定运行的程序,创建一个配置文件,并把它放到该目录
如:
在这里插入图片描述[摘取]

[filename]–制定运行文件的位置

猜你喜欢

转载自blog.csdn.net/qq_35538264/article/details/88994402