第 24章TOMOYO Linux

24.1. TOMOYO Linux の概要

インターネット上に公開したサーバーは、常にクラッカーからの脅威にさらされています。ネットワークサービスのセキュリティホールはしばしば発見され、その度に対応を迫られるシステム管理者の労力とコストを無視することはできません。不正アクセスに対する様々な防御手段が存在しますが、近年、OS 自体のセキュリティ機能を拡張した「セキュア OS」と呼ばれる OS が注目を集めています。セキュア OS とは一般的には強制アクセス制御や最小特権といった要件を満たした OS です。

米国の国家安全保障局が GNU GPL で配布している SELinux(Security Enhanced Linux)や 株式会社 NTTデータ が開発し同じく GPL のもとで配布している TOMOYO Linux もその 1 つです。SELinux は非常に高度で詳細な設定が可能であり商用のセキュア OS と比較しても遜色がないと言えます。しかしながら、そのポリシー定義ファイル(設定ファイル)は何万行にも及び、難解なため管理者に非常に高度な知識と多くの労力を要求します。

そこで、“使いこなせて安全な Linux の開発”を目指すプロジェクトが 2003 年 3 月に株式会社 NTTデータで発足しました。このプロジェクトが TOMOYO Linux の始まりです。2005年11 月には TOMOYO Linux が正式に公開され、現在も多くの機能追加や改良が行われています。

非常に多くの有益な情報が以下サイトで公開されています。詳細はこちらを参照してください。メーリングリストや Wiki でも活発に意見が交換されておりそこから新たな機能が追加されることも多くあるようです。

http://tomoyo.sourceforge.jp/

ティップ

強制アクセス制御とは

通常の Linux では、ファイルやディレクトリに対して「所有者・グループ・その他」に基づいたアクセス制御の設定を行います。しかし、強制アクセス制御が機能している場合、自分の所有しているファイルでさえアクセス可能であるとは限りません。これは root ユーザーでも例外ではありません。すべては、セキュリティポリシーに基づいて、アクセス制御が行われます。

最小特権とは

必要以上の権限を持つことのないようにプロセスやユーザーに対して独自の権限を与えることです。ソフトウェアの脆弱性を突く攻撃で root 権限が奪取されたとしても、そのプロセスやユーザーがアクセス可能なリソースは、これらのアクセス制御機能により許可された範囲内であるため、被害を最小限に抑えることができます。

24.1.1. TOMOYO Linux の特徴

強制アクセス制御の自動学習機能

多くのセキュア OS の抱える問題の 1 つにポリシー定義の難解さがあげられます。TOMOYO Linux では、学習モードで試験運用することでプログラムの起動履歴、プログラムのファイルへのアクセス履歴を収集し自動的に必要なポリシー定義を生成することができるようになっています。

パス名によるポリシー定義が直感的

プログラムやファイルのアクセス制御を定義する際ににパス名を使用します。このため非常に読みやすく直感的なポリシー定義となっています。

ドメインごとのアクセス制御レベル設定

アクセス制御はドメインごとに指定が可能です。ドメインについて詳細は項24.1.4を参照。

強化されたログイン認証

通常、ログイン認証は 1 度だけですが、TOMOYO Linux の強制アクセス制御を使用すれば複数回の認証を強制することができ安全性が高まります。

続いて TOMOYO Linux を理解する上で重要な制御モード、プロファイル、ドメインという用語について解説します。これらも TOMOYO Linux の大きな特徴といえます。

24.1.2. 制御モードとは

TOMOYO Linux には、次の 4 つの制御モードがあり、これらをドメイン毎に設定し強制アクセス制御機能を実現しています。

無効

強制アクセス制御は無効で通常の Linux カーネルと同様に動作します。

学習モード

強制アクセス制御は有効です。ポリシー定義に記述のないアクセスも許可し、同時に自動的にポリシー定義を追加します。ログ出力もします。

確認モード

強制アクセス制御は有効です。ポリシー定義に記述のないアクセスも許可し、ログ出力します。

強制モード

強制アクセス制御は有効です。ポリシー定義に記述のないアクセスは拒否し、ログ出力します。

24.1.3. プロファイルとは

TOMOYO Linux では、実際にドメインに割り当てたポリシーに対し制御モードを設定し"プロファイル"として管理します。このプロファイルを切り替えることで強制アクセスモードの設定を実際にシステムに適用します。Turbolinux 11 Server で初期スクリプト(項24.4.1 )を実行した場合はデフォルトで以下のように設定されています。

プロファイル 0

すべての制御モードは無効に設定されます。

プロファイル 1

すべての制御モードは学習モードに設定されます。

プロファイル 2

すべての制御モードは確認モードに設定されます。

プロファイル 3

すべての制御モードは強制モードに設定されます。

24.1.4. ドメインとは

セキュア OS でいうドメインとは、プロセスに許可されるアクセス制限の対象となるグループを表します。あるドメインに所属するプロセスは、このドメインに許可されるアクセスのみが可能となります。TOMOYO Linux では、“プログラムの絶対パスで表現したプロセスの実行履歴”そのものをドメイン名としています。実際のプログラムやシステムの動作に沿った指定となるため非常にわかりやすく直感的です。すべてのプロセスは必ず 1 つのドメインに所属し、アクセス制御はドメインごとにポリシーとして定義しています。またドメインが階層構造をとることで設定変更時の影響範囲も小さくなるといったメリットもあります。

ドメインに許可するファイルに対するアクセス制御には、通常の Linux のパーミッション(読み込み・書き込み・実行)の 3 種類に加えてファイルの新規作成・削除・名前変更なども設定できます。

ドメインの表記は必ず <kernel> から始まります。/sbin/mingetty から /sbin/login が実行されるときの表し方は以下の通りです。

<kernel> /sbin/mingetty  /sbin/login

さらに /bin/bash されるときには次のようなドメイン名で表されます。

<kernel> /sbin/mingetty /sbin/login /bin/bash