AppArmorでアプリケーションのファイアウォールを構築Linux Hacks(2/3 ページ)

» 2006年12月14日 15時58分 公開
[Mayank-Sharma,Open Tech Press]
SourceForge.JP Magazine

AppArmorの使用

 AppArmorは、もともとはImmunix(2005年5月にNovellに買収)で開発されたものである。その後、Novellはこのクローズドソースアプリケーションの開発を続け、2006年1月にGNU General Public License(GPL)の下でフリーソフトウェアとしてリリースした。Novellにはサブスクリプション版のSUSE Enterprise LinuxとフリーのopenSUSE Linuxディストリビューションがあるが、AppArmorはその両方に統合されている。インストール時にAppArmorのインストールを選択しなかった場合でも、SUSEのセットアップツールであるYaSTを使って後からインストールできる。

 AppArmorをインストールすると、YaST内にAppArmor用の管理セクションができる。ここからAppArmorを有効または無効にでき、さらにアプリケーションプロファイルの追加/削除/更新ができる。AppArmorを有効にすると、/etc/apparmor.dディレクトリ内にあるセキュリティプロファイルが自動的に適用される。

 SUSEには、代表的なサービス(ntp、netstat、ping、tracerouteなど)とアプリケーション(Firefoxなど)についてのプロファイルが付属している。また、/etc/apparmor/profiles/extras/ディレクトリには、さまざまなアプリケーション(Gaim、Evolution、RealPlayerなど)と幾つかのコマンドおよびサービス(useradd、userdel、Squid、 Sendmail、MySQLなど)についてのプロファイルが用意されている。ただし、このディレクトリ内のREADMEには、これらのプロファイルは十分なテストが行われておらず、修正してから使う必要があるという注意が書かれている。

 プロファイルを自作するときのために、AppArmorには、コンソールベースのツールとグラフィカルベースのツールが幾つか用意されている。このアプリケーションを実行するには、まずプロファイリングが必要である。AppArmorは、最初にプロファイリング対象となるアプリケーションの場所を尋ねてくる。その後、分析ツールを実行して、そのアプリケーションが使用するすべてのライブラリ参照を検出し、記録する。分析が完了すると(通常は数分で済む)、「学習モード」に切り替わり、対象アプリケーションを起動して使用するようユーザーに求めてくる。そこでユーザーは、対象アプリケーションを使用して、必要な機能をすべて実行する。操作を終えると、AppArmorがシステムログを走査して、対象アプリケーションをロックダウンするために必要な情報を質問してくる。

 サンプルプロファイルの例を紹介しておこう。


#include 
/usr/bin/ldd {
  #include 
  /dev/log                       w,
  /dev/urandom                   r,
  /usr/lib64/locale/**           r,
  /lib/lib*.so*                  r,
  /dev/null                      rw,
  /dev/zero                      rw,
}

 ご覧のとおり、プロファイルの大部分は、対象アプリケーションが必要とするファイルやライブラリを、絶対パスとアクセスモードの情報と一緒に列挙したものにすぎない。#includeステートメントでは、AppArmorの外部定義済みコンポーネントをプロファイルに読み込んでいる。プロファイルの先頭には、対象アプリケーションの絶対パスが記述される(この例では/usr/bin/ldd)。

 また、この例ではワイルドカード文字(*)を使用して、名前が「lib」で始まり、拡張子の最初が「so」となっているすべてのファイルに読み取りアクセスを与えている。これは、将来的にライブラリに変更が生じた場合に備えての安全対策である。二重アスタリスク(**)は、rsyncからの借用である。これはすべてのファイルを表し、サブディレクトリとその下のファイルも含まれる。

 作成されたプロファイルは自動的に適用される。対象アプリケーションや、それが使用するライブラリおよびファイルに変更を加えた場合は、それに応じてプロファイルを更新しなければならない。プロファイルの作成、更新、管理の手順は、「AppArmor Administration Guide」で図を交えて詳しく説明されている。

 プロファイルを作成および編集するには、ルート権限が必要である。だが、AppArmorの第一の目的は、攻撃を受けたアプリケーションが自身をルートとして実行するのを防ぐことである。もしもあなたが神経質な性格で、ルートパスワードを持つ新しいシステム管理者を信頼できないと考えているならば、AppArmorを使用して、制限つきのログインシェルを作成するとよいだろう。例えば、AppArmor FAQのこの項目では、ルートの権限のうち、システムログへのアクセスに必要な権限をユーザーに与えつつ、サーバを再起動する権限は与えないでおく方法が紹介されている。

 AppArmorの面白い機能の1つは、プロファイルによって保護されているプログラムの一部を、それぞれ独自のセキュリティコンテキストにおいて実行できるというものである。必要に応じてアプリケーションの「帽子を取り替え」て、特定のサブプロセスを閉じ込めることができる。ただし、この機能を使用するには、アプリケーションが「帽子の取り替え」を認識するようにしなければならない。Novellが提供するApache Webサーバには、mod_change_hatと呼ばれる特殊なモジュールが付属している。このモジュールを使用すると、Apacheの完全な権限がなくても、個々のPHPページやCGIスクリプトをそれぞれのセキュリティドメインで実行できる。

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