zl程序教程

您现在的位置是:首页 >  工具

当前栏目

AppArmor零知识学习一、初识

学习 知识 初识
2023-09-14 09:15:39 时间

郑重声明:

近期笔者发现本文及其它文章被一条大河网非法盗用,该网站盗用链接如下:AppArmor零知识学习一、初识

截图如下:

笔者欢迎转载,也乐中于知识分享,但请在转载时注明原文出处。该网站在文章中并未注明“转载”字样,也没有给出转载链接,属于赤裸裸的侵权行为,在此对一条大河网予以强烈谴责!并在此申明:本系列文章系笔者(CSD 笔名蓝天居士)原创,其它未注明出处的转载均属于非法!

本文内容参考:

AppArmor · GitBook

Linux安全模块AppArmor总结-CSDN博客

AppArmor快速入门-CSDN博客

apparmor 初识(一)_domybest_nsg的博客-CSDN博客

AppArmor与SElinux_apparmor selinux_weixin_45216475的博客-CSDN博客

apparmor_什么是AppArmor?如何确保Ubuntu安全?_culingluan4376的博客-CSDN博客

学习LSM(Linux security module)之三:Apparmor的前世今生和基本使用_Yuri800的博客-CSDN博客

一、何为AppArmor

在研究SELinux的时候,发现还有个AppArmor,这也是第一次接触。见新名词、新事物不能交臂而失之,因此本系列文章就来认识、了解并深入研究AppArmor。

AppArmor的全称是Application Armor,Application自不必说,是应用的意思,那么Armor是什么意思?armor的英文原意是盔甲,作动词时意义是为……装盔甲。弄清楚了armor的意思之后,Application Armor的意思就豁然开朗了且一目了然吧:为应用程序装盔甲。你从字面上就能知道AppArmor一定和安全相关,不然都对不起这名字。

AppArmor是Linux内核的强制访问控制(MAC)的一个实现方案,与SELinux并列,也是使用了Linux安全模块(LSM)框架,因此它们可以互换。AppArmor默认集成在openSUSE和Ubuntu等发行版中(在openSUSE、Ubuntu等发行版上默认开启)。而SELinux则默认集成在Red Hat和CentOS上。

二、背景及产生原因

AppArmor最初由Immunix开发,随后由Novell维护。AppArmor的开发初衷是因为有人认为SELinux太过复杂,不适合普通用户管理。—— 这一点笔者举双手赞同,从开始研究SELinux到现在两周了,仍然没有弄清楚那些具体的策略怎样写(涉及主体、客体、域、许可……)。

那么具体比较一下AppArmor和SELinux,看看AppArmor与SELinux相比,到底有何异同:

  • 相同点

AppArmor和SELinux都是Linux内核的安全模块,都使用了Linux安全模块(LSM)框架;

AppArmor和SELinux都属于强制访问控制(MAC)机制;

AppArmor和SELinux基本的概念和使用类似,如都包括complain和enforce模式;

AppArmor和SELinux都有图形化配置工具。

  • 不同点

相比SELinux,AppArmor相对简单易用(例如规则文件无需编译),更加适合日常使用;

SELinux需要一个支持扩展属性的文件系统,而AppArmor对文件系统没有任何要求;

与SELinux必须只有明确的允许策略才能允许访问不同,AppArmor只有当程序的配置文件明确规定了受限,才会限制;

SELinux基于角色,AppArmor基于路径;

SELinux规则文件需要编译,AppArmor规则文件无需编译;

AppArmor具有学习模式。

三、AppArmor VS SELinux

实际上边已经比较了AppArmor和SELinux的异同。在此从宏观层面将两者进行更加全方位的比较:

  • 易用性

对一个FTP程序做相同的限制,使用AppArmor的规则只是SELinux的1/4,而且从代码的替代性上来看,Apparmor的代码也更易理解和易读。

  • 安全性

毋庸置疑,SELinux更安全。看下SELinux的出身,其是美国国家安全局「NSA」和SCC(Secure Computing Corporation)开发的Linux的一个扩展强制访问控制安全模块,可谓“根红苗正”。再从理论上也可以了解到SELinux与Apparmor最大的区别在于:Apparmor使用文件名(路径名)作为安全的标签,而SELinux使用文件的inode作为安全标签。这意味着,Apparmor机制可以通过修改文件名而被绕过。另外,在文件系统中,只有inode才具有唯一性。

最后做个小总结,无论是CentOS/Red Hat还是openSUSE/Ubuntu,它们都是优秀的产品。在AppArmor与SELinux的选择上,也都有各自的考量。如果从配置与上手的难易程序上来说,Apparmor更容易配置、入门和上手;如果从追求更高的安全性上来说,SELinux上更优一些。从日立软件的测试结果来看,也比较推荐使用SELinux而不是AppArmor。