[tomoyo-users 126] TOMOYO Linux の開発状況

Back to archive index

Tetsuo Handa from-****@I-lov*****
2006年 11月 2日 (木) 21:52:34 JST


 熊猫です。

 次期バージョンの内容が固まってきたのでお知らせします。
今回はポリシー策定手順が大きく変更されたため 1.2.1 ではなく 1.3 とします。
正式リリースは11/11を予定しています。

・ドメイン単位で制御レベルの指定が可能になります。

 http://lists.sourceforge.jp/mailman/archives/tomoyo-users/2006-September/000109.html から
 始まるスレッドを受けて、ドメイン単位で制御レベルを変更する機能を搭載しました。

 /proc/ccs/status の中に最大 256 個のプロファイルを定義できるようにしました。
 例えば

 0-COMMENT=All Disabled
 0-MAC_FOR_FILE=0
 1-COMMENT=FILE with Accept Mode
 1-MAC_FOR_FILE=1
 2-COMMENT=FILE with Permissive Mode
 2-MAC_FOR_FILE=2
 3-COMMENT=FILE with Enforce Mode
 3-MAC_FOR_FILE=3
 5-COMMENT=FILE and NETWORK with Accept Mode
 5-MAC_FOR_FILE=1
 5-MAC_FOR_NETWORK=1
 6-COMMENT=FILE and NETWORK with Permissive Mode
 6-MAC_FOR_FILE=2
 6-MAC_FOR_NETWORK=2
 7-COMMENT=FILE and NETWORK with Enforce Mode
 7-MAC_FOR_FILE=3
 7-MAC_FOR_NETWORK=3

 のように制御レベル別にプロファイルを定義し、
 /proc/ccs/policy/domain_policy の中では

 <kernel> /usr/sbin/sshd
 use_profile 7

 <kernel> /usr/sbin/sshd /bin/bash
 use_profile 1

 <kernel> /usr/sbin/sshd /bin/bash /bin/ls
 use_profile 1

 <kernel> /usr/sbin/sshd /bin/bash /bin/cat
 use_profile 1

 <kernel> /usr/sbin/httpd
 use_profile 2

 のようにプロファイル番号を指定することで実現できます。
 制御レベルの変更は

 setprofile -r 2 '<kernel> /usr/sbin/sshd /bin/bash'
 setprofile 1 '<kernel> /usr/sbin/sshd /bin/bash /bin/cat'

 のように指定することで行います。
 従来は

 setlevel MAC_FOR_FILE=3

 のようにプロファイルの値を変更していましたが、変更すると
 システム全体に影響するため一斉に移行する必要がありました。今後は

 setprofile プロファイル番号 ドメイン名

 のようにドメインに割り当てるプロファイルの番号を変更するため、変更しても
 そのドメインにしか影響を与えないので一斉に移行する必要がなくなりました。

 なお、 1.2 の時のように setprofile を使わずに setlevel だけで行いたい場合は、
 /proc/ccs/status には

 0-MAC_FOR_FILE=1
 0-MAC_FOR_NETWORK=1

 のようにプロファイルを1個だけ定義し、

 setlevel 0-MAC_FOR_FILE=2 0-MAC_FOR_NETWORK=2

 のように切り替えて利用します。

・起動時のポリシーの読み込みをカーネルの外部に移動しました。

 従来はカーネルが /sbin/init の実行をトリガとしてカーネルの内部で
 ポリシーファイルをオープンして読み込むようになっていましたが、
 ポリシーローダーをカーネルの外部に用意してカーネル起動時のコマンドラインに
 init= でポリシーローダーの場所を指定することになりました。
 具体的には、 /.init というスクリプトを作成し、 init=/.init のように指定します。
 /.init のサンプルをこのメールに添付してあります。

