20091218 celf jamboree 31
TRANSCRIPT
Copyright(C)2009 NTT DATA CORPORATION
TOMOYO Linuxのご紹介
2009.12.18TOMOYO Linux Project半田哲夫[email protected]
CELF Japan Technical Jamboree 31
Copyright(C)2009 NTT DATA CORPORATION 1
本日のメニュー
Part 1:TOMOYO Linux 1.x の紹介
Part 2:TOMOYO Linux 2.x の紹介
Q&A
Copyright(C)2009 NTT DATA CORPORATION 2
TOMOYO Linux 1.x の紹介
Copyright(C)2009 NTT DATA CORPORATION 3
TOMOYO Linux 1.x について
2005年11月11日に1.0を公開
– 「学習モード」により振る舞いを記録し、「強制モー
ド」により記録された振る舞いをだけを許可することが
できる、アクセス制御機能
– Linuxカーネルに対するセキュリティ強化拡張
2009年11月11日に1.7.1を公開
– カーネル2.4.30以降および2.6.11以降に対応
– http://tomoyo.sourceforge.jp/
Copyright(C)2009 NTT DATA CORPORATION 4
TOMOYO Linux 1.x について
「パス名ベース」のアクセス制御であることと「学習モード」が存在することは知られているが、それだけではない。
– システム起動時から電源断までを制御下におく(1.0)
– システム管理者の操作を制限/なりすまし対策(1.0)
– ポリシー違反を対話的に処理する機能(1.1.1)
– ユーザIDなどに基づく条件付きアクセス許可(1.2)
– プログラム実行時のパラメータチェック機能(1.6.0)
– プログラム実行時のプリプロセッサ機能(1.6.0)
– ステートフルなアクセス許可(1.6.0)
– スリープペナルティ機能(1.6.0)
Copyright(C)2009 NTT DATA CORPORATION 5
TOMOYO Linux 1.x について
システム起動時から電源断までを制御下におく
– /sbin/initが実行されるタイミングから
/sbin/poweroffで電源が切れる直前までの全
ての動作を制御下に置くことも可能。
• 「学習モード」が全ての動作を記録してくれ
るので、それをチューニングおよびレビュー
して適用するだけ。
• SELinuxやAppArmorよりも適用しやすい。
Copyright(C)2009 NTT DATA CORPORATION 6
TOMOYO Linux 1.x について
システム管理者の操作を制限/なりすまし対策
– もちろん、コンソールやSSHセッションのよ
うに特定の範囲だけを制御下に置くことも可能。
– 状態遷移が木構造になっていることを利用して、
ログイン時に追加のユーザ認証を行うことによ
り、パスワードクラック対策や認証モジュール
の脆弱性への対策が可能。
Copyright(C)2009 NTT DATA CORPORATION 7
TOMOYO Linux 1.x について
ポリシー違反を対話的に処理する機能
– 「強制モード」で動作中にポリシー違反が発生
した場合に、アクセス要求を許可するかどうか
を対話的に指定することが可能。
• ソフトウェアアップデートによる突発的なア
クセス要求やパス名の変化に対処する。
• アプリケーション用のポリシーがまだロード
されていなかった場合に、その場でポリシー
をロードさせることも可能。
Copyright(C)2009 NTT DATA CORPORATION 8
TOMOYO Linux 1.x について
ユーザIDなどに基づく条件付きアクセス許可
– ユーザのIDやファイルの所有者IDなどの情
報に基づいてアクセスを制限することが可能。
• 例:rootユーザではない場合に/bin/shの実行を許可
– allow_execute /bin/sh if task.uid!=0
task.euid!=0
• 例:rootが所有者の場合に/tmp/fileの更新を許可
– allow_write /tmp/file if path1.uid=0
Copyright(C)2009 NTT DATA CORPORATION 9
TOMOYO Linux 1.x について
プログラム実行時のパラメータチェック機能
– 引数や環境変数などの内容に基づいてプログラ
ムの実行の可否を判断することが可能。
• 例:/bin/sh -c "uname -r"の場合だけ/bin/shの実
行を許可
– allow_execute /bin/sh if exec.argc=3
exec.argv[0]="/bin/sh" exec.argv[1]="-c"
exec.argv[2]="uname¥040-r"
Copyright(C)2009 NTT DATA CORPORATION 10
TOMOYO Linux 1.x について
プログラム実行時のプリプロセッサ機能
– プログラムの実行要求を横取りして、ポリシー
で指定されたプログラムに任意の処理(例えば
/tmp/にtmpfsをマウントさせたり、標準入出
力を繋ぎかえさせたり、コマンドライン引数を
修正させたりなど)を行わせることが可能。
• 例:プログラム実行時の引数を記録してから実行する
– execute_handler /usr/lib/ccs/audit-exec-
param
Copyright(C)2009 NTT DATA CORPORATION 11
TOMOYO Linux 1.x について
ステートフルなアクセス許可
– 状態変数を用いた権限の分割が可能。
• 例:LANからのクライアントには/bin/shを許可、
WANからのクライアントには/bin/rbashを許可
– allow_network TCP accept @LAN @any ; set
task.state[0]=1
– allow_network TCP accept @WAN @any ; set
task.state[0]=2
– allow_execute /bin/sh if task.state[0]=1
– allow_execute /bin/rbash if task.state[0]=2
Copyright(C)2009 NTT DATA CORPORATION 12
TOMOYO Linux 1.x について
スリープペナルティ機能
– 「強制モード」でのポリシー違反の発生時に、
ポリシー違反を起こしたプロセスを指定された
時間強制的にスリープさせることで、CPU使
用率を下げ、無駄な電力消費を抑えることが可
能。(ポリシーで許可されていない要求を永遠
に繰り返すプロセスに対する防御として有
効。)
Copyright(C)2009 NTT DATA CORPORATION 13
TOMOYO Linux 1.7 について
TOMOYO Linux 2.2 がメインライン化されたの
を契機に、Linux Kernel開発者コミュニティから
のフィードバックを取り込んで、仕様変更と機能
強化を行ったもの
– パス名の再帰的指定の追加(1.7.1)
– プロファイルの仕様変更(1.7.0)
– ガベージコレクタ機能の追加(1.7.0)
– パーミッションチェックの細分化(1.7.0)
– アクセスログの詳細化(1.7.0)
Copyright(C)2009 NTT DATA CORPORATION 14
TOMOYO Linux 1.7 について
パス名の再帰的指定の追加
– 「/」+「1回以上のdir/の繰り返し」に一致す
る/¥{dir¥}/というワイルドカードが追加され
た。
• 例:/var/www/html/以下の¥*.htmlの参照を許可
– allow_read /var/www/html/¥{¥*¥}/¥*.html
• 例: /var/www/以下の.svnおよび.gitディレクトリ
の外にある全てのファイルの参照を許可
– allow_read /var/www/¥{¥*¥-.svn¥-.git}/¥*
Copyright(C)2009 NTT DATA CORPORATION 15
TOMOYO Linux 1.7 について
プロファイルの仕様変更
– TOMOYO 1.6までは、カテゴリ単位(ファイル/ネッ
トワーク/ケイパビリティ等)での指定しかできなかっ
た。
– TOMOYO 1.7では、項目単位(ファイルのオープン/
ファイルの新規作成/TCP接続要求の送信/TCP接
続要求の受信等)での指定が可能になった。これにより、
例えばファイルの読み書きについてはSELinuxや
Smackに任せ、ディレクトリエントリの変更操作は
TOMOYOによる制限およびアクセスログの取得も行う
という使い方が可能になった。
Copyright(C)2009 NTT DATA CORPORATION 16
TOMOYO Linux 1.7 について
ガベージコレクタ機能の追加
– TOMOYO 1.6までは、ポリシーを削除してもポリシー
が使用していたメモリ領域を解放することができなかっ
た。そのため、再起動以外に不要になったメモリを解放
することができなかった。
– TOMOYO 1.7では、ポリシーを削除するとポリシーが
使用していたメモリ領域が自動的に解放されるように
なった。
Copyright(C)2009 NTT DATA CORPORATION 17
TOMOYO Linux 1.7 について
パーミッションチェックの細分化
– TOMOYO 1.6までは、ファイルに対するアクセス制御
ではパス名しかチェックしていなかった。
– TOMOYO 1.7では、ファイルに対するアクセス制御に
関して、ファイル作成時のモード、パーミッションや所
有者やグループ変更時の値、ioctlのコマンド番号など、
数値で表現されているパラメータもチェックされるよう
になった。
• 例:/etc/shadowのパーミッションを0600に変更
許可
– allow_chmod /etc/shadow 0600
Copyright(C)2009 NTT DATA CORPORATION 18
TOMOYO Linux 1.7 について
アクセスログの詳細化
– if節で使用できる全ての情報を取得できるよう
になり、「学習モード」を使わずに、アクセス
ログからif節付きのポリシーを生成できるよう
になった。
• 「学習モード」では学習されない条件も付与
されるので、より厳格な制限が可能
Copyright(C)2009 NTT DATA CORPORATION 19
TOMOYO Linux 1.7 について
元々はPCやサーバでの利用を想定して開発されたが、組込みでの利用にも向いている。
– アーキテクチャ非依存
– ファイルシステム非依存
– マルチコールバイナリ( BusyBox )の識別が可能
– 省メモリ
– 既存プログラムの修正が不要
Androidにも適用できる。
– TCP/IP で通信するエージェント経由で TOMOYO を制御可能
Copyright(C)2009 NTT DATA CORPORATION 20
どうぞお試しください
YouTubeで動画を観れます。
– http://www.youtube.com/results?search_query=tomoyo+linux
LiveCDもあります。
– CentOS 5 http://tomoyo.sourceforge.jp/1.7/1st-step/centos5-live/
– Ubuntu 9.10 http://tomoyo.sourceforge.jp/1.7/1st-step/ubuntu9.10-live/
Copyright(C)2009 NTT DATA CORPORATION 21
TOMOYO Linux 2.x の紹介
Copyright(C)2009 NTT DATA CORPORATION 22
TOMOYO Linux 2.2 について
2009年6月10日、Linuxカーネル2.6.30に採用
– TOMOYO 1.6から出発し、メインラインに採
用してもらうためにLSMを使用するように改造
されたバージョン。
• SELinuxやSmackやAppArmorとの併用は
不可能
– まだProof of Conceptレベルの内容
• ファイルに対するアクセス制御の一部しか実
装されていない。
Copyright(C)2009 NTT DATA CORPORATION 23
TOMOYO Linux 2.2 について
今後の予定
– カーネル2.6.33でパス名の再帰的指定が追加
Call for reviewers– 既にTOMOYO 1.7.1とほぼ同じレベルまで実
装できてはいるが、LSMメーリングリストでの
レビューを受けないと採用されない。
– LSMメーリングリストでのレビューに参加して
いただける方を募集しています。
Copyright(C)2009 NTT DATA CORPORATION 24
Q&A
Copyright(C)2009 NTT DATA CORPORATION 25
TOMOYOは株式会社NTTデータの登録商標です。LinuxはLinus Torvalds氏の日本およびその他の国における登録商標または商標です。
その他の商品名、会社名、団体名は、各社の商標または登録商標です。