お使いのシステムに AppArmor を問題なく配置するには、下記の項目について注意深く考慮する必要があります:
プロファイルを作成するアプリケーションの決定。詳しくは 28.3項 「プロファイルを作成するアプリケーションの選択」 をお読みください。
必要なプロファイルの作成。概要は 28.4項 「プロファイルの作成と修正」 で説明しています。出力されたプロファイルは、必要に応じて調整する必要がある場合もあります。
環境が変更された場合や、 AppArmor のレポートツールで記録されたセキュリティイベントへの対応。詳しくは 28.5項 「プロファイルの更新」 をお読みください。
openSUSE® Leap では、インストール時に選択したパターンに関わらず、 AppArmor は既定でインストールされ実行されます。下記に示すパッケージは、 AppArmor の全ての機能を使用するために必要なパッケージの一覧です:
apparmor-docs
apparmor-parser
apparmor-profiles
apparmor-utils
audit
libapparmor1
perl-libapparmor
yast2-apparmor
もしもお使いのシステムに AppArmor がインストールされていない場合、後からインストールを行うには apparmor
という名称のパターンをインストールしてください。これにより、全ての機能を使用できるようになります。インストールにあたっては、 YaST のソフトウエア管理モジュールか、 zypper のコマンドラインを使用します。 zypper の場合は下記のように入力して実行します:
>
sudo
zypper in -t pattern apparmor
AppArmor は openSUSE Leap を新規にインストールしている環境であれば、自動的に設定され動作しています。 AppArmor の状態を切り替えたい場合は、下記のようにして行います:
システムの起動時に実行されるスクリプト群から、 AppArmor の起動スクリプトを追加したり削除したりすることで、有効かと無効を切り替えます。この場合、変更は再起動後に適用されることになります。
YaST の AppArmor コントロールパネルを使用して、動作中のシステム内から有効化と無効化を切り替えることができます。変更は即時に適用されます。コントロールパネルでは、 AppArmor に対して起動もしくは停止のイベントを送信することができるほか、システムの起動時のスクリプト群から AppArmor の起動スクリプトを追加したり削除したりすることもできます。
AppArmor を恒久的に無効化したい (システムの起動時に実行されるスクリプト群から取り除きたい) 場合は、下記のようにして行います:
YaST を起動します。
› を選択します。
apparmor
と書かれた行を探してマウスの左ボタンで選択し、ウインドウの下部にある を押します。これで と書かれていた列が になります。
を押して閉じます。
これで AppArmor がシステムの起動時に開始されなくなり、再度 が設定されるまで、動作しなくなります。有効に戻したい場合は、 YaST を利用して同様の手順を実施してください。
動作中のシステムで AppArmor の状態を切り替えたい場合は、 AppArmor の設定ウインドウをお使いください。ここでの設定は即時に反映され、システムを再起動しても切り替え後の状態が保持されます。 AppArmor の状態を切り替えるには、下記の手順を実施します:
YaST を起動して、
を選択し、メインウインドウ内の を選択して を押します。AppArmor を有効化したい場合は、 のチェックボックスにチェックを入れます。無効化したい場合はチェックを外します。
を押すと設定を保存して終了することができます。
お使いの環境内で攻撃を受ける可能性のあるプログラムが、保護を必要とするプログラムとなります。それらに該当するアプリケーションのみに対してプロファイルを作成してください。一般的な例としては、下記のようなものがあります:
ネットワークエージェント |
Web アプリケーション |
cron ジョブ |
どのプロセスがネットワークポートを開いて動作していて、プロファイルを作成する必要があるのかを知りたい場合は、 root
で aa-unconfined
を実行します:
aa-unconfined
の出力 #19848 /usr/sbin/cupsd not confined 19887 /usr/sbin/sshd not confined 19947 /usr/lib/postfix/master not confined 1328 /usr/sbin/smbd confined by '/usr/sbin/smbd (enforce)'
上記の例では、いくつかの行に対して not confined
と書かれていますが、これらのプログラムに対して独自のプロファイルを作成する必要があることを示しています。また、 confined by
と書かれているプログラムは、既に AppArmor による保護が適用されているプログラムであることを示しています。
プロファイルを作成するアプリケーションを選ぶための方法について、詳しくは 29.2項 「予防接種を行うプログラムの決定」 をお読みください。
openSUSE Leap での AppArmor には、あらかじめ設定済みのプロファイル集が提供されていて、主要なアプリケーションに対して保護が行われています。これに加えて AppArmor を使用することで、任意のアプリケーションに対してプロファイルを作成することができます。
プロファイルの管理方法には 2 種類のものがあります。一方は YaST の AppArmor モジュールが提供するグラフィカルなフロントエンドで、もう一方は AppArmor スイート自身が提供するコマンドラインツールです。 YaST では AppArmor プロファイルに対する基本的な機能のみを提供するのに対して、コマンドラインツールはより細かくプロファイルを更新したり修正したりすることができます。
それぞれのアプリケーションに対してプロファイルを作成するには、下記の手順を実施します:
root
になり、 aa-genprof
プログラム名 と入力して実行し、 AppArmor に対してアプリケーションの大まかなプロファイルを作成させます。
もしくは、
› › › を選択し、プロファイル対象のアプリケーションのパスを入力して、基本的なプロファイルを作成してもかまいません。基本的なプロファイルが新しく作成され、学習 (learning) モードに設定されます。学習モードとは、プログラムの動作がログに記録されるものの、プロファイルによる制限が課されないモードのことを指します。
あとはアプリケーションの動作を一通り行い、 AppArmor に対して動作の細かい仕組みを学習させます。
その後、 aa-genprof 内で S を押し、 ステップ 2 で生成されたログファイルを AppArmor に分析させます。
AppArmor はアプリケーションの動作時に記録されたログファイルを読み込み、記録されたそれぞれのイベントに対してアクセス権の設定可否を尋ねます。ここでは、ファイル名を直接指定するだけでなく、グロブ (ワイルドカード) も使用することができます。
アプリケーションの複雑さにも依存しますが、 ステップ 2 と ステップ 3 を繰り返し実行する必要がある場合もあります。いったんプロファイルを作成したあと、その設定でさらにアプリケーションを動作させ、そこで出力されたログを元にさらにプロファイルを更新する、という作業を繰り返します。アプリケーションの動作範囲を正確に記録するには、何度も繰り返す必要があるかもしれません。
aa-genprof
を終了すると、作成したプロファイルは強制 (enforce) モードに設定されます。これによりプロファイルが適用され、 AppArmor はそれにあわせて制限されるようになります。
不平 (complain) モードにある既存のプロファイルを持つアプリケーションに対して aa-genprof
を開始した場合、このプロファイルは学習サイクルを終了するまでの間、学習モードに設定されます。プロファイルのモード変更について、詳しくは 33.7.3.2項 「aa-complain: 不平モード (学習モード) への突入」 と 33.7.3.6項 「aa-enforce: 強制モードへの突入」 をお読みください。
制限の設定されたアプリケーションを実際に利用してみて、プロファイルが正しいことを確認してください。通常、制限の設定されたプログラムは全く問題なく動作し、 AppArmor の制限が課されていることにも気がつかないレベルで動作します。しかしながら、アプリケーションの動作に何らかの異常が見つかった場合は、システムログを調べて AppArmor の制限が原因で発生したものでないかどうかをご確認ください。お使いのシステムで使用しているログの仕組みにもよりますが、一般的には下記の場所に AppArmor のログが記録されます:
/var/log/audit/audit.log |
journalctl | grep -i apparmor コマンドの出力 |
dmesg -T コマンドの出力 |
プロファイルを調整したい場合は、対象のアプリケーションに関連するログメッセージを再度分析してください。詳しくは 33.7.3.9項 「aa-logprof: システムログのスキャン」 をお読みください。このとき、問い合わせが表示されたら、アクセス権を設定するか制限を設定するかを選択してください。
プロファイルの作成や修正に関する詳しい情報については、 第30章 「プロファイルのコンポーネントと文法」 , 第32章 「YaST を利用したプロファイルの構築と管理」 , 第33章 「コマンドラインからのプロファイル構築」 の各章をお読みください。
ソフトウエアの仕様やシステムの設定は、日々変わっていきます。そのような背景から、 AppArmor のプロファイル設定についても、日々調整を加える必要があることがあります。 AppArmor では、システムログを調査してポリシー違反やその他の AppArmor イベントを検出し、それにあわせてプロファイルを調整することができます。プロファイルの定義範囲を超えるアプリケーション動作に対応したい場合は、 aa-logprof
をお使いください。詳しくは 33.7.3.9項 「aa-logprof: システムログのスキャン」 をお読みください。