目次
YaST では、 AppArmor® のプロファイルを構築したり管理したりするのに便利な 仕組みを提供しています。また、 YaST では 2 種類のインターフェイスが用意 されていて、それぞれグラフィカルなインターフェイスとテキストベースの インターフェイスです。テキストベースのインターフェイスは、コンピュータの 資源を大きく消費することもなく、ネットワーク帯域も小さくて済むため、 リモートからの管理や何らかの事情で GUI が使用できない場合に便利な方法 です。それぞれのインターフェイスは異なる外観ですが、機能も操作手順も全く 同一になっています。それ以外の方法として存在するのが、 AppArmor のコマンドを 利用する方法です。端末ウインドウやリモート接続から AppArmor を制御する方法で、 こちらの使い方は 第23章 コマンドラインからのプロファイル構築 で説明しています。
メインメニューから YaST を起動し、ダイアログが表示された場合は root
のパスワードを入力します。これ以外にも、端末ウインドウを開いて root
に
なったあと、 yast2 または yast と入力
することで YaST を起動することもできます。前者の場合はグラフィカルな
インターフェイスが、後者の場合はテキストベースのインターフェイスが表示され
ます。
右側の枠には AppArmor のオプションが表示されます:
詳しい手順については、 22.1項 「ウイザードを使用したプロファイルの追加」 をお読みください。
お使いのシステムにあるアプリケーションに対して、ウイザードの助けを 借りずに AppArmor のプロファイルを追加します。詳しい手順については、 22.2項 「手作業でのプロファイル追加」 をお読みください。
お使いのシステムにある既存の AppArmor プロファイルを編集します。詳しい 手順については 22.3項 「プロファイルの編集」 をお読みください。
お使いのシステムにある AppArmor プロファイルを削除します。詳しい手順に ついては、 22.4項 「プロファイルの削除」 をお読みください。
詳しい手順については、 22.5項 「ログ項目からのプロファイル更新」 をお読みください。
詳しい手順については、 22.6項 「AppArmor の管理」 をお読みください。
23.6.3項 「プロファイル作成ツールの概要」 をお読みください。
は、 AppArmor のプロファイルツールで ある aa-genprof (プロファイルの生成) や aa-logprof (学習モードのログファイルからの プロファイル更新) を利用したプロファイル設定ツールです。これらのツールについて、 詳しい使い方はプロファイル内に起動時の情報を含めるため、プロファイル作業前に アプリケーションを停止します。対象のアプリケーションやデーモンが、 動作していない状態であることを確認してください。
アプリケーションを停止するには、端末ウインドウを開いて root
になり、
rcプログラム名
stop (または
/etc/init.d/プログラム名
stop)
を実行します。 プログラム名
にはプロファイル対象の
プログラムの名前を指定してください。
YaST を起動し、
+ を選択します。アプリケーションの名前を入力するか、もしくはプログラムの場所を指定します。
23.6.3.1項 「aa-autodep—概要プロファイルの作成」 をお読みください。
を押します。 aa-autodep と 呼ばれる AppArmor ツールが起動し、プロファイル対象のプログラムに対して静的な 分析が行なわれます。その後、必要なプロファイルが AppArmor モジュールとして 読み込まれます。 aa-autodep について、詳しくは作成するプロファイルが、既にローカルのプロファイルリポジトリ内に存在する 場合 (詳しくは 21.1項 「ローカルリポジトリの使用」 をお読みください) や、外部のプロファイルリポジトリ内に存在する場合 (詳しくは 第21章 AppArmor のプロファイルリポジトリ をお読みください) 、もしくはどこにも存在していない場合によって、それぞれ 異なる手順を実施します:
/etc/apparmor/profiles/extra
ディレクトリにある
ローカルプロファイルリポジトリ内に、既にプロファイルが存在する場合、
YaST は有効化されていないプロファイルが存在する旨を表示し、これを
ベースとして使用するか、もしくはこれをそのまま使用するかを尋ねます。
もちろんこれらのプロファイルを使用せず、何もない状態からプロファイルを 作成することもできます。いずれの場合とも、 ステップ 7 に読み進めてください。
外部プロファイルリポジトリ内に既にプロファイルが存在していて、既に リポジトリ内に存在するプロファイルをはじめて作成しようとしている場合は、 サーバへのアクセス設定を行なうことができます。設定は下記のようにして 行ないます:
プロファイルを行ないたいアプリケーションを起動します。
可能な限りアプリケーションの機能を多く使用して、学習モードからその アプリケーションが必要とするファイルやディレクトリへのアクセスを判断 できるようにします。なお、アプリケーションの再起動や停止についても 学習させてください。 AppArmor では他のプログラム同様、これらのイベントに ついても処理を行なう必要があるためです。
を押し、 学習モードでのログファイルを処理させます。この処理では、セキュリティ プロファイルを作成するにあたって、ウイザードから多数の質問が表示される ことがあります。
ハットの追加を求められた場合は、 第24章 ハット変更を利用した Web アプリケーションのプロファイル作成 をお読みください。
なお、質問は大きく分けて 2 つの種類に分けられます:
プロファイル内には書かれていない資源へのアクセスが、プロファイル対象の プログラムから行なわれた場合 (詳しくは 図22.2「学習モードの例外: 特定のリソースに対するアクセス制御」 をお読みください) 。 それぞれのリソースに対して、アクセスを許可するかどうかを選択します。
プロファイル対象のプログラムからあるプログラムが実行されたものの、 セキュリティドメインの遷移が設定されていない場合 (詳しくは 図22.3「学習モードの例外: 項目に対する実行許可の設定」 をお読みください) 。 対象の項目に対して実行許可を設定します。
それぞれの質問に対して答えることで、プロファイル内にリソースへのアクセスか プログラムの追加を行なうことになります。それぞれの選択について、詳しくは 図22.2「学習モードの例外: 特定のリソースに対するアクセス制御」 と 図22.3「学習モードの例外: 項目に対する実行許可の設定」 をお読みください。 続くステップでは、これらの質問に対する回答の説明を記述します。
処理オプションの違いについて | |
---|---|
処理している項目の種類によって、利用可能なオプションが異なります。 |
図22.2「学習モードの例外: 特定のリソースに対するアクセス制御」) か、もしくはそれぞれの 項目に対して実行許可の設定を求めます (図22.3「学習モードの例外: 項目に対する実行許可の設定」) 。
はプロファイル対象の アプリケーションがアクセスしたディレクトリパスを提案する (図 22.2: 学習モードの例外: 特定のリソースに対するアクセス制御 に対しては、それぞれ必要なアクセス許可パターンを選択します。 include 句で他のファイルを参照させるか、ワイルドカード表記を利用するか、 もしくは実際のパス名を指定するかを選択することができます。状況に応じて、 それぞれ以下のオプションを利用できます:
#include
include ファイルと呼ばれる、他のファイルへの参照を設定します。 include ファイルはプログラムに対してアクセス許可を設定するためのもので、 これを利用すると、他のプログラムでも利用することのできる共通のファイルを 作成することができます。また、 include を利用するとプロファイルのサイズを 小さくすることにもなります。提案があった場合は、これを選択しておくのが 良いでしょう。
20.6項 「パスとグロブ」 をお読みください。
を押すことでアクセスできるものです。グロブ の書式について、詳しくはプログラムがアクセスする必要のあるパスについて、これをありのまま記述します。
ディレクトリパスを選択したあとは、
または のいずれかを押して AppArmor のプロファイルに設定します。 表示されたパスが期待通りのものでない場合は、 や を押してそれぞれ設定を調整することができます。学習モードで項目を処理し、プロファイルを構築する場合、下記のオプションを 利用することができます:
プログラムに対して、指定したディレクトリパスに対するアクセスを許可します。 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。
では、ファイルへのアクセス 許可を提案します。詳しくはを押すと、プログラムに対して指定したパスへの アクセスを禁止することができます。
これを押すと、ディレクトリパスに対してワイルドカードを適用して、 指定したディレクトリ内の全ファイルを含めるようにすることができます。 ダブルクリックを行なうと、ディレクトリパス以下にある全てのファイルと ディレクトリが含まれるようになります。グロブの文法について、詳しくは 20.6項 「パスとグロブ」 をお読みください。
元のディレクトリパス表記を修正して、ファイル名の拡張子だけを保持する
ようにします。 1 回だけ押した場合は /etc/apache2/file.ext
のようなパスが /etc/apache2/*.ext
となり、
ファイル名部分にワイルドカードが設定されるようになります。この場合、
左記のディレクトリ内にある .ext
という拡張子の
全ファイルが含まれるようになります。ダブルクリックを行なうと、
特定の拡張子を持つ全てのファイルとサブディレクトリが含まれるように
なります。
ハイライト表示された項目を編集します。編集後の行は、一覧内の最後に 現われます。
aa-logprof を中止し、これまでに設定した全てのルール変更を取り消します。 これにより、全てのプロファイルは修正前の状態に戻ります。
aa-logprof を閉じ、これまでに設定した全てのルール 変更を保存します。
それぞれの学習モードの項目に対して、
または を押します。これにより AppArmor のプロファイルの構築 を助けることになります。学習モードの項目に表示される項目数は、アプリケーションの複雑さに依存 して変化します。 |
図 22.3: 学習モードの例外: 項目に対する実行許可の設定 に対しては、それぞれ必要なアクセス許可を選択します。 利用可能なオプションについて、詳しくは 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。
親と同じセキュリティプロファイルを適用します。
実行されたプログラムに対して、別途のプロファイルを求めるようにします。 このオプションを選択する場合は、プロファイルを切り替える際に AppArmor が 特定の環境変数を取り除き (消毒し) 、子プロセスの動作に影響が及ばない ようにするかどうかを選択することができます。子プロセスの動作について、 これらの環境変数がどうしても必要な場合を除き、常により安全なオプションを 選択しておくことをお勧めします。
セキュリティプロファイル無しでプログラムを実行します。問い合わせが あった場合、親のプロセスから特定の環境変数を引き継ぐことでセキュリティ リスクを高めるようなことがないよう、環境変数の取り除き処理を行なうことも できます。
無制限モードでの実行のリスク | |
---|---|
どうしても必要な場合を除いて、無制限モードでは動作させないでください。 オプションを選択すると、新しいプログラムは AppArmor の保護無しで動作することになります。 |
を押すと、指定したパスに対するプログラムの アクセスを禁止することができます。
aa-logprof を中止し、これまでに設定した全ての ルール変更を取り消します。これにより、全てのプロファイルは修正前の 状態に戻ります。
aa-logprof を閉じ、これまでに設定した全ての ルール変更を保存します。
アプリケーションにあるさらなる機能を試す必要がある場合は、上記までの 手順を繰り返し実施します。
全てが完了したら
を押します。続いてローカルのプロファイル セットに対して、変更点を保存するかどうかを選択します。以前の手順で、お使いの プロファイルを外部のプロファイルリポジトリにアップロードするように選択して いた場合は、作業内容に関する短い変更履歴情報を入力し、アップロード作業を 行ないます。以前の手順でプロファイルをアップロードするかどうかを選択 しなかった場合は、 YaST はここで再度プロファイルのアップロード用に アカウントを作成するかどうか、および今すぐアップロードするかどうかを それぞれ選択することができます。を終了すると、プロファイルは すぐにローカルとリポジトリサーバ (アップロードの設定を行なっていれば) の 両方に保存されます。また、プロファイルは AppArmor のモジュール内に読み込まれます。
AppArmor では、プロファイル内に手作業で項目を追加する方法でのプロファイル構築 にも対応しています。プロファイルを作成したいアプリケーションを選択してから、 項目を追加してください。
YaST を起動し、
+ を選択します。プロファイルを作成するアプリケーションを、お使いのファイルシステム内から 選択します。
アプリケーションを選択したあとは
を押します。 内には、 基本的な構造だけを持つ何もないプロファイルが表示されます。22.3.1項 「項目の追加」, 22.3.2項 「項目の編集」, 22.3.3項 「項目の削除」 についてもそれぞれお読みください。
内では、 AppArmor のプロファイル を追加/編集/削除することができます。それぞれ対応するボタンを押して作業を 行なってください。また、作業が完了したら
を押せば完了です。AppArmor ではプロファイルの項目を手作業で追加/編集/削除することができます。 プロファイルを編集するには、下記の手順で実施します:
YaST を起動し、
+ を選択します。プロファイル済みのアプリケーション一覧が表示されますので、編集したいプロファイルを 選択します。
を押します。 ウインドウ内にプロファイルが表示されます。
22.3.1項 「項目の追加」, 22.3.2項 「項目の編集」, 22.3.3項 「項目の削除」 についてもそれぞれお読みください。
内では、 AppArmor のプロファイル を追加/編集/削除することができます。それぞれ対応するボタンを押して作業を 行なってください。また、作業が完了したら、
を押します。ポップアップが表示されたら、
を押します。 するとプロファイルへの変更が保存され、 AppArmor のプロファイルセットが 再読み込みされます。AppArmor 内での文法チェック | |
---|---|
AppArmor には文法チェック機能があり、 YaST の AppArmor ツールを利用して作業を
行なっていればプロファイル内の文法エラーが通知されるようになっています。
エラーが発生した場合は |
22.2項 「手作業でのプロファイル追加」 や 22.3項 「プロファイルの編集」 で 利用できます。 を選択すると、 AppArmor プロファイルに 追加する項目種類の一覧が表示されます。
オプションは、一覧からいずれかを選択してください:
ポップアップウインドウ内では、アクセスを許可するファイルについて、その絶対パスを 指定します。完了したら
を押します。必要であればワイルドカードを利用したグロブ表記を行なうこともできます。グロブ について、詳しくは 20.6項 「パスとグロブ」 をお読みください。また、ファイルのアクセス許可情報について、詳しくは 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。
ポップアップウインドウ内では、アクセスを許可するディレクトリについて、 その絶対パスを指定します。必要であればワイルドカードを利用したグロブ表記を 行なうこともできます。完了したら
を押してください。グロブについての、詳しくは 20.6項 「パスとグロブ」 をお読みください。また、ファイルのアクセス許可情報について、詳しくは 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。
ポップアップウインドウ内では、ネットワークファミリとソケットの種類を選択します。 詳しくは 20.5項 「ネットワークアクセス制御」 をお読みください。
ポップアップウインドウ内では、必要な機能 (ケーパビリティ) を選択します。 これらはそれぞれ 32 POSIX.1e ケーパビリティを有効にするためのものです。 ケーパビリティについて、詳しくは 20.4項 「機能項目 (POSIX.1e)」 をお読みください。選択が完了したら を押します。
ポップアップウインドウ内では、取り込みたいファイルを選択します。
include とは他の AppArmor プロファイル内に書かれている情報を引用して使用するための
機能です。詳しくは
20.3項 「#include
ステートメント」
をお読みください。
ポップアップウインドウ内では、現在のプロファイルに追加するサブプロファイル (ハット) の名前を指定します。名前を入力したら を押してください。ハットについて、詳しくは 第24章 ハット変更を利用した Web アプリケーションのプロファイル作成 をお読みください。
を選択すると、ファイルブラウザのポップアップ ウインドウが表示されます。ここから選択した項目を編集することができます。
ポップアップウインドウ内では、アクセスを許可するファイルについて、その絶対 パスを指定します。必要であれば、ワイルドカードを利用したグロブ表記を行なう こともできます。作業が完了したら
を押します。グロブ表記について、詳しくは 20.6項 「パスとグロブ」 をお読みください。また、ファイルアクセス許可について、詳しくは 20.7項 「ファイルのアクセス許可とアクセスモード」 をお読みください。
指定したプロファイルで項目を削除するには、
を選択します。 AppArmor は選択したプロファイル項目を削除します。AppArmor ではプロファイルを手作業で削除することもできます。単純にプロファイルを 削除したいアプリケーションを選択するため、下記の手順で削除してください:
YaST を起動し、
+ を選択します。削除するプロファイルを選択します。
を押します。
ポップアップウインドウが開いたら
を押します。 するとプロファイルが削除され、 AppArmor のプロファイルセットが再読み込みされます。AppArmor プロファイルウイザードでは aa-logprof と呼ばれるツールを使用します。 このツールはログファイルを読み込み、プロファイルを更新することができます。 また、このツールでは AppArmor モジュールからのメッセージを追跡する機能があり、 お使いのシステムで発生した全てのプロファイルに対する違反事例を追跡する ことができます。これらの違反事例は、プログラムに対する何らかのプロファイル 設定が足りていないことを示しているため、本ツールを利用してプロファイルを 更新すると、それらの違反に対して設定を追加することができるようになっています。
YaST を起動し、
+ を選択します。22.1項 「ウイザードを使用したプロファイルの追加」 内の ステップ 9 をお読みください。
(aa-logprof) では、学習モードの ログファイルを読み込んで処理します。この処理時間中は、セキュリティプロファイルに 正しく反映させるための問い合わせメッセージが、数多く表示されます。このときの 選択は、新しいプロファイルを作成する際と同じように実施してください。詳しくは作業が完了したら
を押します。続いて表示される ポップアップで を選択すると、 を終了することができます。 これでプロファイルが保存され、 AppArmor モジュール内に読み込まれるようになります。AppArmor はその状態を切り替えて、有効化や無効化を行なうことができます。 AppArmor を有効に するとお使いのシステムを保護して、潜在的なプログラム保護を受けることができるように なります。 AppArmor を無効にすると、プロファイルが設定されていた場合でも、お使いの システムに対する保護は行なわれなくなります。 AppArmor の状態を変更するには、 YaST を起動して
+ を選択します。AppArmor の状態を変更するには、 22.6.1項 「AppArmor の状態変更」 の手順に従って操作します。 また、個別のプロファイルについて状態を変更するには、 22.6.2項 「個別のプロファイルに対するモード変更」 の手順に従って操作します。
AppArmor の状態は、有効と無効とを切り替えることができます。 AppArmor が有効になって いれば、 AppArmor のセキュリティポリシーがインストールされて動作し、強制される ようになります。
YaST を起動して、
+ を選択します。にチェックを入れると有効に設定する ことができ、チェックを外すと無効に設定することができます。
設定が終わったら
内で を押します。YaST コントロールセンターで
+ を選択します。AppArmor はプロファイルを 2 種類のモードで適用することができます。 不平 モードと 学習 モードでは、 プロファイルでは許可されていないファイルへのアクセスなど、 AppArmor のプロファイル ルールの違反は、検出され記録されますが、許可されます。このモードはプロファイル の構築時に便利なモードで、 AppArmor ツールがプロファイルを生成する場合にも 利用しているモードです。一方の 強制 モードでは、 プロファイルで規定されたポリシーが強制され、ポリシーへの違反は syslogd を利用して記録されます。
23.6.2項 「統合型プロファイル作成」 をお読みください) にも便利な仕組みで、複数のプロファイルを調整したり監視したりしたい場合にも 利用できます。
ダイアログでは、現在読み込まれている AppArmor のプロファイルに対して、それぞれのモードを閲覧したり編集したりすることが できます。期の機能は、プロファイル開発時にお使いのシステムの状態を判断するのに 便利な仕組みです。もちろんシステム全体のプロファイル作業 (詳しくはアプリケーションのプロファイルモードを編集するには、下記の手順を行ないます:
YaST を起動し、
+ を選択します。のセクション内で、 を選択します。
モードを切り替えたいプロファイルを選択します。
不平 モードや 強制 モードを選択します。
を選択し、それぞれ最後に
を押すと、設定を適用して YaST を終了 することができます。全てのプロファイルを切り替えたい場合は、それぞれ
や を利用してください。表示されるプロファイルについて | |
---|---|
既定では有効になっているプロファイル (お使いのシステムに対して、対象の アプリケーションがインストールされているプロファイル) だけが一覧表示されます。 アプリケーションのインストールを行なう前にプロファイルの設定を行ないたい 場合は、 を押し、表示された 一覧から設定したいプロファイルを選択してください。 |