スライド 1

Linux Security Modules:
General Security Support for the
Linux Kernel
米澤研究室 M1 増山隆
[email protected]
参考文献
Chris Wright et al.
Linux Security Modules: General Security
Support for the Linux Kernel
 Linux Security ModuleのWeb Page
http://lsm.immunix.org/

動機
Linuxカーネルにアクセス制御が組み込まれて
いる (POSIX.1e Capabilities)
 拡張したアクセス制限方法を提案しても実際
カーネルに適用するのは困難

 パッチは受け入れられにくい

一方、Linuxはローダブルカーネルモジュール
の機能を持つ
セキュリティーモデルをカーネルモジュールで
提供できるようなframeworkをつくろう
目標
Kernelの修正をできるだけ少なくする
 オーバーヘッドを押さえる
 できるだけ多くのセキュリティーモデルをサ
ポートする
 POSIX.1e Capabilitiesの論理をカーネルと
切り離してモジュール化する

LSMが提供するもの
Opaque "security" Fields
 Hooks
 "security" System Call

kernel
hook calls
security fields
security system call
kernel patch = LSM
security module
hook functions
Opaque "security" Field
void*型のsecurity フィー
ルドを追加し、セキュリテ
ィー情報を管理させる
Hooks
大域変数 security_ops にフックを登録
 対象のシステムコールと同じ引数で呼ばれる
例) mkdir

 security_ops->inode_ops->mkdir
プレフック。返値はintでerror変数に代入される。
0以外ならばmkdirは行われない
 security_ops->inode_ops->post_mkdir
ポストフック。"security"フィールドの値を設定する
ためにある。返値はvoid
"security" System Call
long sys_security (unsigned int id, unsigned int call,
unsigned long *args)
単に security_ops->sys_securityを同じ引数で
呼ぶ
 第一引数の値によって、動作、argsの解釈を決
定するようにモジュールが設計できる。
c.f.) socketcall system call

性能評価
(LMBench / Kernel Compilation)

ファイルのopen / createなどシステムコール
中心の小さなベンチマーク
 POSIX.1e
Capabilitiesモジュールで実験
 selectが最悪で 5%

Kernelのコンパイルは0.3%のオーバーヘッド
 (恐らく)POSIX.1e
Capabilitiesモジュールで実験
性能評価 (Webstone)

Netfilterをモジュール化
 単位時間あたりの接続回数で測定
LSM 4 %ほど LSM+SMPでは 7 %
 SELinux 16 % LSM+SMPでは 21 %


提供されるセキュリティーモジュールの性能
に依る
まとめ

LSMは数々のセキュリティーモデルをモ
ジュールの形で与えられるようにした
 SELinux
 DTELinux
 POSIX.1e
Capabilities