第22章 YaST を利用したプロファイルの構築と管理

目次

22.1. ウイザードを使用したプロファイルの追加
22.2. 手作業でのプロファイル追加
22.3. プロファイルの編集
22.4. プロファイルの削除
22.5. ログ項目からのプロファイル更新
22.6. AppArmor の管理

YaST では、 AppArmor® のプロファイルを構築したり管理したりするのに便利な 仕組みを提供しています。また、 YaST では 2 種類のインターフェイスが用意 されていて、それぞれグラフィカルなインターフェイスとテキストベースの インターフェイスです。テキストベースのインターフェイスは、コンピュータの 資源を大きく消費することもなく、ネットワーク帯域も小さくて済むため、 リモートからの管理や何らかの事情で GUI が使用できない場合に便利な方法 です。それぞれのインターフェイスは異なる外観ですが、機能も操作手順も全く 同一になっています。それ以外の方法として存在するのが、 AppArmor のコマンドを 利用する方法です。端末ウインドウやリモート接続から AppArmor を制御する方法で、 こちらの使い方は 第23章 コマンドラインからのプロファイル構築 で説明しています。

メインメニューから YaST を起動し、ダイアログが表示された場合は root のパスワードを入力します。これ以外にも、端末ウインドウを開いて root に なったあと、 yast2 または yast と入力 することで YaST を起動することもできます。前者の場合はグラフィカルな インターフェイスが、後者の場合はテキストベースのインターフェイスが表示され ます。

図22.1 AppArmor に対する YaST の制御

AppArmor に対する YaST のメインコントロール

右側の枠には AppArmor のオプションが表示されます:

AppArmor プロファイルウイザード

詳しい手順については、 22.1項 「ウイザードを使用したプロファイルの追加」 をお読みください。

手作業でプロファイルを追加

お使いのシステムにあるアプリケーションに対して、ウイザードの助けを 借りずに AppArmor のプロファイルを追加します。詳しい手順については、 22.2項 「手作業でのプロファイル追加」 をお読みください。

プロファイルの編集

お使いのシステムにある既存の AppArmor プロファイルを編集します。詳しい 手順については 22.3項 「プロファイルの編集」 をお読みください。

プロファイルの削除

お使いのシステムにある AppArmor プロファイルを削除します。詳しい手順に ついては、 22.4項 「プロファイルの削除」 をお読みください。

プロファイルの更新ウイザード

詳しい手順については、 22.5項 「ログ項目からのプロファイル更新」 をお読みください。

AppArmor Control Panel

詳しい手順については、 22.6項 「AppArmor の管理」 をお読みください。

22.1. ウイザードを使用したプロファイルの追加

