AppArmorとは
AppArmor(Application Armor)は、
Linuxカーネルのセキュリティモジュールの一つで、各プログラムに対してセキュリティプロファイルを適用し、その動作範囲を制限する機能を提供します。これにより、プログラムが不正な操作を行うことを防ぎ、システム全体のセキュリティを向上させます。
具体的には、AppArmorはプログラムがネットワークにアクセスする、ファイルを読み書きする、Raw socket を利用するなどの操作を制限することができます。従来のUnixシステムにおける任意アクセス制御モデルを補完する強制アクセス制御モデルを提供することで、より強固なセキュリティを実現します。
AppArmorは、
Linuxカーネルのバージョン2.6.36からメインラインに組み込まれており、2009年以降は
カノニカル社によって開発がサポートされています。これにより、幅広い
Linuxディストリビューションで利用することが可能になっています。
AppArmorの特徴
セキュリティプロファイル
AppArmorの最も重要な特徴は、各プログラムに結びつけられるセキュリティプロファイルです。このプロファイルには、プログラムが許可される操作が記述されており、プログラムは定義された範囲内でのみ動作することができます。プロファイルは手動で作成することも可能ですが、AppArmorには学習モードが用意されています。
学習モード
学習モードでは、プログラムがプロファイルに違反する動作を試みた場合、その動作を妨害することなく、ログに記録します。このログを解析することで、プログラムの正常な動作に必要な権限を自動的に把握し、適切なAppArmorプロファイルを生成することができます。この機能により、プロファイル作成の手間を大幅に削減し、システムの安全性を維持しながら、新しいプログラムの導入を容易にします。
AppArmorは、SE
Linux(Security-Enhanced
Linux)と同様に、システムセキュリティを強化するためのツールです。SE
Linuxはファイルにセキュリティラベルを付与し、このラベルに基づいてアクセス制御を行うのに対し、AppArmorはファイルパスを基準としてアクセス制御を行います。AppArmorの支持者は、SE
Linuxに比べて設定や管理が容易であり、理解しやすいと主張しています。また、既存のシステムへの適用も、SE
Linuxよりも修正が少なくて済むとされています。特に、SE
Linuxが対応していないNFSマウントされたファイルシステムでも利用できる点が利点として挙げられます。
その他のシステム
AppArmorは、ソフトウェアの動作を制限するための複数のアプローチのうちの一つです。SE
Linuxも同様の目的で使用されますが、inode番号に基づいてファイルを識別する点がAppArmorとは異なります。これにより、SE
Linuxではアクセスできない
ハードリンクを通じて、AppArmorではアクセスが可能になる場合があります。また、TOMOYO
Linuxのような他のアプローチも存在し、それぞれ異なる特徴を持っています。
AppArmorの活用
AppArmorは
1998年から
2003年にかけてImmunix Linixで初めて使用されました。当時、AppArmorはサブドメインとして知られており、特定のプログラムへのセキュリティプロファイルを動的に変更することができました。SUSEとopenSUSEで積極的に採用され、SUSE
Linux Enterprise Server 10とopenSUSE 10.1で初めて有効化されました。
2005年から2007年9月にかけてはノベル社が保守を担当し、2007年4月には
Ubuntuに初めてパッケージされました。
Ubuntu 7.10以降はデフォルトパッケージとなり、
Ubuntu 8.04からはリリースの一部となりました。当初はCUPSの保護のみでしたが、
Ubuntu 9.04では
MySQLなどより多くのソフトウェアが保護対象となり、
Ubuntu 9.10ではゲストセッションやlibvirtの仮想マシン、Firefoxなどのプロファイルもリリースされました。
2010年10月には
Linuxカーネルに統合され、
2014年にはSynologyのDSM 5.1ベータ版にも組み込まれました。
関連項目
- - Linux Intrusion Detection System (LIDS)
- - Systrace
- - grsecurity
外部リンク