什么是装甲?


93

我听到很多关于apparmor的话题,我想知道以下几点:

  • 什么是装甲?
  • 装甲如何工作?

Answers:


92

这是什么

Apparmor是强制性访问控制(或MAC)系统。它使用LSM内核增强功能将程序限制为某些资源。AppArmor通过在系统启动时将配置文件加载到内核中来执行此操作。Apparmor具有两种类型的配置文件模式:强制执行和投诉。强制模式下的配置文件将强制执行该配置文件的规则,并在syslog或中报告违规尝试auditd。投诉模式下的配置文件不执行任何配置文件规则,仅记录违反尝试。

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

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

我在本文撰写的Ubuntu论坛上找到了一个很好的Apparmor示例。

Apparmor是一个安全框架,可防止应用程序变得邪恶。例如:如果我运行Firefox并访问了一个错误的站点,该站点试图安装将删除我的home文件夹的恶意软件,则Apparmor 会受到Firefox的限制,尽管会阻止Firefox做我不想要的事情(例如访问我的音乐,文档等)。这样,即使您的应用程序受到威胁,也不会造成任何危害。

这个怎么运作

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

这些是最常见的命令:

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

  • 您可以使用来检查Apparmor的状态sudo apparmor_status。您将获得以下列表:已加载的所有配置文件,强制模式下的所有配置文件,投诉模式下的所有配置文件,强制/投诉中定义了哪些过程等。
  • 要将配置文件置于投诉模式,请使用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,它可以将内容有效地打印profile.name到Apparmor的解析器中。
  • 要重新加载配置文件,请使用-r参数,如下所示:cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
  • 要重新加载所有Apparmor的配置文件,请使用: sudo service apparmor reload

要禁用配置文件,可以使用以下方式链接到: 然后运行:。 /etc/apparmor.d/disable/lnsudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/sudo apparmor_parser -R /etc/apparmor.d/profile.name

注意:请勿apparmor_parser -r与它们apparmor_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
  • 您可以使用禁用Apparmor sudo service apparmor stop并使用删除内核模块sudo update-rc.d -f apparmor defaults
  • 使用启动Apparmor sudo service apparmor start并使用加载内核模块sudo update-rc.d apparmor defaults

个人资料

配置文件存储在配置文件中/etc/apparmor.d/并以其可执行文件的完整路径命名,用“。”替换“ /”。例如in中/etc/apparmor.d/bin.ping的配置文件。 ping/bin

概要文件中使用的条目主要有两种:

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

  2. 能力条目确定流程可以使用哪些特权。

让我们看看天寒ping,位于etc/apparmor.d/bin.ping,作为一个例子。

#include <tunables/global>
/bin/ping flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>

  capability net_raw,
  capability setuid,
  network inet raw,

  /bin/ping mixr,
  /etc/modules.conf r,
}  

#include <tunables/global>global在目录中包含文件tunables,这允许将与多个应用程序有关的语句放置在一个公共文件中。

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

capability net_raw允许应用程序访问该CAP_NET_RAW Posix.1e功能。

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

/etc/modules.conf r,r给出了应用程序读取的权限/etc/modules.conf

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

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

  • r -阅读
  • w -写
  • ux -无限制执行
  • Ux -不受限制的执行-清理环境
  • px -离散配置文件执行
  • Px -离散配置文件执行-清理环境
  • ix -继承执行
  • m -允许PROT_EXECmmap(2)电话
  • l -链接

资料来源


因此,它有点像一个充当用户的程序,并且没有修改系统上大多数文件的权限?
Izkata

是的,没有。您可以设置一个配置文件来定义某些应用程序可以做什么。然后,您将程序添加到该配置文件中,并限制了该配置文件中的程序被允许执行的操作。因此,它就像一个用户,因为他们只能访问管理员(您)说的个人资料。
赛斯

嗯,配置文件就像程序的用户组一样;)
Izkata 2013年

是的,很多;)
赛斯

您是否认为,apparmor可以用来阻止每个互联网连接,并说出谁在尝试访问它?并根据该日志为每个应用程序创建权限?这个想法是使它像window $上的Zonalarm一样工作,并且像LeopardFlower和ProgramGuard一样在Linux上像旧的“每个应用程序防火墙”(我认为它们似乎不再可以编译了),并且还有一个新的名为Douane的东西,它使用一个使工作正常的内核模块。
Aquarius Power

6

AppArmor是强制性访问控制(MAC)系统,是对内核(LSM)的增强,可以将程序限制在有限的资源集中。AppArmor的安全模型是将访问控制属性绑定到程序而不是用户。通过加载到内核中的配置文件(通常是在引导时)提供AppArmor限制。AppArmor配置文件可以采用以下两种模式之一:强制执行和投诉。以强制模式加载的配置文件将导致配置文件中定义的策略得到强制执行,并报告违反策略的尝试(通过syslog或auditd)。投诉模式下的配置文件不会强制执行策略,而是报告违反策略的尝试。

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

AppArmor是一项成熟的技术,最初在Immunix中出现,后来集成到Ubuntu,Novell / SUSE和Mandriva。从2.6.36起,AppArmor的核心功能已包含在主线Linux内核中。AppArmor,Ubuntu和其他开发人员正在进行这项工作,以将其他AppArmor功能合并到主线内核中。

我还有一些有用的链接给您:Wiki.Ubuntu.com Ubuntuforums.org

适用于Ubuntu 12.04Ubuntu 12.10的 Apparmor指南

希望对您有所帮助。


3

这是来自Apparmor Wiki的报价:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.