第 5 章 使用 ChangeHat Apache 构建万维网应用程序的配置文件

目录

5.1. Apache ChangeHat
5.2. Apache 中对 mod-apparmor 的配置

NovellŽ AppArmor 配置文件表示单个程序实例或进程的安全策略。它适用于一个可执行程序,但是,如果该程序的一部分需要与其它部分不同的访问权限,该程序可以“变换帽子”以使用有别于主程序访问权限的安全环境。这称作帽子子配置文件

ChangeHat 使程序能够在 Novell AppArmor 配置文件内变换帽子。这样您就可以定义比进程更细级别的安全性。

此功能要求您将各应用程序配置为“感知 changehat”,表示将其修改为可以在执行应用程序期间不限次数地向 Novell AppArmor 模块发出转换安全域的请求。

配置文件可以拥有任意数目的子配置文件,但一共只有两个层次:子配置文件不能进一步拥有子子配置文件。子配置文件以单独配置文件的形式书写,命名方式为在包含它的配置文件后面加上子配置文件名称,用 ^ 分隔。子配置文件必须保存在与父配置文件相同的文件中。

[Note]注意

有关详细信息,请参见 change_hat 手册页。


5.1. Apache ChangeHat

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。

[Note]注意

如果安装不带 Novell AppArmor 的 mod-apparmor,您必须在 Apache 配置文件中添加如下一行,以确保 Apache 装载模块在配置文件中具有装载 mod-apparmor 模块的命令:

LoadModule change_hat_module modules/mod_change_hat.so

5.1.1. 可感知 ChangeHat 应用程序的管理工具

与多数 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/ 下面。

  1. 一旦安装了 phpsysinfo-dev,您就可以将帽子添加到 Apache 配置文件了。在 Novell AppArmor GUI 中,选择添加配置文件向导

    添加配置文件向导
  2. 要添加的配置文件中,输入 httpd2-prefork

  3. 单击创建配置文件AppArmor 构建配置文件向导窗口打开。

    AppArmor 构建配置文件向导
  4. 在终端窗口中输入 rcapache2 restart 以重启动 Apache。

    [Note]注意

    重新启动您正在构建配置文件的所有程序。

  5. 在万维网浏览器窗口中打开 http://localhost/phpsysinfo-dev/。浏览器窗口应显示网络使用情况和系统信息。

    [Note]注意

    您应当刷新此页面,以确保服务器会处理此请求并且您查看的不是浏览器中缓存的数据。要刷新页面,请单击浏览器刷新按钮,这样可确保 Apache 会处理 URI phpsysinfo-dev 的请求。

  6. 单击扫描将添加到配置文件的条目的系统日志。Novell AppArmor 启动 logprof 工具,此工具对上一步中了解到的所有信息进行扫描。此时开始提示您有关配置文件的问题。

  7. 在本演示中,logprof 首先提示添加请求的帽子还是使用默认的帽子,因为它注意到 phpsysinfo-dev 访问了一个 URI。选择添加请求的帽子

    AppArmor 配置文件向导:添加请求的帽子
  8. 单击允许

    在上一步中选择添加请求的帽子会在配置文件中创建一个新帽子,而且有关脚本动作的后续问题将被指定为添加到新创建的帽子,而不是此应用程序的默认帽子。

    在下一屏幕中,Novell AppArmor 显示脚本执行的外部程序。您可以指定程序在 phpsysinfo-dev 帽子的限制下运行(选择继承),在单独配置文件的限制下运行(选择配置文件),或者在不受限制或没有任何安全配置文件的情况下运行(选择不限制)。在选择配置文件选项的情况下,如果程序的配置文件尚不存在,则会为此程序创建一个新的配置文件。

    [Note]注意

    选择不限制可能造成重大的安全漏洞,请慎重选择。

    AppArmor 配置文件向导:继承
    1. /bin/bash 路径选择继承。这会将 /bin/bash/(由 Apache 访问)以必要的权限添加到 phpsysinfo-dev 帽子配置文件。

    2. 单击允许

  9. 剩余的问题将提示您生成新帽子并将条目添加到配置文件及其帽子中。第 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,
  }
[Note]注意

只有在进程运行于父配置文件 httpd2-prefork 之下的情况下,配置文件 ^phpsysinfo-dev 才有效。

5.1.2. 将帽子和条目添加到帽子

使用编辑配置文件对话框时(有关使用方法,请参见第 3.3.3 节 “编辑配置文件” (↑Novell AppArmor 2.0 管理指南)),或者使用手动添加 Novell AppArmor 配置文件添加新的配置文件时(有关使用方法,请参见第 3.3.2 节 “手动添加配置文件” (↑Novell AppArmor 2.0 管理指南)),您具有将帽子(子配置文件)添加到 Novell AppArmor 配置文件的选项。

您可以通过 AppArmor 配置文件对话框窗口添加 ChangeHat 子配置文件。

AppArmor 配置文件对话框
  1. AppArmor 配置文件对话框窗口中,单击添加条目,然后选择帽子。此时会开启输入帽子名称对话框:

    输入帽子名称
  2. 输入帽子的名称以添加到 Novell AppArmor 配置文件。此名称为 URI,此 URI 被访问时将接收到帽子中设定的权限。

  3. 单击创建帽子。返回到 AppArmor 配置文件对话框屏幕。

  4. 添加新帽子后,单击完成

[Note]注意

有关 Novell AppArmor 配置文件的示例,请参见例 5.1 “phpsysinfo-dev 帽子示例” (↑Novell AppArmor 2.0 管理指南)