NovellŪ AppArmorプロファイルとは、個々のプログラム インスタンスやプロセスのセキュリティポリシーを表します。これは実行プログラムに適用されますが、プログラムの一部が他の部分と異なるアクセス権を必要とする場合に、プログラムは「change hat(hatの変更)」を行い、メインプログラムとは異なる独自のセキュリティコンテキストを使用します。hatまたはサブプロファイルと呼ばれます。
ChangeHatにより、プログラムでNovell AppArmor プロファイル内のhatを変更できます。セキュリティをプロセスよりも細かいレベルで定義できます。
この機能を使用するには、各アプリケーションで「changehat aware」に設定する必要があります。つまり、この変更により、アプリケーションの実行中に適宜、セキュリティドメインを切り替えるよう、Novell AppArmorモジュールに要求することができます。
プロファイルは任意の数のサブプロファイルをもつことができますが、階層は2つしかありません。サブプロファイルの中でさらにサブプロファイルを設定することはできません。サブプロファイルは独立したプロファイルとして記載され、親プロファイル名とサブプロファイル名を^で区切った名前が付けられます。サブプロファイルは親プロファイルと同じファイルに保存する必要があります。
![]() | 注意 |
|---|---|
詳細については | |
Novell AppArmor には、Apacheプログラムのためのmod-apparmorモジュールがあります。mod-apparmorモジュールはSUSE Linux上で動作し、Apache Webサーバが「ChangeHatを認識」できるようにします。システム上にApacheがあればインストールされます。
ApacheがChangeHatを認識する状態のとき、以下のカスタマイズされたNovell AppArmorセキュリティプロファイルを、受け取った各URI要求の順番で確認します。
URI指定のhat(たとえば、^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を管理するために2つの方法、つまり、YaSTまたはコマンドラインインターフェイスを使用できます。コマンドラインを使用するとChangeHat認識アプリケーションをより柔軟に管理することができますが、プロセスはより複雑です。いずれの方法でも、アプリケーションに対してhatを管理し、プロファイルの登録にhatをあてがうことができます。
以下の手順により、YaSTを使用してApacheのプロファイルにhatを追加するデモを行います。では、Novell AppArmorプロファイルユーティリティにより、明確なURIを要求するための新しいhatを作成するよう求められます。[新しいhatの作成]を選択すると、各URIに対し個別のプロファイルを作成することができます。これにより、各要求に応じて厳密な規則を作成することができます。
処理されるURIが重要な処理を行わない場合や重大なセキュリティリスクを伴わない場合、を選択してこのURIをデフォルトのhatで処理することができます。これはデフォルトのセキュリティプロファイルです。
デモでは、URIphpsysinfo-devへの新しいhatおよびその後のそれへのアクセスを作成します。プロファイルユーティリティを使用すると、新しいhatに追加される設定を委任することができます。その結果hatはphpsysinfo-devURIがApache Webサーバーに渡ったときに起こるサーバー上での処理をすべて網羅する、セキュリティの固い容器となります。
このデモでは、phpsyinfoアプリケーションのためのプロファイルを作成します(詳細についてはhttp://phpsysinfo.sourceforge.netを参照してください)。phpsysinfoパッケージは/srv/www/htdocs/phpsysinfo-dev/の下に、Novell AppArmorの新規インストールの過程でインストールされることが想定されています。
phpsysinfo-devがインストールされると、Apacheプロファイルにhatを追加することができます。Novell AppArmor GUIからを選択します。
![]() |
で、httpd2-preforkと入力します。
をクリックします。ウィンドウが開きます。
![]() |
ターミナルウィンドウで rcapache2 restartと入力し、Apacheを再起動します。
![]() | 注意 |
|---|---|
この時にプロファイルしているプログラムを再起動します。 | |
Webブラウザ画面でhttp://localhost/phpsysinfo-dev/を開きます。ブラウザのウィンドウではネットワークの使用およびシステム情報について表示されます。
![]() | 注意 |
|---|---|
この要求がサーバーにより処理されることを確認したいときに、キャッシュされたデータをブラウザで見直していない場合は、ページを最新の情報に更新します。 これを行うには、ブラウザのボタンをクリックし、Apacheが | |
をクリックします。Novell AppArmorはこれまでのステップで習得した情報をすべてスキャンするlogprofツールを開始します。プロファイルへの質問が表示されます。
デモでは、logprofで最初に、またはを選択することが求められます。これはphpsysinfo-devがURIにアクセスしたためです。を選択します。
![]() |
をクリックします。
ここでを選択すると、プロファイルに新しいhatが作成され、その後スクリプトが行う処理についての質問が、このアプリケーションのデフォルトのhatにではなく新規作成されたhatに追加されることを示します。
次の画面で、Novell AppArmorはスクリプトが実行した外部プログラムを表示します。プログラムをphpsysinfo-dev hatで囲み実行するのか(を選択する場合)、別のプロファイルで囲み実行するのか(を選択する場合)、囲まずにまたはセキュリティプロファイルなしで実行するのか(を選択する場合)を指定することができます。オプションを選択する場合、プロファイルがなければ新しく作成されます。
![]() | 注意 |
|---|---|
を選択する場合、深刻なセキュリティホールが生まれるため、注意する必要があります。 | |
![]() |
残りの質問では、新しいhatを作成し、プロファイルおよびhatにエントリを追加するよう求められます。プロファイルにエントリを追加するプロセスについては、3.3.1項 「ウィサードを使用してプロファイルを追加する」 (↑Novell AppArmor 2.0アドミニストレーションガイド)に記載されています。
プロファイルの質問すべてに答えたら、をクリックして変更を保存し、ウィザードを終了します。
以下は、phpsyinfo-dev hatの具体例です。
例 5.1 phpsysinfo-dev Hatの例
^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プロファイルにhat(サブプロファイル)をオプションで追加できます。
ウィンドウからChangeHatのサブプロファイルを追加することができます。
![]() |
![]() | 注意 |
|---|---|
Novell AppArmorプロファイルの例については、例 5.1. 「phpsysinfo-dev Hatの例」 (↑Novell AppArmor 2.0アドミニストレーションガイド)を参照してください。 | |