您的位置:首页 > 移动开发

Apparmor简单学习

2016-06-05 20:57 309 查看

0x0 前言

对这几天研究apparmor做一个总结。Apparmor的功能类似于selinux,基本上是基于最小权限原则,一些基本的概念和使用类似,如都包括complain和enforce模式;但在使用性方面,Apparmor较selinux更简单,例如规则文件无需编译。关于Selinux的一些基础理论和使用,网上有大量资料,不再赘述。

0x1 安装与使用

Ubuntu系统集成了apparmor,但包括的profile文件(类似规则文件)及一些附带的操作模块较少,可以自行安装。

安装补充的profiles:

sudo apt-get install apparmor-profiles

安装方便操作apparmor的工具:

sudo apt-get install apparmor-utils

0x2 apache2的profile例子

使用Apparmor,虽然自带了部分profile文件(也就是我们理解的规则文件),但很多时候不能满足我们的个性化需求。因此,一个重要的工作就是定制自己的profile文件。仿照参考文档,我写了一个apache的profile(注:该profile可能只适用于我自己的服务器)。

服务器环境:apache+php+mysql,profile文件名为usr.sbin.apache2

#include <tunables/global>

/usr/sbin/apache2 {
#include <abstractions/apache2-common>
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/user-tmp>
#include <abstractions/winbind>

capability dac_override,
capability kill,
capability setgid,
capability setuid,
capability sys_resource,

network tcp,

/etc/apache2/** r,
/etc/hosts.allow r,
/etc/hosts.deny r,

/etc/mime.types r,

/etc/php5/** r,

/run/apache2/apache2.pid rw,
/run/apache2/apache2.sock w,
/run/mysqld/mysqld.sock rw,
/usr/lib/apache2/** mrw,
/usr/sbin/apache2 mr,
/usr/share/apache2/** r,
/usr/share/mysql/** r,
/var/lib/apache2/** mrw,
/var/log/apache2/** rw,
/var/run/apache2/apache2.pid rw,
/var/run/apache2/apache2.sock w,
/var/run/mysqld/mysqld.sock rw,
/var/www/html/** rw,

^DEFAULT_URI {
}

^HANDLING_UNTRUSTED_INPUT {
}
}


使用时,将usr.sbin.apache2拷贝到/etc/apparmor.d

执行命令 aa-enforce apache2

Service apparmor reload

Service apache2 restart

注意:usr.sbin.apache2文件的编写,需要了解apache读写执行哪些文件,并且还需要知晓当前网站数据库类型等,否则网站运行异常。

0x3 参考资料

Profiles的语法手册

http://manpages.ubuntu.com/manpages/trusty/en/man5/apparmor.d.5.html

Apparmor入门(包括简单的命令、profile文件示例):

https://wiki.ubuntu.com/AppArmor

https://help.ubuntu.com/community/AppArmor

https://help.ubuntu.com/14.04/serverguide/apparmor.html

http://manpages.ubuntu.com/manpages/trusty/en/man7/apparmor.7.html

http://manpages.ubuntu.com/manpages/trusty/en/man2/aa_change_hat.2.html

http://manpages.ubuntu.com/manpages/trusty/en/man7/capabilities.7.html

一个简单的Nginx profile编写例子

https://www.digitalocean.com/community/tutorials/how-to-create-an-apparmor-profile-for-nginx-on-ubuntu-14-04
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu apparmor 强访