akarititle.png

Chapter 2: なぜ AKARI が必要なのですか?

2.1. AKARI とは何ですか?

AKARI は Linux 向けの強制アクセス制御( MAC )の実装で、システムの解析やシステムのセキュリティを高めるために利用できます。 AKARI は2003年に始まった TOMOYO Linux をベースとして作成された、 Linux カーネルモジュールです。

AKARI はシステムの振る舞いに注目します。プロセスは何かの目的を達成するために生成されます。 AKARI は(出入国審査官のように)それぞれのプロセスに対して目的を達成するのに必要な振る舞いや資源について報告させることができます。また、保護モードを有効にすることにより、(運用監視人のように)システム管理者により承認された振る舞いと資源へのアクセスのみを許可することもできます。

2.2. 強制アクセス制御とは何ですか?

通常のオペレーティングシステム( OS )では、プログラムやプロセスはほとんど制限されておらず、プログラムやプロセスは何でもすることができます(以下のイラストを参照してください)。セキュリティに配慮された OS では、プロセスが行うべきではない動作を行わせないようにするため(あるいはシステム管理者が具体的に阻止したい動作を行わせないようにするため)に何らかの形の制限が実装されるべきです。例えば、 Apache のような Web サーバは Web サービスだけを提供することが認められるべきです。そのサーバに対して、サービスを提供するのに不要なファイルへのアクセス権が与えられるべきではありませんし、他の無関係なプロセスを開始したり干渉したりする権限も与えられるべきではありません。 Linux のファイルシステムの機能であるアクセスコントロールリスト( ACL )で実現できる保護は僅かです(特に、多くのサービスが root ユーザの権限で動作する場合)。それに対して、強制アクセス制御はこの保護を一層強固なものにし、( root ユーザの権限で動作しているプロセスも含む)それぞれのプロセスができることについて、とても正確な制御を行うことができます。(以下のイラストを参照してください。)これは、プロセスが侵害された場合に威力を発揮します。強制アクセス制御が存在しない場合、侵害されたプロセスは好き放題に振る舞うことができてしまうのです!

普通のOSにおける制限されていないアクセス:

os-without-mac.jpg

強制アクセス制御を搭載したOSにおける制限されたアクセス:

os-with-mac.jpg

それゆえ、強制アクセス制御は必要最小限の権限というポリシーを実現することができます。強制アクセス制御では、それぞれのプロセスができることについての定義を持ち、その定義のことをポリシーと呼びます。このポリシーは、本来の機能を提供するのに必要最小限のことだけが許可されます。もしプロセスやアプリケーションがポリシーで許可されていないことを試みた場合、その試みは拒否されます。そのため、望まない振る舞い(破壊活動など)を阻止することができます。

2.3. AKARI は何の役に立ちますか?

強制アクセス制御で大事なことの一つに、システム上に存在する全てのプロセス用のポリシーを定義して管理することが挙げられます。それを行うためには、それぞれのプロセスに対して許可されるべきことについての正確な知識が必要になります。これは極悪非道なまでに困難なことであり、また、高度な理解とスキルが必要になると思えるでしょう。しかし、 AKARI では学習モードという機能によりポリシーを簡単かつ自動的に生成し、カスタマイズして適用するための素地を提供することができます。 AKARI の概念をしっかりと理解し、この学習モードと組み合わせることにより、短時間でシステムを安全にすることができます。習熟した Linux システム管理者であれば誰でも、その日の内に AKARI をセットアップして使うことができます!

制限が行われているシステムは、アプリケーションが侵害された際のダメージを軽減するのに役立ちます。例えば、バッファオーバーフロー攻撃などに起因するダメージを軽減できます。それゆえ、このような保護は Apache や SSH のようにインターネットに面しているサービスにとってとても重要です。最小権限のポリシーが適用されていれば、アプリケーションの制御を奪った遠隔の攻撃者がそれ以上システムを侵害することを防ぐことができるでしょう。