4.4 AppArmorによる権限の制限

セキュリティの脆弱性の多くは、信頼されたプログラムから発生します。信頼されたプログラムは攻撃者が好む権限を使用して実行され、プログラムに攻撃者にそのような権限を許可してしまうバグがあると、そのプログラムは信頼性を維持できなくなります。

NovellŪ AppArmorは、疑わしいプログラムに与える権限を最小限に抑えるように特別に設計された、アプリケーションセキュリティソリューションです。そのアプリケーションへのセキュリティprofileプログラムがアクセスできるファイル、およびプログラムが行える処理の一覧を展開して、AppArmorはそのプログラムが行える処理の領域を管理者が指定できるようにします。

効果的にコンピュータシステムを強固にするには、権限を仲介するプログラムの数を最小限に抑え、できるだけプログラムを安全にすることが必要です。Novell AppArmorを使用すると、使用する環境下で攻撃にさらされたプログラムをプロファイルするだけで済み、コンピュータを強固にするために必要な労力は軽減されます。AppArmorプロファイルはポリシーを強制し、プログラムがなすべきことを行い、それ以外は行わないことを確実にします。

管理者に必要なことは 攻撃されやすいアプリケーションに注意を払い、それらのアプリケーションへのプロファイルを生成することだけです。システムを強固にすることは結局、AppArmorプロファイルセットを構築および管理し、AppArmorのレポート機能がログに記録した、任意のポリシー違反または例外を監視することに帰着します。

AppArmorプロファイルを構築してアプリケーションを制限することは、非常に直接的で直観的な作業です。AppArmorはプロファイルの作成を支援するツールを備えています。AppArmorではユーザがプログラミングまたはスクリプト処理をする必要はありません。管理者が行うべき唯一の処理は、最も厳しいアクセスのポリシー、および強固にするべき各アプリケーションへの実行権限のポリシーを判定することです。

ソフトウェアの設定または、動作の望ましい領域が変更になる場合のみ、アプリケーションプロファイルの更新および変更が必要です。AppArmorはプロファイルの更新または変更を扱う直感的なツールを備えています。

ユーザがAppArmorに気付くことはありません。「画面の背後」で実行され、ユーザの操作を必要としません。AppArmorによりパフォーマンスが著しく低下することはありません。あるアプリケーションの動作がAppArmorプロファイルを使用していない場合、またはあるアプリケーションの動作をAppArmorが避けている場合、管理者は、このアプリケーションのプロファイルを調整して、これらの動作を網羅する必要があります。

このガイドでは、AppArmorを使用して処理するべき基本的な作業の概要を述べ、効果的にシステムを強固にします。詳細については、 『Novell AppArmor 2.0 アドミニストレーションガイド』を参照してください。

4.4.1 Novell AppArmorのインストール

GNOMEまたはKDEのデスクトップの選択をインストールしているユーザは、このセクションを省略できます。これらの選択の一部としてデフォルトでNovell AppArmorがインストールされるためです。

これらをいずれもインストールしていない場合、または完全なテキストベースの環境を希望する場合、以下の処理を行い、YaSTパッケージマネージャを使用して必要なパッケージをインストールします。

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

  2. YaSTコントロールセンターで[ソフトウェア]+[ソフトウェアの管理]を選択します。

  3. YaSTの検索機能を使用して(キーワードは「AppArmor」)、以下のパッケージをインストールします。

    • apparmor-parser

    • libapparmor

    • apparmor-docs

    • yast2-apparmor

    • apparmor-profiles

    • apparmor-utils

  4. これらのインストールするパッケージをすべて選択し、[承認]を選択します。YaSTではすべての依存関係を解決し、すべてのパッケージをインストールします。

  5. YaSTがシステム設定の更新を終えたら、[完了]を選択してパッケージマネジャーをそのままにします。

4.4.2 Novell AppArmorの有効化

Novell AppArmorをインストールしたら、明示的に有効にして、システムが起動したときに常に稼動することを確認できるようにします。この作業にはYaSTシステムサービス(Runlevel)モジュールを使用します。

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

  2. システム+システムサービス(Runlevel)を起動します。

  3. 表示されるサービスの一覧で、apparmorを選択します。図 4.3. 「YaSTを使用したNovell AppArmorの有効化」を参照してください。

  4. AppArmorを永続的に有効にするには、[有効にする]をクリックします。

  5. [完了]をクリックして設定を受け入れます。

図 4.3 YaSTを使用したNovell AppArmorの有効化

YaSTを使用したNovell AppArmorの有効化

