アーキテクチャとアプリケーション Tom Vogt <tom@lemuria.org> SELinux アーキテクチャとアプリケーション Tom Vogt <tom@lemuria.org> 歓迎の挨拶 謝辞 短い自己紹介
開発の流れ プロトタイプ 米国国家安全保障局(NSA) とSecure Computing Corporation (SCC)によって開発された DTMach とDTOS プロトタイプ オペレーティング システム 後にアーキテクチャがより強化されたFlaskとなる (ユタ大学と共同) Linux FlaskのアーキテクチャとLinuxを統合 => SELinux 出典 : nsa.gov ウェブサイト NSA の "Information Assurance” ミッション ユタ大学: Flux research group, Fluke research OS 論文: “The Inevitability of Failure” 最初の一般向けリリース: 2000年12月22日
概要 はじめに TE: プロセスごとのアクセス制御 MAC: 強制アクセス制御 RBAC: ユーザごとのアクセス制御 ほとんどのアプリケーションに対しトランスペアレント (透過的)である Unixの許可と直交 TE, MAC, RBACの詳しい解説が後にあるので、ここではあまり説明しない。
背景 タイプの強化 OSとプログラム間で確固とした分離 異なるプログラム間も同様 ドメイン(SELinuxではタイプと同じ) ユーザーの例:同じドメイン/ タイプ内でいくつかのプログラムを実行できる。
背景 強制的アクセス制御 通常のUnix: ディレクトリ・アクセス制御 (DAC) MACでは: ポリシとオブジェクトラベルがアクセス権限を 決める。 ポリシーは誰がラベルを設定できるかを決め る。 アクセス権限はシステム(カーネル)により施行される
背景 ロールに基づくアクセス制御 アクセス権はロール(ユーザの役割分担)に定義される ロールは最低権限のルールに従う ユーザはロールを切り換えられる ポリシがユーザごとに得られるロールを決める
概要 仕組み カーネルパッチ ユーザ空間にいくつかのパッチ 管理ツールによる中央ポリシー ファイルシステムにセキュリティコンテキストのラベルが 付けられる (ext2/3 xattrに格納される) プロセスにセキュリティコンテキストのラベルが付けら れる オンデマンドでコンテキストを切り替える必要のあるプログラム用のユーザー空間のパッチ: ログイン処理(sshのようなリモートログインも含む)、cron等 lsやpsなどのコンテキストを表示するいくつかのツールにも当てはまる。
root:sysadm_r:example_t 基本 セキュリティ内容 root:sysadm_r:example_t SELinux User ID 現在の SELinux 役目 現在のドメイン/タイプ SELinuxのユーザーIdはUnix-User-IDと同一とは限らない(例: ほとんどのユーザーはuser_u) ユーザーIdは保持される。 すなわちロールを切り替えたり、suによりUnix-IDを変えても同じ。
基本 ユーザ、ロール、及びドメイン ユーザには、一つまたは複数の ロールが付与できる ユーザには、一つまたは複数の ロールが付与できる ロールは遷移することが可能 (newrole コマンド) ロールはドメインに許可される
基本 一例: ユ−ザである example はロールsysadm_rを 許可されている 実行時に, httpd_exec_t がhttpd_tのドメインに 入る これで、Apacheウェブサーバは専用の ドメインで実行する
トランジション ポリシーは …遷移ルールを決定する 自動遷移のルールを決定する 制限 Execのみで可能 プログラム実行中はトランジションはない 外部コードがモジュールとして実行される場合の遷移は認めら れない 我々がまだ解決していない例: ApacheのPHP
トランジション 例 リモートログイン (ssh) sshdがshellをforkする時に、デフ ォルトの役目とタイプに自動的に トランジション 定義されたドメインを持つプログ ラムを実行(screen) プログラム実行時にそのドメイン へトランジション
セキュリティの利点 かなり複雑なシステム 利点は何か? 深呼吸 :-)
セキュリティにおける利点 役目とドメイン: ドメインは完全に切り離せる 役目は最低特権ルールに従う 侵入者はシステム全部を破壊しない たとえルートパスワードが盗まれても… 信用できないコードも含めることができる みんな分かっているように信頼できないコードは避けられず、最強のシステムですら侵入される。
セキュリティにおける利点 RBAC 設定の例 4つのロール 役割の分離 必要があれば重複 注意: ユーザはロールを遷移する ことが可能 _ DBAとWebAdminが 同人物の場合もある プロトコルスタック 各ロールがそのジョブに必要なことを実行できる点を説明する。 そして、それ以上はできない…
セキュリティにおける利点 ポリシーと実行: 非常に細かなアクセス制御(syscallレベル) ごく小さな逸脱も監視できる ユーザの操作でなく、ポリシーによる管理 ユーザの間違いで生じる損害を最小限に抑える ユーザにポリシーに従うことを余儀なくされる SEへのログインについて説明(avcメッセージ) また、すべてのアクセス権限が1か所にある “便利な”ショートカットはない。
ポリシー 簡単な宣言言語を使用 M4マクロ わかりやすいシステム構造 GUIツールが利用可能になりつつある デフォルトのポリシーが利用可能 例が続く…
Demo プロトコルスタック ポリシーファイルの良い例: Ping.te mysqld.te ファイルラベル、 プロセスラベル 、 Id 、 ルートによる何らかの操作 、 ロールの切り換え(newrole -r) を紹介する。
インストール NSAウェブサイトかsourceforge.netからソースコードを ダウンロードしてコンパイルする Debian, Gentoo, SuSE 及び Redhat用のパッケージが 入手可能 ポリシーのインストールは特に重要な部分である 「make relabel 」を実行し、セキュリティ コンテキストを 再設定することを忘れないこと permissive モード で稼動してインストールを行うこと このスライドと次のスライドは短くて良い。主にコンファレンスの論文に入れる便利上のため。
関連リンク http://www.nsa.gov/selinux/ http://sourceforge.net/projects/selinux/ http://www.securityenhancedlinux.de http://selinux.lemuria.org
SELinux Thank you 質疑応答 聴衆に感謝。 質問を促す。 残った時間を質問の答えに充てる。