アプリケーションのプロファイルの開始

以下の項目を慎重に考慮し、Novell AppArmorをうまくシステムへ導入する準備をします。

  1. プロファイルするアプリケーションを判別します。 詳細は48.3.1項 「プロファイルするアプリケーションの選択」を参照してください。

  2. 48.3.2項 「プロファイルの作成と変更」に概略が説明されているように、必要なプロファイルを作成します。 結果を確認し、必要な場合プロファイルを調整します。

  3. AppArmorレポートを実行し、セキュリティイベントを処理して、システムの経過を追跡してください。 48.3.3項 「Novell AppArmorイベントの通知およびレポートの設定」を参照してください。

  4. 使用する環境が変わるとき、またはAppArmorのレポートツールによりログに記録されたセキュリティイベントに対応する必要があるときは常に、プロファイルを更新します。 48.3.4項 「プロファイルの更新」を参照してください。

プロファイルするアプリケーションの選択

特定の設定のもとで攻撃にさらされるプログラムのみ保護する必要があるため、実際に実行するこれらのアプリケーションにのみプロファイルを使用します。 最も候補となりそうなアプリケーションを判別するには、以下の一覧を使用してください。

ネットワークエージェント

オープンネットワークポートがあるプログラム(サーバおよびクライアント) メールクライアントおよびWebブラウザなどのユーザクライアントは、権限を仲介します。これらのプログラムは、ユーザのホームディレクトリへの書き込み権限を使用して実行され、敵意のあるWebサイトおよび電子メールによる悪意のあるコードなど、潜在的に敵意のあるリモートのソースからの入力を処理します。

Webアプリケーション

Webブラウザを使用して呼び出されるプログラムです。CGI Perlスクリプg、PHPページ、およびさらに複雑なWebアプリケーションを含みます。

lcronジョブ

cronデーモンが定期的に実行するプログラムは、さまざまなソースからの入力を読み取ります。

オープンネットワークポートで現在実行しているプロセス、および制限するプロファイルを必要とするプロセスを確認するには、rootとしてaa-unconfinedを実行します。

例 48.1. aa-unconfinedの出力

19848 /usr/sbin/cupsd not confined
19887 /usr/sbin/sshd not confined
19947 /usr/lib/postfix/master not confined
29205 /usr/sbin/sshd confined by '/usr/sbin/sshd (enforce)'

上記の例の制限なしのプロセスは、制限するカスタムプロファイルを必要とする場合があります。 confined byというラベル付きのものは、すでにAppArmorにより保護されています。

[Tip]詳細情報

プロファイルを作成するアプリケーションを正しく選択するための方法については、項 「Determining Programs to Immunize」 (第1章 Immunizing Programs, ↑Novell AppArmor 管理ガイド)を参照してください。

プロファイルの作成と変更

SUSE Linux Enterprise上のNovell AppArmorは、最も重要なアプリケーション向けに、事前に設定されたプロファイルセットを備えています。 さらに、AppArmorを使って任意のアプリケーションに対する独自のプロファイルを作成することもできます。

プロファイルの管理には2つの方法があります。 一つはYaST Novell AppArmorモジュールにあるグラフィカルフロントエンドを使用すること、もう一つはAppArmorスイートにあるコマンドラインツールを使用することです。 いずれの方法も同様に機能します。

48.3.1項 「プロファイルするアプリケーションの選択」で示されているように、aa-unconfinedを実行すると、プロファイルを安全モードで実行する必要があるアプリケーションの一覧を識別できます。