・ポリシーファイルの保存場所を自由に決めることができるようになりました。

 起動時のポリシーの読み込みをカーネルの外部に移動することにより、
 カーネル内部にあった /root/security/ というハードコーディングされたパス名は
 参照されなくなったため、廃止されました。
 ポリシーファイルの保存場所や名前をカーネルコンパイル時に決めなければならないという
 制約も廃止されました。

 ポリシーファイルの保存場所については、
 /root/ ディレクトリをうまくイメージファイルに含めることができない環境もあるようなので、
 /etc/ccs/ ディレクトリに変更しようとかと考えています。
 /etc/ccs/ ディレクトリでは困るという方がいらっしゃいましたらお知らせください。

 http://lists.sourceforge.jp/mailman/archives/tomoyo-users/2005-December/000049.html で
 書いたように、 Debian の initrd.img の中には /sbin/init が含まれているため、
 単純に /sbin/init が実行されたらアクセス制御を開始するという方法は使えません。
 そのため、アクセス制御を開始してもよいかどうかの判断基準が必要になります。
 バージョン 1.0.1 から 1.2 までは /root/security/ ディレクトリが存在するかどうかを
 判断基準としていましたが、 /root/security/ というハードコーディングを廃止した今、
 新しい判断基準が必要になりました。そこで、 CCS_loader= で指定されたポリシーローダーの
 パス名(デフォルトでは /.init )が存在するかどうかを新しい判断基準にしました。

・カーネルのコマンドラインを固定できるようになりました。

 起動時のポリシーの読み込みをカーネルの外部に移動したことにより、
 CCS=\$ で指定する /root/security/profile\$.txt の \$ (バージョン 1.2 までは
 プロファイル番号と呼んでいたもの)も、もはやカーネルは関知しません。
 CCS= を指定するのは構いませんが、それを解釈するのはカーネルではなく
 ( /sbin/init の直前に実行される)ポリシーローダーの仕事になりました。
 学習用と強制用に CCS= を使い分ける必要が無くなった(ポリシーローダーが
 ユーザにどのモードで起動するかを尋ねてプロファイルの値を決めればよい)ので、
 カーネル起動時のコマンドラインを固定化することができるようになります。
 起動時にコマンドラインを編集できない環境では役に立つでしょう。
 キーボードからの入力を渡せなかったり画面が繋がっていなかったりしたらお手上げですが。(^^;

・書き換え不可(deny_rewrite)という構文がサポートされます。

 /var/log/ ディレクトリ以下のファイルのように既に記録されている部分に
 上書きされると困るファイルを保護するために deny_rewrite という構文がサポートされます。
 例外ポリシーで

  deny_rewrite /var/log/\*
  deny_rewrite /var/log/\*/\*

 のように指定すると、ドメインポリシーで

  allow_rewrite /var/log/\*
  allow_rewrite /var/log/\*/\*

 のように明示的に許可を与えない限り、以下の操作が禁止されるようになります。

  O_TRUNC フラグを指定した open() の呼び出し
  O_APPEND フラグを指定しない open() の呼び出し
  truncate() および ftruncate() の呼び出し
  O_APPEND フラグを指定しない fcntl(F_SETFL) の呼び出し

 1.3 で新たに追加される構文ですが、
 deny_rewrite を指定しない限り allow_rewrite のチェックもされないため、
 1.2 で作成したドメイン用ポリシーをそのまま 1.3 でも使えます。

現時点で以下のカーネル用のパッチが用意されています。

* RedHat Linux 9 用のカーネル 2.4.20-46.9.legacy
* Fedora Core 3 用のカーネル 2.6.12-2.3.legacy_FC3
* Fedora Core 4 用のカーネル 2.6.17-1.2142_FC4
* Fedora Core 5 用のカーネル 2.6.18-1.2200.fc5
* Fedora Core 6 用のカーネル 2.6.18-1.2798.fc6
* CentOS 4.4 用のカーネル 2.6.9-42.0.3.EL
* Debian Sarge 用のカーネル 2.4.27-10sarge4
* Debian Sarge 用のカーネル 2.6.8-16sarge5
* Debian Etch 用のカーネル 2.6.17-9
* OpenSUSE 10.1 用のカーネル 2.6.16.21-0.25
* バニラ 2.4 カーネル (2.4.30 〜 2.4.33)
* バニラ 2.6 カーネル (2.6.11 〜 2.6.18 および 2.6.19-rc4)
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: init.txt
型:         application/octet-stream
サイズ:     3320 バイト
説明:       無し
下载 


tomoyo-users メーリングリストの案内
Back to archive index