3.10. Unix ライクなシステムに固有なセキュリティ拡張機能

Unix ライクなシステムを拡張すべく、さまざまなコミュニティがいろいろな調査 や開発に力を注いでいます。 たとえば、Unix ライクなシステムのいくつかでは機能を拡張して、米軍が求める 階層構造を持ったセキュリティをサポートしています。 ソフトウェアを開発するなら、設計する時にこの拡張機能を実現できるように 頑張ってみてください。

FreeBSD は新しいシステムコールである jail(2) を持っています。 jail というシステムコールは環境を複数に分割し、仮想マシンをたくさん サポートします(ある意味、「スーパー chroot」と言えます)。 利用方法としては、インターネット・サービス・プロバイダの環境で、仮想マシンの サービスとして利用するのが大半です。 1 つ の jail の内部では、すべてのプロセス(root が所有者であっても)はその jail の範囲に命令が限定されます。 FreeBSD システムを新規インストールした後にブートすると、 jail に入るプロセス は 1 つもありません。 プロセスが jail に入ると、そのプロセスとそこから派生するプロセスはすべて jail に入ります。 jail に入ってしまえば、ファイル名空間へのアクセスは chroot(2)スタイルで制限 を受けます(chroot を避けようとしてもブロックされます)。 ネットワークリソースを利用する機能は、特定の IP アドレスに制限され、システム リソースの操作や権限をいじる行為は、大幅に切り詰められ、他のプロセスとの やりとりは、同じ jail の中のプロセスにだけ制限されます。 jail それぞれは、1 つの IP アドレスを使っています。jail の中のプロセスは、 他の IP アドレスを使って外部とやりとりはできない点に注意してください。 【訳註:jail(2)の日本語マニュアルはhttp://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=jail&dir=jpman-5.0.0%2Fman&sect=0 にあります】

Linux では拡張機能が利用可能です。たとえば先に論じた POSIX ケイパビリティや マウント時の特殊なオプションがそれに当たります。 Linux システムで実行環境を制限する試みをいくつか挙げておきます。 アプローチの仕方はさまざまです。 U.S. National Security Agency(NSA)では Security-Enhanced Linux (Flask) を開発し、特殊な言語でセキュリティ・ポリシを定義し、それに基づきポリシを実施 します。 Medusa DS9 は Linux を拡張し、 カーネルレベルでユーザ空間で動く認証サーバをサポートしています。 LIDS は、ファイルやプロセスを保護し、 管理者にシステムを「封鎖(lock down)」する権限を与えています。 「ルールベースのアクセス制御」システム RSBAC は、アクセス制御に汎用的な フレームワーク(Generalized Framework for Access Control (GFAC))を用いて います。これは Abrams 氏と LaPadula 氏によって作られ、複数のカーネル モジュールによって、柔軟なアクセス制御を実現しています。 Subterfugueは、「ソフトウェア の実態をもって監視、実行する」というフレームワークです。サンドボックスや トレーサ等を実行することで、システムコールを横取りし、そのパラメタや返り値 を変更します。 Linux 2.4 で動作し、何も変更はいりません(カーネルモジュールの追加は何も必要 ありません)。 Janus はセキュリ ティツールで、制限された実行環境下で信頼できないアプリケーションをサンド ボックスに閉じ込めます。 User-mode Linux は、サンドボックスの実装の 1 つで、「Linux 上で Linux を動かす」ことを実現 しています。 このようにさまざまなアプローチによって、より洗練したセキュリティモデルを 実装していますので、Linus Torvalds 氏は、異なるセキュリティ・ポリシでも採用 できるような汎用的アプローチを開発して欲しい、と要望しています。詳しくは、 http://mail.wirex.com/mailman/listinfo/linux-security-module を 見てください。

さまざまな Unix ライクなシステム上で、他にもいろいろなセキュリティ上の拡張 が存在しています。しかし、このドキュメントでは範囲外なので扱いません。