各アプリケーションでプロファイルを作成するには、以下のステップを行ってください。

  1. rootとしてログインし、aa-genprof programnameを実行してAppArmorにアプリケーションのプロファイルの概要を作成させます。

    または

    基本的なプロファイルの概要を作成するには、[YaST]+[Novell AppArmor]+[プロファイルの追加ウィザード]の順に選択してウィザードを実行し、プロファイルを作成するアプリケーションの完全パスを指定します。

    基本的なプロファイルの概要が表示され、AppArmorはラーニングモードに設定されます。実行中のプログラムの任意の処理がログに記録されますが、処理は制御されません。

  2. AppArmorがアプリケーションの動作の非常に具体的な像を得られるよう、アプリケーションの動作の全範囲を実行します。

  3. ステップ 2で生成されたログファイルをAppArmorに分析させるには、aa-genprofでSキーを押します。

    または

    [プロファイルの追加ウィザード][AppArmorイベントのシステムログのスキャン]をクリックして、ウィザードの指示に従いプロファイルを完成させて、ログを分析します。

    AppArmorはアプリケーションの実行中に記録したログをスキャンし、記録された各イベントへのアクセス権を設定するよう求めます。 各ファイルへのアクセス権を設定するか、またはグロッビングを使用します。

  4. アプリケーションの複雑さによっては、ステップ 2ステップ 3を繰り返す必要があります。 アプリケーションを制限し、制限された状況下で試してみて、新しいログイベントを生成します。幅広いアプリケーションを適切に制限するために、この手順を何回か繰り返さなければならないこともあります。

  5. 一度アクセス権が設定されると、プロファイルは強制モードに設定されます。 プロファイルが適用され、作成されたプロファイルに従ってAppArmorはアプリケーションを制御します。

    既存のプロファイルがコンプレインモードであったアプリケーションに対しaa-genprofを起動すると、このプロファイルでは、このラーニングサイクルを終了する際にラーニングモードを保持します。 プロファイルのモード変更の詳細は、項 「aa-complain—Entering Complain or Learning Mode」 (第4章 Building Profiles from the Command Line, ↑Novell AppArmor 管理ガイド)と項 「aa-enforce—Entering Enforce Mode」 (第4章 Building Profiles from the Command Line, ↑Novell AppArmor 管理ガイド)を参照してください。

制限したアプリケーションを使用し、必要なすべての処理を行って、プロファイルの設定をテストしてください。 通常、制限されたプログラムは円滑に実行し、ユーザがAppArmorの動作に気付くことはありません。 しかし、アプリケーションのある種の間違いに気付いた場合、システムログを確認して、AppArmorが必要以上にアプリケーションを抑制していないかを確認します。 システムで使われているログのメカニズムに応じて、AppArmorのログエントリを参照できる場所も変わります。

/var/log/audit/audit.log

auditパッケージがインストールされ、auditdが動作している場合、AppArmorイベントは次のように記録されます。

type=APPARMOR msg=audit(1140325305.502:1407): REJECTING w access to
/usr/lib/firefox/update.test (firefox-bin(9469) profile
/usr/lib/firefox/firefox-bin active /usr/lib/firefox/firefox-bin)
/var/log/messages

auditdが使われていない場合、AppArmorイベントは/var/log/messagesの標準システムログに記録されます。 ログエントリの例を以下に示します。

Feb 22 18:29:14 dhcp-81 klogd: audit(1140661749.146:3): REJECTING w access
to /dev/console (mdnsd(3239) profile /usr/sbin/mdnsd active /usr/sbin/mdnsd)
dmesg

auditdが動作していない場合、dmesgコマンドを使ってAppArmorイベントを確認することもできます。

audit(1140661749.146:3): REJECTING w access to /dev/console (mdnsd(3239)
profile /usr/sbin/mdnsd active /usr/sbin/mdnsd)

プロファイルを調整するには、ステップ 3の説明に従って、このアプリケーションに関連するログメッセージを分析します。 プロンプトが表示されたら、アクセス権またはアクセス制限を指定します。

[Tip]詳細情報

プロファイルの作成と変更の詳細は、第 1 章 Profile Components and Syntax (↑Novell AppArmor 管理ガイド)、第 1 章 Building and Managing Profiles with YaST (↑Novell AppArmor 管理ガイド)、および第 1 章 Building Profiles from the Command Line (↑Novell AppArmor 管理ガイド)を参照してください。