YaSTランレベルツールを使用すると、永続的にサービスを有効にできます。これらの設定はシステムの再起動後も有効です。AppArmorを一時的に1つのセッションが存続する間のみ有効にするには、以下のように進めます。

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

  2. [Novell AppArmor]+[AppArmorコントロールパネル]を開始します。

  3. [設定]+[有効にする]+[OK]の順にクリックして、[AppArmorの状態][AppArmorは有効]に設定します。

  4. [完了]をクリックして設定を適用します。

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

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

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

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

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

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

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

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

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

プログラム(サーバおよびクライアント)にはオープンネットワークポートがあり、ネットワークエージェントはそれらのネットワークポートに対応するサーバプログラムです。ユーザクライアント(メールクライアントとWebブラウザ)はまた、ネットワークポートを開き、権限を仲介します。

Webアプリケーション

CGI Perlスクリプト、PHPページ、およびさらに複雑なWebアプリケーションはWebブラウザ経由で呼び出されます。

cronジョブ

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

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

例 4.1 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]関連資料

プロファイルするアプリケーションを正しく選択するには、「免疫を与えるプログラムの選択」の章を参照してください(『Novell AppArmor 2.0 アドミニストレーションガイド』)。

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

SUSE Linux上のNovell AppArmorは、最も重要なアプリケーション向けに、事前に設定されたプロファイルセットを備えています。 さらにAppArmorを使用して、/etc/apparmor/README.profilesで定義されたアプリケーションのセットへの独自のプロファイルを作成できます。

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

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

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

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

    または

    [YaST]+[Novell AppArmor]+[プロファイルウィザードの追加]を実行し、プロファイルするアプリケーションの完全パスを指定します。

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

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

  3. ステップ 2が生成したログファイルをAppArmorに分析させます。これは、genprofで「S」とタイプして行います。

    または

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

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

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

    既存のプロファイルがコンプレインモードであったアプリケーションに対しgenprofを起動すると、このプロファイルでは、このラーニングサイクルを終了する際にラーニングモードを保持します。プロファイルモードの変更に関する詳細については、「コンプレインモードまたはラーニングモード」のセクション(『Novell AppArmor 2.0 アドミニストレーションガイド』の第3章「Novell AppArmorプロファイルの設定」)および「強制モード」のセクション(『Novell AppArmor 2.0 アドミニストレーションガイド』の第3章「Novell AppArmorプロファイルの設定」)を参照してください。

制限したアプリケーションを使用し、必要なすべての処理を行って、プロファイルの設定をテストしてください。通常、制限されたプログラムは円滑に実行し、ユーザがAppArmorの動作に気付くことはありません。しかし、アプリケーションのある種の間違いに気付いた場合、システムログを確認して、AppArmorが必要以上にアプリケーションを抑制していないかを見ます。/var/log/messagesで適切なログを検索するか、またはdmesgを実行します。

以下の例に似ている出力はいずれも、AppArmorが必要以上にアプリケーションを抑制していることを示唆しています。

AppArmor: REJECTING w access to /var/run/nscd/socket (traceroute(2050) profile
/usr/sbin/traceroute active /usr/sbin/traceroute)

このプロファイルを調整するには、上記で示されているように[プロファイルウィザードの追加]を再び実行し、この特定のアプリケーションに関連するログメッセージを分析します。YaSTがプロンプトを表示したら、アクセス権またはアクセス制御を判別します。

[Tip]関連資料

プロファイルの設定および修正についての詳細は、「Novell AppArmorプロファイルの設定」(『Novell AppArmor 2.0 アドミニストレーションガイド』)の章を参照してください。

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

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

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

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

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

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

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

    または

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

[Tip]関連資料

Novell AppArmorでのイベントの通知設定に関する詳細は、「「イベントの通知設定」」(『Novell AppArmor 2.0 アドミニストレーションガイド』の第4章「プロファイルしたアプリケーションの管理」 )セクションを参照してください。レポート設定に関する詳細については、「「レポート」」(『Novell AppArmor 2.0 アドミニストレーションガイド』の第4章「プロファイルしたアプリケーションの管理」)セクションを参照してください。

4.4.3.4 プロファイルの更新

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

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

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

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

  3. プロンプトが表示されたら、アクセス権またはリソースや記録された実行可能ファイルに対する実行権限を調整します。

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

[Tip]関連資料

システムログからプロファイルを更新する詳細については、「「syslogエントリからのプロファイルの更新」」(『Novell AppArmor 2.0 アドミニストレーションガイド』の第3章「Novell AppArmorプロファイルの設定)セクションを参照してください。