SELinux Config Checker sod(B3) 親:trueさん SELinux ► MAC(強制アクセス制御) Role Based Access Control ►ユーザー(ロール)毎に権限を分割する ►最小特権に通じる Type Enforcement ►プロセス毎にアクセス制限を行う機能 ► LSM(Linux Security Module) に対応 Linux Kernel 2.6以降 SELinux 動作例 attack 攻撃者 apache root /etc/.*, /var/.* SELinuxに触れてみてください ► SELinuxサーバー (Fedora core 2) IP Address : 203.178.143.232 user : root Password : hoge ► wanwanからsshしてみてください 設定はほぼデフォルト(rootの権限は最小に設定) ps -Z, ls -Z SELinux用に拡張されています dmesg SELinuxの出力するログを閲覧可 rm -rf / などとやってみたら…? policy設定の手順例 仮設定作業 動作テスト 設定の見直し 実動作テスト ► プロセス特有のファイル かどうか ► サービスの実行に必要 な権限は与えられてい るか(サービスは正常に 動作するか) ► 本当に必要な権限か SELinuxに於ける問題点 ► policyが難解 プロセスにはドメイン、ファイルにはタイプ 膨大な量 policy.conf – 4MB – 20万行 ► 正しく設定されなければ無意味 不必要な権限の付与 → 最小特権に反する 使用するプログラムごとに設定が必要 ►動作しなかったり、脆弱性になる可能性 SELinux Config Checker 概要 ► Miss Configurationによる脆弱性の発生を防止 ► ポリシー監査 脆弱性になり得るルールの警告 ►権限の強いドメインへの遷移などの一般的な脆弱性 ►特定アプリケーションに特化した不必要な脆弱性 ► プロセス監査 不適当なドメインで動作しているプロセスの警告 ►initrc_tのまま稼動しているdaemonなど SELinux Config Checker 動作イメージ 設定ファイル 設定 ファイル *.te *.fc .checkrc %make reload マクロの展開・統合 policy.conf プロセス ルール セット ファイル SELinux Config Checker 設定 ► .checkrc 警告レベルと読み込むルールセットファイルを指定 ► ルールセットファイル general.rs – 一般的なルールセット ***.rs – 各アプリケーション毎に特化 ► 実際のルールセット (警告レベル)[0-9], (警告タイプ)[0-9][0-9], (正規表現を用いたルール).* 例)2,01,allow .*[^(kernel)]_t init_t:process transition; SELinux Config Checker 警告タイプの一例 ► This is Debug Alert. ► Warning Domain Trans. 危険なドメイン遷移 ► Enable to Write System Log. /var/log以下などにwriteする権限を保持 SELinux Config Checker 動作メカニズム 1. 2. 3. 4. 5. .checkrcを参照し、ルールセットを読み込む 警告レベル、警告タイプ、 ルール文(正規表現)を構造体に設定 システムに適用される設定の集合である policy.confを頭から一行ずつ比較 実際にマッチした行数と文字列をメモリを動的 に確保して格納 設定された警告レベルに合わせ、警告を表示 SELinux Config Checker 実行例 sod.te # Warning Domain Trans Ruleset. ●結果(抜粋) ●必要要件 2,01,allow.*_t.* WARNING: Enable kernel_t:process.*transition; to Write System log. alertlevel: 2 line: 102698 /var/log/sod.logに対してwrite権限 > allow sod_t var_log_t:file { getattr write }; (略) ●推奨設定 3,01,allow.*[^(init)]|[^(sysadm_ssh_agent)]|[^(sysadm_su)]|[^(sulogin)]_t. *log_domain(sod) sysadm_t:process.*transition; ユーザーは表示された警告メッセージを参照し、 → sod_log_tのファイル生成~ # Enable to Write System Log. “var_log_tタイプを付与されたファイルに対して書き込み権限を持つ” ●実際 2,02,allow.*[^(init)]|[^(initrc)]|[^(syslogd)]|[^(bootloader)]_t.* が正しいかどうかを判断する var_log_t:file.*write.*; allow sod_t var_log_t:file { write } ; 今後の課題 ► ルールセットの充実 ► 監査条件の充実 現状では一行ごとに比較しているだけ ► ユーザーへの警告方法の改善 現状ではpolicy.confの行数を表示するだけ ►実際にはどの設定ファイルが問題なのか? ► 警告タイプ定義の柔軟性向上 現状では警告タイプは定義されたもののみ ルールセットファイルで自由に定義出来るように
© Copyright 2024 ExpyDoc