Novell AppArmorイベントの通知およびレポートの設定

セキュリティイベントの確認を行えるよう、Novell AppArmorでイベントの通知を設定します。 イベントの通知は、選択した重要度レベルのもとで全体に及ぶNovell AppArmor動作が発生したときに、特定の電 この機能は現在、YaSTインタフェースから入手できます。

YaSTでイベントの通知を設定するには、以下のように進めます。

  1. イベントの通知を配信するには、システムでメールサーバが実行していることを確認します。

  2. rootとしてログインし、YaSTを起動します。 次に、[Novell AppArmor]、+[AppArmorコントロールパネル]の順に選択します。

  3. [セキュリティイベント通知を有効にする][環境設定]を選択します。

  4. 各レコードの種類([簡潔][概要]および[詳細])に対し、レポートの頻度を設定し、レポートを受け取る電子メールアドレスを入力し、記録するイベントの重要度を判定します。 イベントレポートに未知のイベントを含める場合は、[未知の重要度イベントを含める]をオンにします。

    [Note]ログするイベントの選択

    AppArmorのイベント分類に精通している場合意外は、すべてのセキュリティレベルのイベントについて通知を受けることを選択します。

  5. [OK]+[完了]の順にクリックして設定を適用し、このダイアログを終了します。

Novell AppArmorレポートを使用すると、aa-logprofツールだけに役立つ扱いにくいメッセージを手動で取捨選択することなく、ログファイルにレポートされた重要なNovell AppArmorセキュリティイベントを参照できます。 レポートのサイズは、日付またはプログラム名の範囲でフィルタリングをして絞り込むことができます。

AppArmorのレポートを設定するには、以下の手順に従います。

  1. rootとしてログインし、YaSTを起動します。 [Novell AppArmor]+[AppArmorレポート]の順に選択します。

  2. 調べたいレポートの種類を選択するか、または[エグゼクティブセキュリティサマリ][アプリケーション監査]、および[セキュリティ問題レポート]から設定します。

  3. [編集]を選択して要求されたデータを表示し、レポート生成の頻度、電子メールアドレス、エクスポート形式、およびレポートの場所を編集します。

  4. 選択した種類のレポートを実行するには、[今すぐ実行]をクリックします。

  5. アーカイブの参照]を選択し、レポートの種類を指定して、各種類のアーカイブされたレポートをブラウズします。

    または

    必要ないレポートを削除するか、新しいレポートを追加します。

[Tip]詳細情報

Novell AppArmorのイベント通知の設定に関する詳細は、項 「Configuring Security Event Notification」 (第6章 Managing Profiled Applications, ↑Novell AppArmor 管理ガイド)を参照してください。 レポート設定の詳細は、項 「Configuring Reports」 (第6章 Managing Profiled Applications, ↑Novell AppArmor 管理ガイド)を参照してください。

プロファイルの更新

ソフトウェアおよびシステムの設定は、時間とともに変化します。 そのため、状況に応じてAppArmorのプロファイル設定を微調整する必要があります。 AppArmorでは、システムログや他のAppArmorイベントをチェックして、ポリシーに違反するイベントが発生していないかどうかを確認し、必要に応じてプロファイルを調整できます。 また、プロファイルの定義外であるアプリケーションの動作はすべて、[プロファイルウィザードの更新]を使用して処理できます。

プロファイルセットを更新するには、以下のように進めます。

  1. rootとしてログインし、YaSTを起動します。

  2. [Novell AppArmor]+[プロファイルウィザードの更新]を選択します。

  3. 指示が出たら、リソースまたはログされた実行ファイルに対してアクセスを調整するか権限を実行します。

  4. すべての質問に答えたら、YaSTを閉じます。 変更は各プロファイルに適用されます。

[Tip]詳細情報

システムログからプロファイルを更新する方法の詳細については、項 「Updating Profiles from Log Entries」 (第3章 Building and Managing Profiles with YaST, ↑Novell AppArmor 管理ガイド)を参照してください。