NovellŽ AppArmor 配置文件表示单个程序实例或进程的安全策略。它适用于一个可执行程序,但是,如果该程序的一部分需要与其它部分不同的访问权限,该程序可以“变换帽子”以使用有别于主程序访问权限的安全环境。这称作帽子或子配置文件。
ChangeHat 使程序能够在 Novell AppArmor 配置文件内变换帽子。这样您就可以定义比进程更细级别的安全性。
此功能要求您将各应用程序配置为“感知 changehat”,表示将其修改为可以在执行应用程序期间不限次数地向 Novell AppArmor 模块发出转换安全域的请求。
配置文件可以拥有任意数目的子配置文件,但一共只有两个层次:子配置文件不能进一步拥有子子配置文件。子配置文件以单独配置文件的形式书写,命名方式为在包含它的配置文件后面加上子配置文件名称,用 ^ 分隔。子配置文件必须保存在与父配置文件相同的文件中。
![]() | 注意 |
|---|---|
有关详细信息,请参见 | |
Novell AppArmor 为 Apache 程序提供一个 mod-apparmor 模块。mod-apparmor 模块在 SUSE Linux 中工作,以使 Apache 万维网服务器能够“感知 ChangeHat”。在系统上有 Apache 时安装此模块。
如果 Apache 可感知 ChangeHat,则会检查以下自定义的 Novell AppArmor 安全配置文件,检查的顺序为给各个收到的 URI 请求的顺序。
特定于 URI 的帽子(例如:^phpsysinfo-dev/templates/classic/images/bar_left.gif)
DEFAULT_URI
HANDLING_UNTRUSTED_INPUT
如果系统中具备需要的 Apache 2,则 mod-apparmor 模块会带 Novell AppArmor 自动安装,并会添加到 Apache 配置。不支持 Apache 1.3。
![]() | 注意 |
|---|---|
如果安装不带 Novell AppArmor 的 LoadModule change_hat_module modules/mod_change_hat.so | |
与多数 Novell AppArmor 工具相同,您可以使用两种方法来管理 ChangeHat、YaST 或命令行界面。在命令行管理可感应 ChangeHat 的应用程序更具灵活性,但过程也比较复杂。使用这两种方法都可以管理应用程序的帽子并填充配置文件条目。
下面的步骤是使用 YaST 将帽子添加到 Apache 配置文件的全过程演示。在中,Novell AppArmor 配置文件实用程序会提示您为不同的 URI 请求创建新帽子。通过选择创建新的帽子,您可以为每个 URI 创建单独的配置文件。这允许您为每个请求创建非常严格的规则。
如果处理的 URI 不需要作重大的处理或因为其它原因而不具有重大的安全危险,您可以安全地选择以默认的帽子来处理此 URI,这是默认的安全配置文件。
在演示中,我们为 URI phpsysinfo-dev 及其后续访问创建一个新帽子。使用配置文件实用程序,我们将添加的内容委托给此新帽子。由此生成的帽子将成为一个防卫森严的容器,此容器包含将 phpsysinfo-dev URI 传递到 Apache 万维网服务器时服务器上执行的所有处理。
在本演示中,我们生成应用程序 phpsysinfo 的配置文件(有关详细信息,请参见 http://phpsysinfo.sourceforge.net)。假定 phpsysinfo-dev 包安装在洁净(全新)安装的 Novell AppArmor 中的 /srv/www/htdocs/phpsysinfo-dev/ 下面。
一旦安装了 phpsysinfo-dev,您就可以将帽子添加到 Apache 配置文件了。在 Novell AppArmor GUI 中,选择。
![]() |
在中,输入 httpd2-prefork。
单击。窗口打开。
![]() |
在终端窗口中输入 rcapache2 restart 以重启动 Apache。
![]() | 注意 |
|---|---|
重新启动您正在构建配置文件的所有程序。 | |
在万维网浏览器窗口中打开 http://localhost/phpsysinfo-dev/。浏览器窗口应显示网络使用情况和系统信息。
![]() | 注意 |
|---|---|
您应当刷新此页面,以确保服务器会处理此请求并且您查看的不是浏览器中缓存的数据。要刷新页面,请单击浏览器按钮,这样可确保 Apache 会处理 URI | |
单击。Novell AppArmor 启动 logprof 工具,此工具对上一步中了解到的所有信息进行扫描。此时开始提示您有关配置文件的问题。
在本演示中,logprof 首先提示还是,因为它注意到 phpsysinfo-dev 访问了一个 URI。选择。
![]() |
单击。
在上一步中选择会在配置文件中创建一个新帽子,而且有关脚本动作的后续问题将被指定为添加到新创建的帽子,而不是此应用程序的默认帽子。
在下一屏幕中,Novell AppArmor 显示脚本执行的外部程序。您可以指定程序在 phpsysinfo-dev 帽子的限制下运行(选择),在单独配置文件的限制下运行(选择),或者在不受限制或没有任何安全配置文件的情况下运行(选择)。在选择选项的情况下,如果程序的配置文件尚不存在,则会为此程序创建一个新的配置文件。
![]() | 注意 |
|---|---|
选择可能造成重大的安全漏洞,请慎重选择。 | |
![]() |
剩余的问题将提示您生成新帽子并将条目添加到配置文件及其帽子中。第 3.3.1 节 “使用向导添加配置文件” (↑Novell AppArmor 2.0 管理指南)一节将详细介绍将条目添加到配置文件的过程。
回答所有构建配置文件的问题后,单击以保存更改并退出向导。
下面为 phpsyinfo-dev 帽子的示例。
例 5.1. phpsysinfo-dev 帽子示例
^phpsysinfo {
#include <program-chunks/base-files>
/bin/df ix,
/bin/bash ix,
/dev/tty rw,
/etc/SuSE-release r,
/etc/fstab r,
/etc/hosts r,
/etc/mtab r,
/proc/** r,
/sbin/lspci ix,
/srv/www/htdocs/sysinfo/** r,
/sys/bus/pci/devices r,
/sys/devices/** r,
/usr/bin/who ix,
/usr/share/pci.ids r,
/var/log/apache2/{access,error}_log w,
/var/run/utmp r,
}
![]() | 注意 |
|---|---|
只有在进程运行于父配置文件 | |
使用对话框时(有关使用方法,请参见第 3.3.3 节 “编辑配置文件” (↑Novell AppArmor 2.0 管理指南)),或者使用添加新的配置文件时(有关使用方法,请参见第 3.3.2 节 “手动添加配置文件” (↑Novell AppArmor 2.0 管理指南)),您具有将帽子(子配置文件)添加到 Novell AppArmor 配置文件的选项。
您可以通过 窗口添加 ChangeHat 子配置文件。
![]() |
![]() | 注意 |
|---|---|
有关 Novell AppArmor 配置文件的示例,请参见例 5.1 “phpsysinfo-dev 帽子示例” (↑Novell AppArmor 2.0 管理指南)。 | |