Apparmor简单学习
2016-06-05 20:57
323 查看
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 默认壁纸历代记
- Ubuntu Remix Cinnamon 20.04 评测:Ubuntu 与 Cinnamon 的完美融合
- 关于Ubuntu 11.10启动提示waiting for the network configuration的问题
- 在 Ubuntu 桌面中使用文件和文件夹
- ubuntu下chrome无法同步问题解决
- Ubuntu Linux使用体验
- 使用 GNOME 优化工具自定义 Linux 桌面的 10 种方法
- 以Ubuntu 9.04为例 将工作环境迁移到 Linux
- VirtualBox虚拟机XP与宿主机Ubuntu互访共享文件夹
- 从USB安装Ubuntu Server 10.04.3 图文详解
- Ubuntu 15.04 正式版发布下载
- Linux-Ubuntu 10.04安装Cadence-ic610 方法总结图解
- Ubuntu 12.04和Windows 7双系统安装图解
- Ubuntu /home下中文目录如何修改成英文?
- 开机出现:grub rescue的修复方法
- Ubuntu连接Android真机调试
- 你应该选择 Ubuntu 还是 Fedora?
- 100 个最佳 Ubuntu 应用(中)
- 看看我的Ubuntu Linux截图
- Ubuntu 12.04 LTS服务器版安装过程及使用图解