AppArmor プロファイルウイザード は、 AppArmor のプロファイルツールで ある aa-genprof (プロファイルの生成) や aa-logprof (学習モードのログファイルからの プロファイル更新) を利用したプロファイル設定ツールです。これらのツールについて、 詳しい使い方は 23.6.3項 「プロファイル作成ツールの概要」 をお読みください。

  1. プロファイル内に起動時の情報を含めるため、プロファイル作業前に アプリケーションを停止します。対象のアプリケーションやデーモンが、 動作していない状態であることを確認してください。

    アプリケーションを停止するには、端末ウインドウを開いて root になり、 rcプログラム名 stop (または /etc/init.d/プログラム名 stop) を実行します。 プログラム名 にはプロファイル対象の プログラムの名前を指定してください。

  2. YaST を起動し、 AppArmor+AppArmor プロファイルウイザード を選択します。

    プロファイルするアプリケーションの選択
  3. アプリケーションの名前を入力するか、もしくはプログラムの場所を指定します。

  4. 作成 を押します。 aa-autodep と 呼ばれる AppArmor ツールが起動し、プロファイル対象のプログラムに対して静的な 分析が行なわれます。その後、必要なプロファイルが AppArmor モジュールとして 読み込まれます。 aa-autodep について、詳しくは 23.6.3.1項 「aa-autodep—概要プロファイルの作成」 をお読みください。

    作成するプロファイルが、既にローカルのプロファイルリポジトリ内に存在する 場合 (詳しくは 21.1項 「ローカルリポジトリの使用」 をお読みください) や、外部のプロファイルリポジトリ内に存在する場合 (詳しくは 第21章 AppArmor のプロファイルリポジトリ をお読みください) 、もしくはどこにも存在していない場合によって、それぞれ 異なる手順を実施します:

    • ローカルのプロファイルリポジトリ内に既存のプロファイルが存在している 場合は、これを利用して調整することができます。手順については ステップ 5 をお読みください。

    • 外部のプロファイルリポジトリ内に既存のプロファイルが存在している 場合は、これを利用して調整することができます。手順については ステップ 6 をお読みください。

    • 何もない状態からプロファイルを作成するには、 ステップ 7 の手順を実施してください。

  5. /etc/apparmor/profiles/extra ディレクトリにある ローカルプロファイルリポジトリ内に、既にプロファイルが存在する場合、 YaST は有効化されていないプロファイルが存在する旨を表示し、これを ベースとして使用するか、もしくはこれをそのまま使用するかを尋ねます。

    もちろんこれらのプロファイルを使用せず、何もない状態からプロファイルを 作成することもできます。いずれの場合とも、 ステップ 7 に読み進めてください。

  6. 外部プロファイルリポジトリ内に既にプロファイルが存在していて、既に リポジトリ内に存在するプロファイルをはじめて作成しようとしている場合は、 サーバへのアクセス設定を行なうことができます。設定は下記のようにして 行ないます:

    1. まずは外部リポジトリへのアクセスを有効にするか、もしくはこの決定を 先延ばしにするかを選択します。 リポジトリの有効化 を選択すると、次のステップではアクセスモード (ダウンロード/アップロード) の選択を行ないます。先延ばしにしたい場合は 後で確認 を押し、 ステップ 7 に進んでください。

    2. プロファイルが配置されているリポジトリサーバについて、このアカウント 情報 (ユーザ名とパスワード) を入力し、サーバの登録を行ないます。

    3. あとは ステップ 7 の手順に従って プロファイルを使用してください。

  7. プロファイルを行ないたいアプリケーションを起動します。

  8. 可能な限りアプリケーションの機能を多く使用して、学習モードからその アプリケーションが必要とするファイルやディレクトリへのアクセスを判断 できるようにします。なお、アプリケーションの再起動や停止についても 学習させてください。 AppArmor では他のプログラム同様、これらのイベントに ついても処理を行なう必要があるためです。

  9. システムログをスキャンして AppArmor イベントを検出 を押し、 学習モードでのログファイルを処理させます。この処理では、セキュリティ プロファイルを作成するにあたって、ウイザードから多数の質問が表示される ことがあります。

    ハットの追加を求められた場合は、 第24章 ハット変更を利用した Web アプリケーションのプロファイル作成 をお読みください。

    なお、質問は大きく分けて 2 つの種類に分けられます:

    それぞれの質問に対して答えることで、プロファイル内にリソースへのアクセスか プログラムの追加を行なうことになります。それぞれの選択について、詳しくは 図22.2「学習モードの例外: 特定のリソースに対するアクセス制御」図22.3「学習モードの例外: 項目に対する実行許可の設定」 をお読みください。 続くステップでは、これらの質問に対する回答の説明を記述します。

    [Note]処理オプションの違いについて

    処理している項目の種類によって、利用可能なオプションが異なります。

    図22.2 学習モードの例外: 特定のリソースに対するアクセス制御

    学習モードの例外: 特定のリソースに対するアクセス制御

    図22.3 学習モードの例外: 項目に対する実行許可の設定

    学習モードの例外: 項目に対する実行許可の設定

  10. AppArmor プロファイルウイザード はプロファイル対象の アプリケーションがアクセスしたディレクトリパスを提案する (図22.2「学習モードの例外: 特定のリソースに対するアクセス制御」) か、もしくはそれぞれの 項目に対して実行許可の設定を求めます (図22.3「学習モードの例外: 項目に対する実行許可の設定」) 。

    • 図 22.2: 学習モードの例外: 特定のリソースに対するアクセス制御 に対しては、それぞれ必要なアクセス許可パターンを選択します。 include 句で他のファイルを参照させるか、ワイルドカード表記を利用するか、 もしくは実際のパス名を指定するかを選択することができます。状況に応じて、 それぞれ以下のオプションを利用できます:

      #include

      include ファイルと呼ばれる、他のファイルへの参照を設定します。 include ファイルはプログラムに対してアクセス許可を設定するためのもので、 これを利用すると、他のプログラムでも利用することのできる共通のファイルを 作成することができます。また、 include を利用するとプロファイルのサイズを 小さくすることにもなります。提案があった場合は、これを選択しておくのが 良いでしょう。

      ワイルドカード表記

      グロブ を押すことでアクセスできるものです。グロブ の書式について、詳しくは 20.6項 「パスとグロブ」 をお読みください。

      実際のパス名

      プログラムがアクセスする必要のあるパスについて、これをありのまま記述します。

      ディレクトリパスを選択したあとは、 許可 または 拒否 のいずれかを押して AppArmor のプロファイルに設定します。 表示されたパスが期待通りのものでない場合は、 グロブ編集 を押してそれぞれ設定を調整することができます。

      学習モードで項目を処理し、プロファイルを構築する場合、下記のオプションを 利用することができます:

      許可

      プログラムに対して、指定したディレクトリパスに対するアクセスを許可します。 AppArmor プロファイルウイザード では、ファイルへのアクセス 許可を提案します。詳しくは 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。

      拒否

      拒否 を押すと、プログラムに対して指定したパスへの アクセスを禁止することができます。

      グロブ

      これを押すと、ディレクトリパスに対してワイルドカードを適用して、 指定したディレクトリ内の全ファイルを含めるようにすることができます。 ダブルクリックを行なうと、ディレクトリパス以下にある全てのファイルと ディレクトリが含まれるようになります。グロブの文法について、詳しくは 20.6項 「パスとグロブ」 をお読みください。

      拡張子付きグロブ

      元のディレクトリパス表記を修正して、ファイル名の拡張子だけを保持する ようにします。 1 回だけ押した場合は /etc/apache2/file.ext のようなパスが /etc/apache2/*.ext となり、 ファイル名部分にワイルドカードが設定されるようになります。この場合、 左記のディレクトリ内にある .ext という拡張子の 全ファイルが含まれるようになります。ダブルクリックを行なうと、 特定の拡張子を持つ全てのファイルとサブディレクトリが含まれるように なります。

      編集

      ハイライト表示された項目を編集します。編集後の行は、一覧内の最後に 現われます。

      中止

      aa-logprof を中止し、これまでに設定した全てのルール変更を取り消します。 これにより、全てのプロファイルは修正前の状態に戻ります。

      完了

      aa-logprof を閉じ、これまでに設定した全てのルール 変更を保存します。

      それぞれの学習モードの項目に対して、 許可 または 拒否 を押します。これにより AppArmor のプロファイルの構築 を助けることになります。

      [Note]

      学習モードの項目に表示される項目数は、アプリケーションの複雑さに依存 して変化します。

    • 図 22.3: 学習モードの例外: 項目に対する実行許可の設定 に対しては、それぞれ必要なアクセス許可を選択します。 利用可能なオプションについて、詳しくは 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。

      継承

      親と同じセキュリティプロファイルを適用します。

      プロファイル

      実行されたプログラムに対して、別途のプロファイルを求めるようにします。 このオプションを選択する場合は、プロファイルを切り替える際に AppArmor が 特定の環境変数を取り除き (消毒し) 、子プロセスの動作に影響が及ばない ようにするかどうかを選択することができます。子プロセスの動作について、 これらの環境変数がどうしても必要な場合を除き、常により安全なオプションを 選択しておくことをお勧めします。

      無制限

      セキュリティプロファイル無しでプログラムを実行します。問い合わせが あった場合、親のプロセスから特定の環境変数を引き継ぐことでセキュリティ リスクを高めるようなことがないよう、環境変数の取り除き処理を行なうことも できます。

      [Warning]無制限モードでの実行のリスク

      どうしても必要な場合を除いて、無制限モードでは動作させないでください。 無制限 オプションを選択すると、新しいプログラムは AppArmor の保護無しで動作することになります。

      拒否

      拒否 を押すと、指定したパスに対するプログラムの アクセスを禁止することができます。

      中止

      aa-logprof を中止し、これまでに設定した全ての ルール変更を取り消します。これにより、全てのプロファイルは修正前の 状態に戻ります。

      完了

      aa-logprof を閉じ、これまでに設定した全ての ルール変更を保存します。

  11. アプリケーションにあるさらなる機能を試す必要がある場合は、上記までの 手順を繰り返し実施します。

    全てが完了したら 完了 を押します。続いてローカルのプロファイル セットに対して、変更点を保存するかどうかを選択します。以前の手順で、お使いの プロファイルを外部のプロファイルリポジトリにアップロードするように選択して いた場合は、作業内容に関する短い変更履歴情報を入力し、アップロード作業を 行ないます。以前の手順でプロファイルをアップロードするかどうかを選択 しなかった場合は、 YaST はここで再度プロファイルのアップロード用に アカウントを作成するかどうか、および今すぐアップロードするかどうかを それぞれ選択することができます。

    プロファイル作成ウイザード を終了すると、プロファイルは すぐにローカルとリポジトリサーバ (アップロードの設定を行なっていれば) の 両方に保存されます。また、プロファイルは AppArmor のモジュール内に読み込まれます。

22.2. 手作業でのプロファイル追加

AppArmor では、プロファイル内に手作業で項目を追加する方法でのプロファイル構築 にも対応しています。プロファイルを作成したいアプリケーションを選択してから、 項目を追加してください。

  1. YaST を起動し、 AppArmor+手作業でプロファイルを追加 を選択します。

  2. プロファイルを作成するアプリケーションを、お使いのファイルシステム内から 選択します。

  3. アプリケーションを選択したあとは 開く を押します。 AppArmor プロファイルダイアログ 内には、 基本的な構造だけを持つ何もないプロファイルが表示されます。

  4. AppArmor プロファイルダイアログ 内では、 AppArmor のプロファイル を追加/編集/削除することができます。それぞれ対応するボタンを押して作業を 行なってください。また、 22.3.1項 「項目の追加」, 22.3.2項 「項目の編集」, 22.3.3項 「項目の削除」 についてもそれぞれお読みください。

  5. 作業が完了したら 完了 を押せば完了です。

22.3. プロファイルの編集

AppArmor ではプロファイルの項目を手作業で追加/編集/削除することができます。 プロファイルを編集するには、下記の手順で実施します:

  1. YaST を起動し、 AppArmor+プロファイルの編集 を選択します。

    編集するプロファイルの選択
  2. プロファイル済みのアプリケーション一覧が表示されますので、編集したいプロファイルを 選択します。

  3. 次へ を押します。 AppArmor プロファイルダイアログ ウインドウ内にプロファイルが表示されます。

    AppArmor プロファイルダイアログ
  4. AppArmor プロファイルダイアログ 内では、 AppArmor のプロファイル を追加/編集/削除することができます。それぞれ対応するボタンを押して作業を 行なってください。また、 22.3.1項 「項目の追加」, 22.3.2項 「項目の編集」, 22.3.3項 「項目の削除」 についてもそれぞれお読みください。

  5. 作業が完了したら、 完了 を押します。

  6. ポップアップが表示されたら、 はい を押します。 するとプロファイルへの変更が保存され、 AppArmor のプロファイルセットが 再読み込みされます。

[Tip]AppArmor 内での文法チェック

AppArmor には文法チェック機能があり、 YaST の AppArmor ツールを利用して作業を 行なっていればプロファイル内の文法エラーが通知されるようになっています。 エラーが発生した場合は root でプロファイルを修正したあと、 rcapparmor reload コマンドでプロファイル セットを再読み込みしてください。

22.3.1. 項目の追加

項目の追加 オプションは、 22.2項 「手作業でのプロファイル追加」22.3項 「プロファイルの編集」 で 利用できます。 項目の追加 を選択すると、 AppArmor プロファイルに 追加する項目種類の一覧が表示されます。

一覧からいずれかを選択してください:

ファイル

ポップアップウインドウ内では、アクセスを許可するファイルについて、その絶対パスを 指定します。完了したら OK を押します。

必要であればワイルドカードを利用したグロブ表記を行なうこともできます。グロブ について、詳しくは 20.6項 「パスとグロブ」 をお読みください。また、ファイルのアクセス許可情報について、詳しくは 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。

追加するファイルの選択
ディレクトリ

ポップアップウインドウ内では、アクセスを許可するディレクトリについて、 その絶対パスを指定します。必要であればワイルドカードを利用したグロブ表記を 行なうこともできます。完了したら OK を押してください。

グロブについての、詳しくは 20.6項 「パスとグロブ」 をお読みください。また、ファイルのアクセス許可情報について、詳しくは 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。

追加するディレクトリの選択
ネットワークルール

ポップアップウインドウ内では、ネットワークファミリとソケットの種類を選択します。 詳しくは 20.5項 「ネットワークアクセス制御」 をお読みください。

ネットワークの追加
機能 (ケーパビリティ)

ポップアップウインドウ内では、必要な機能 (ケーパビリティ) を選択します。 これらはそれぞれ 32 POSIX.1e ケーパビリティを有効にするためのものです。 ケーパビリティについて、詳しくは 20.4項 「機能項目 (POSIX.1e)」 をお読みください。選択が完了したら OK を押します。

機能の選択
Include

ポップアップウインドウ内では、取り込みたいファイルを選択します。 include とは他の AppArmor プロファイル内に書かれている情報を引用して使用するための 機能です。詳しくは 20.3項 「#include ステートメント」 をお読みください。

include ファイルの選択
ハット

ポップアップウインドウ内では、現在のプロファイルに追加するサブプロファイル (ハット) の名前を指定します。名前を入力したら ハットの作成 を押してください。ハットについて、詳しくは 第24章 ハット変更を利用した Web アプリケーションのプロファイル作成 をお読みください。

22.3.2. 項目の編集

項目の編集 を選択すると、ファイルブラウザのポップアップ ウインドウが表示されます。ここから選択した項目を編集することができます。

ポップアップウインドウ内では、アクセスを許可するファイルについて、その絶対 パスを指定します。必要であれば、ワイルドカードを利用したグロブ表記を行なう こともできます。作業が完了したら OK を押します。

グロブ表記について、詳しくは 20.6項 「パスとグロブ」 をお読みください。また、ファイルアクセス許可について、詳しくは 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。

22.3.3. 項目の削除

指定したプロファイルで項目を削除するには、 項目の削除 を選択します。 AppArmor は選択したプロファイル項目を削除します。

22.4. プロファイルの削除

AppArmor ではプロファイルを手作業で削除することもできます。単純にプロファイルを 削除したいアプリケーションを選択するため、下記の手順で削除してください:

  1. YaST を起動し、 AppArmor+プロファイルの削除 を選択します。

  2. 削除するプロファイルを選択します。

  3. 次へ を押します。

  4. ポップアップウインドウが開いたら はい を押します。 するとプロファイルが削除され、 AppArmor のプロファイルセットが再読み込みされます。

22.5. ログ項目からのプロファイル更新

AppArmor プロファイルウイザードでは aa-logprof と呼ばれるツールを使用します。 このツールはログファイルを読み込み、プロファイルを更新することができます。 また、このツールでは AppArmor モジュールからのメッセージを追跡する機能があり、 お使いのシステムで発生した全てのプロファイルに対する違反事例を追跡する ことができます。これらの違反事例は、プログラムに対する何らかのプロファイル 設定が足りていないことを示しているため、本ツールを利用してプロファイルを 更新すると、それらの違反に対して設定を追加することができるようになっています。

  1. YaST を起動し、 AppArmor+プロファイルの更新ウイザード を選択します。

    プロファイルの更新ウイザード (aa-logprof) では、学習モードの ログファイルを読み込んで処理します。この処理時間中は、セキュリティプロファイルに 正しく反映させるための問い合わせメッセージが、数多く表示されます。このときの 選択は、新しいプロファイルを作成する際と同じように実施してください。詳しくは 22.1項 「ウイザードを使用したプロファイルの追加」 内の ステップ 9 をお読みください。

  2. 作業が完了したら 完了 を押します。続いて表示される ポップアップで はい を選択すると、 プロファイルの更新ウイザード を終了することができます。 これでプロファイルが保存され、 AppArmor モジュール内に読み込まれるようになります。

22.6. AppArmor の管理

AppArmor はその状態を切り替えて、有効化や無効化を行なうことができます。 AppArmor を有効に するとお使いのシステムを保護して、潜在的なプログラム保護を受けることができるように なります。 AppArmor を無効にすると、プロファイルが設定されていた場合でも、お使いの システムに対する保護は行なわれなくなります。 AppArmor の状態を変更するには、 YaST を起動して AppArmor+AppArmor コントロールパネル を選択します。

AppArmor コントロールパネル

AppArmor の状態を変更するには、 22.6.1項 「AppArmor の状態変更」 の手順に従って操作します。 また、個別のプロファイルについて状態を変更するには、 22.6.2項 「個別のプロファイルに対するモード変更」 の手順に従って操作します。

22.6.1. AppArmor の状態変更

AppArmor の状態は、有効と無効とを切り替えることができます。 AppArmor が有効になって いれば、 AppArmor のセキュリティポリシーがインストールされて動作し、強制される ようになります。

  1. YaST を起動して、 AppArmor+AppArmor コントロールパネル を選択します。

  2. AppArmor を有効にする にチェックを入れると有効に設定する ことができ、チェックを外すと無効に設定することができます。

  3. 設定が終わったら AppArmor の設定 内で 完了 を押します。

  4. YaST コントロールセンターで ファイル+終了 を選択します。

22.6.2. 個別のプロファイルに対するモード変更

AppArmor はプロファイルを 2 種類のモードで適用することができます。 不平 モードと 学習 モードでは、 プロファイルでは許可されていないファイルへのアクセスなど、 AppArmor のプロファイル ルールの違反は、検出され記録されますが、許可されます。このモードはプロファイル の構築時に便利なモードで、 AppArmor ツールがプロファイルを生成する場合にも 利用しているモードです。一方の 強制 モードでは、 プロファイルで規定されたポリシーが強制され、ポリシーへの違反は syslogd を利用して記録されます。

プロファイルモード ダイアログでは、現在読み込まれている AppArmor のプロファイルに対して、それぞれのモードを閲覧したり編集したりすることが できます。期の機能は、プロファイル開発時にお使いのシステムの状態を判断するのに 便利な仕組みです。もちろんシステム全体のプロファイル作業 (詳しくは 23.6.2項 「統合型プロファイル作成」 をお読みください) にも便利な仕組みで、複数のプロファイルを調整したり監視したりしたい場合にも 利用できます。

アプリケーションのプロファイルモードを編集するには、下記の手順を行ないます:

  1. YaST を起動し、 AppArmor+AppArmor コントロールパネル を選択します。

  2. プロファイルモード設定 のセクション内で、 設定 を選択します。

  3. モードを切り替えたいプロファイルを選択します。

  4. モード切替 を選択し、それぞれ 不平 モードや 強制 モードを選択します。

  5. 最後に 完了 を押すと、設定を適用して YaST を終了 することができます。

全てのプロファイルを切り替えたい場合は、それぞれ 全てを強制モードに設定全てを不平モードに設定 を利用してください。

[Tip]表示されるプロファイルについて

既定では有効になっているプロファイル (お使いのシステムに対して、対象の アプリケーションがインストールされているプロファイル) だけが一覧表示されます。 アプリケーションのインストールを行なう前にプロファイルの設定を行ないたい 場合は、 全てのプロファイルを表示 を押し、表示された 一覧から設定したいプロファイルを選択してください。


openSUSE セキュリティガイド 13.1