Answers:
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/
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
sudo service apparmor reload
要禁用配置文件,可以使用以下方式将其链接到: 然后运行:。 /etc/apparmor.d/disable/
ln
sudo 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
sudo service apparmor stop
并使用删除内核模块sudo update-rc.d -f apparmor defaults
sudo service apparmor start
并使用加载内核模块sudo update-rc.d apparmor defaults
配置文件存储在配置文件中/etc/apparmor.d/
并以其可执行文件的完整路径命名,用“。”替换“ /”。例如in中/etc/apparmor.d/bin.ping
的配置文件。 ping
/bin
概要文件中使用的条目主要有两种:
路径条目确定应用程序可以访问哪些文件。
能力条目确定流程可以使用哪些特权。
让我们看看天寒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_EXEC
用mmap(2)
电话 l
-链接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.04和Ubuntu 12.10的 Apparmor指南
希望对您有所帮助。
这是来自Apparmor Wiki的报价:
AppArmor是有效且易于使用的Linux应用程序安全系统。AppArmor通过执行良好的行为并防止甚至利用未知的应用程序漏洞来主动保护操作系统和应用程序免受外部或内部威胁,甚至是零日攻击。AppArmor安全策略完全定义了各个应用程序可以访问哪些系统资源以及具有哪些特权。AppArmor附带了许多默认策略,并且结合了高级静态分析和基于学习的工具,即使是非常复杂的应用程序,AppArmor策略也可以在数小时内成功部署。