什么是apparmor?

我听到很多关于apparmor的讨论,我想知道以下内容:

  • 什么是apparmor?
  • apparmor如何运作?

这是什么

Apparmor是强制访问控制(或MAC)系统。 它使用LSM内核增强function将程序限制为某些资源。 AppArmor在系统启动时将配置文件加载到内核中。 Apparmor有两种类型的配置文件模式,即执行和抱怨。 强制模式下的配置文件强制执行该配置文件的规则并报告syslogauditd违规尝试。 投诉模式下的配置文件不会强制执行任何配置文件规则,只会记录日志违规尝试。

在Ubuntu Apparmor默认安装。 它将应用程序限制在配置文件中,以确定程序需要访问的文件和权限。 某些应用程序将具有自己的属性,并且可以在apparmor-profiles包中找到更多应用程序。

您可以通过运行sudo apt-get install apparmor-profiles

我在Ubuntu论坛上找到了一个很好的Apparmor示例,我在这篇文章中重写过。

Apparmor是一个防止应用程序变坏的安全框架。 例如:如果我运行Firefox并访问一个试图安装将删除我的home文件夹的恶意软件的坏网站,Apparmor对Firefox有限制,但阻止它做任何我不想做的事情(比如访问我的音乐,文档等) 。 这样即使您的应用程序受到损害,也不会造成任何伤害。

这个怎么运作

apparmor-utils包中包含用于配置Apparmor的命令行工具。 使用它您可以更改Apparmor的执行模式,查找配置文件的状态以创建新配置文件等。

这些是最常见的命令:

注意::配置文件存储在/etc/apparmor.d/

  • 您可以使用sudo apparmor_status检查Apparmor的状态。 您将获得加载的所有配置文件的列表,强制模式下的所有配置文件,投诉模式下的所有配置文件,强制/投诉中定义的进程等。

  • 要将配置文件置于抱怨模式,您可以使用sudo aa-complain /path/to/bin ,其中/path/to/bin是程序bin文件夹。 例如,运行: sudo aa-complain /usr/bin/firefox将使Firefox处于抱怨模式。

  • 您使用sudo aa-enforce /path/to/bin来强制执行程序配置文件。

  • 您可以使用sudo aa-complain /etc/apparmor.d/*sudo aa-enforce.d/*分别将所有配置文件加载到抱怨/强制模式。

要将配置文件加载到内核中,您将使用apparmor_parser 。 您可以使用-r参数重新加载配置文件。

  • 要加载配置文件,请使用: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a ,它有效地将profile.name的内容打印到Apparmor的解析器中。

  • 要重新加载配置文件,请使用-r参数,如下所示: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r

  • 要重新加载Apparmor的所有配置文件,请使用: sudo service apparmor reload

要禁用配置文件,请使用ln 链接/etc/apparmor.d/disable/如下所示: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/然后运行: sudo apparmor_parser -R /etc/apparmor.d/profile.name

注意:不要混淆apparmor_parser -rapparmor_parser -R他们不是同样的事情!

  • 要重新启用配置文件,请在/etc/apparmor.d/disable/删除它的符号链接,然后使用-a参数加载它。 sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a

  • 您可以使用sudo service apparmor stop禁用Apparmor,并使用sudo update-rc.d -f apparmor defaults删除内核模块

  • 使用sudo service apparmor start启动Apparmor并使用sudo update-rc.d apparmor defaults加载内核模块

简介

配置文件存储在/etc/apparmor.d/ ,并以它们分析的可执行文件的完整路径命名,将“/”替换为“。”。 例如/etc/apparmor.d/bin.ping/bin ping的配置文件。

配置文件中使用了两种主要类型的条目:

  1. 路径条目确定应用程序可以访问的文件。

  2. function条目确定进程可以使用的权限。

让我们看一下ping的配置文件,位于etc/apparmor.d/bin.ping ,作为一个例子。

 #include  /bin/ping flags=(complain) { #include  #include  #include  capability net_raw, capability setuid, network inet raw, /bin/ping mixr, /etc/modules.conf r, } 

#include tunables目录中包含#include 文件,这允许将与多个应用程序相关的语句放在公共文件中。

/bin/ping flags=(complain)设置配置文件程序的路径并将模式设置为抱怨。

capability net_raw允许应用程序访问CAP_NET_RAW Posix.1efunction。

/bin/ping mixr允许应用程序读取和执行对文件的访问。

/etc/modules.conf r, r/etc/modules.conf提供应用程序读取权限

注意:创建/编辑配置文件后,您需要重新加载配置文件以使更改生效。

以下是您可以使用的权限列表:

  • r – 读

  • w – 写

  • ux – 无约束执行

  • Ux – 无约束执行 – 擦除环境

  • px – 离散轮廓执行

  • Px – 离散轮廓执行 – 擦除环境

  • ix – inheritance执行

  • m – 允许PROT_EXEC使用mmap(2)调用

  • l – 链接

来源:

http://ubuntuforums.org/showthread.php?t=1606499

http://ubuntuforums.org/showthread.php?t=1008906

https://wiki.ubuntu.com/AppArmor

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

AppArmor是一种强制访问控制(MAC)系统,它是一种内核(LSM)增强function,可将程序限制在一组有限的资源中。 AppArmor的安全模型是将访问控制属性绑定到程序而不是绑定到用户。 AppArmor限制是通过加载到内核中的配置文件提供的,通常是在启动时。 AppArmor配置文件可以采用以下两种模式之一:执行和投诉。 在强制模式下加载的配置文件将导致强制执行配置文件中定义的策略以及报告策略违规尝试(通过syslog或auditd)。 处于投诉模式的个人资料不会强制实施政策,而是报告政策违规尝试。

AppArmor与Linux上的其他MAC系统的不同之处在于它基于路径,允许混合执行和抱怨模式配置文件,使用包含文件来简化开发,并且具有比其他流行的MAC系统低得多的入门门槛。

AppArmor是一种在Immunix中首次出现的成熟技术,后来集成到Ubuntu,Novell / SUSE和Mandriva中。 Core AppArmorfunction在2.6.36之后的主线Linux内核中; AppArmor,Ubuntu和其他开发人员正在努力将其他AppArmorfunction合并到主线内核中。

我得到了一些更有用的链接: Wiki.Ubuntu.com Ubuntuforums.org

适用于Ubuntu 12.04和Ubuntu 12.10的 Apparmor指南

希望能帮到你。

以下是Apparmor维基的引用:

AppArmor是一个有效且易于使用的Linux应用程序安全系统。 AppArmor通过强制执行良好行为并防止未知应用程序漏洞被利用,主动保护操作系统和应用程序免受外部或内部威胁,甚至零日攻击。 AppArmor安全策略完全定义了各个应用程序可以访问的系统资源以及具有哪些特权。 AppArmor包含许多默认策略,并且结合使用高级静态分析和基于学习的工具,即使是非常复杂的应用程序的AppArmor策略也可以在几个小时内成功部署。