apparmor- 应用程序访问控制系统

网友投稿 1027 2022-10-18

apparmor- 应用程序访问控制系统

apparmor- 应用程序访问控制系统

AppArmor 是一个类似于selinux 的东东,主要的作用是设置某个可执行程序的访问控制权限,可以限制程序读/写某个目录/文件,打开/读/写网络端口等等。。

1.安装 Ubuntu 7.10里sudo apt-get install apparmor apparmor-profiles apparmor-docs apparmor-utils

2.启动服务sudo /etc/init.d/apparmor restart

3.添加访问控制规则3.1 先试编写一个小程序

代码:

include

include

int main(int argc,char *argv[]){FILE * f;int nn,i;char ch;if (argc == 3){f = fopen(argv[1],”w”);if (f ==NULL) {printf (”Open file \”%s\” with w ERROR\n”,argv[1]);return 2;}nn = strlen(argv[2]);i=0;while (i {fputc(argv[2][i],f);++i;}fclose(f);} else if (argc == 2){f = fopen(argv[1],”r”);if (f == NULL) {printf (”Open file \”%s\” with r ERROR\n”,argv[1]);return 2;}while ( (ch=fgetc(f)) != EOF ){printf(”%c”,ch);}fclose(f);} else {printf(”Usage: testapp file \”string\” // write string to file \n”” testapp file // read file and print it \n”);return 3;}

return 0;}

保存为/home/n1/Desktop/testapp.c,程序很简单,带一个或两个参数,第一个参数是文件名,第二个参数是字符串,读或写文件执行

代码:

cd /home/n1/Desktopgcc -Wall -o testapp testapp.c./testapp abc “1abc”./testapp abcd “2abcd”./testapp abcde “3abcde”ls abc abcd abcde #/// <- 可看到文件./testapp abc./testapp abcd./testapp abcde #/// <- 可看到文件内容rm abc abcd abcde

以上测试在用户家目录里,有完全的读写权限,写入读取文件一切正常。3.2 创建规则

代码:

cd /home/n1/Desktopsudo genprof testapp #// 提示[(S)can system log for SubDomain events] / (F)inish时按F 完成ls /etc/apparmor.d/home.n1.* #// 可以看到有一个/etc/apparmor.d/home.n1.Desktop.testapp 文件,

// 文件名就是文件的绝对路径,由/变为. 了

原始内容为

代码:

Last Modified: Thu Oct 4 01:35:37 2007

include

/home/n1/Desktop/testapp flags=(complain) {

include

/home/n1/Desktop/testapp mr,}

在文件大括号内加入

代码:

/home/n1/Desktop/abcde rwm,/home/n1/Desktop/abcd w,/home/n1/Desktop/abc r,

一部分为文件名,第二部分为权限,rwxm 之类与文件系统的权限类似。4. 测试执行下列命令

代码:

sudo /etc/init.d/apparmor reload // 重装读取./testapp abc “1abc00″./testapp abcd “2abcd00″./testapp abcde “3abcde00″ls abc abcd abcde #/// <- 可看到文件./testapp abc./testapp abcd./testapp abcde #/// <- 可看到文件内容

gedit /var/log/syslog # 可以看到类似内容kernel: [140321.028000] audit(1191433716.584:1578): type=1502operation=”inode_create” requested_mask=”w” denied_mask=”w”name=”/home/n1/Desktop/abc” pid=4864 profile=”/home/n1/Desktop/testapp”kernel: [140362.236000] audit(1191433758.086:1579): type=1502operation=”inode_permission” requested_mask=”r” denied_mask=”r”name=”/home/n1/Desktop/abcd” pid=4877 profile=”/home/n1/Desktop/testapp”

可以看出 abc 文件在 写入时被“记帐”了,abcd 文件在读取时被“记帐”了。 因为在

/etc/apparmor.d/home.n1.Desktop.testapp 他们没有对应的权限

rm abc abcd abcde

再执行

代码:

sudo enforce /etc/apparmor.d/home.n1.Desktop.testapp // 启用“强制”

执行这个之后发现 /etc/apparmor.d/home.n1.Desktop.testapp 文件里 flags=(complain) 被去掉了

sudo /etc/init.d/apparmor reload./testapp abc “1abc0011″ # 写入出错./testapp abcd “2abcd0011″./testapp abcde “3abcde0011″./testapp otherfile “teststest” # 其它文件名,也是失败ls abc abcd abcde #/// <- 看不到文件abcecho “i am test” > abc # 手工创建./testapp abc./testapp abcd #读取出错./testapp abcdecat abcd # 内容为刚才加入的内容”2abcd0011″

/var/log/syslog 里也有日记

rm abc abcd abcde

查看AppArmor在整个系统的状态

代码:

sudo apparmor_status # 在启动时应该有—–apparmor module is loaded.17 profiles are loaded.4 profiles are in enforce mode.…../home/n1/Desktop/testapp13 profiles are in complain mode./usr/sbin/traceroute…..5 processes have profiles defined.1 processes are in enforce mode :/usr/sbin/cupsd (4812)4 processes are in complain mode.…../sbin/syslogd (4574)0 processes are unconfined but have a profile defined.—— 之类的,

以上是最简单的应用,通过 genprof 创建规则文件,只添加最少需要的文件读写权限规则,可实现除了文件系统权限以外对某未知程序的读写文件控制。在规则文件里的文件名路径可带通配符

其它自动化工具包括 logprof ,autodep,audit,complain,unconfined,查看状态 apparmor_status 等

要取消只要删除apparmor.d 里的文件,重启 apparmor 服务就行

有个问题就是把可执行文件复制到其它目录里就不能限制了

介绍内容来自 http://21nw.com/

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mybatis使用foreach查询不出结果也不报错的问题
下一篇:string类常见函数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~