pacsec2007のTOMOYO Linux講演
お疲れ様です。>関係者の人々
資料も早速公開されていた。
http://sourceforge.jp/projects/tomoyo/document/PacSec2007-ja-demo.pdf
一点よく分からない点を発見。
SELinuxにおけるドメインのジレンマ どうやって区別する? sshdから起動された安全なから起動された安全な/bin/sh シェルコードから起動された危険な/bin/sh Apache -> PHP -> system() --> /bin/sh 実は区別できません /bin/shなどのオブジェクトは一度になどのオブジェクトは一度に”1個”のラベルしか持つことができない ラベルベースのセキュリティに於いては時間軸の概念が無い
まず、TOMOYOだと「区別」できるのはわかります。
sshdからの/bin/shは
sshd-/bin/sh ドメイン
PHPのシェルコードから起動された/bin/shは
/sbin/httpd-/bin/shドメイン
で動く。
/sbin/httpd-/bin/shドメインは、事前に学習してなければ、
何も権限を持たないので、何も出来ない、
という理屈だと想像します。
SELinuxだと、次のようになります(ポリシ設定によります)。
sshdから起動された/bin/sh
→ ユーザによって、別々のドメインが割り当てられる
rootならばsysadm_t、ynakamならuser_tドメイン。
Apacheのシェルコードから起動された/bin/sh
→ Apacheのドメインをそのまま引継ぎ、httpd_tドメイン
SELinuxでも、呼び出され方によって、
/bin/shのドメインは、別になります。
TOMOYO Linuxは、
「学習していない履歴でプログラムを起動すると、そのプログラムは全て拒否な別ドメインで起動」
SELinuxは、
「ドメインを定義してないプログラムを起動すると、親ドメインを引き継ぐ」
という違いが現れてますね。
SELinuxも、
「ドメイン遷移してない実行をすると、実行拒否」
とかできても面白そうだけど、それやるとSELinuxじゃなくなっちゃいそう。
SELinux ドメインはポリシーを用いて事前に定義されている ドメインはポリシーを用いて事前に定義されている 階層構造を持たないためフラットである
というのがあった。
SELinuxの場合、確かに「ドメインの名前」はフラットで履歴を含んでないけど、
「ドメインの割り当てられ方」はフラットではないです。