アプリケーションの設定解析による セキュリティポリシーの自動生成に 関する研究 sod(B4) 親:trueさん Secure OS / Trusted OS ﻪ強制アクセス制御(MAC) ﻪ最小特権 /var/www/ ○ ×× read/append /etc/shadow Secure OS MAC × × attacker apache >_ shell Secure OSの一例 ﻪ ﻪ ﻪ ﻪ Linux - SELinux, LIDS, TOMOYO, etc… Solaris - Trusted Solaris FreeBSD - Trusted BSD PitBull, SecuveTOS, etc… ﻪ数多くのSecure OSが研究されている ACL(セキュリティポリシー) ﻪ粒度や形式は実装によって異なる ﻪsubject(主体)とobject(対象)の関係を定義 ﻩRead, Write, Append, Execute, etc… file B read Dir A read/write file A read/append read/write Process B Process A fork 通常のOSを運用する流れ ﻪ通常Linux環境にapacheを導入する場合 Install Config httpd.conf Run 実際のSecure OSを運用する流れ ﻪSELinux環境にapacheを導入する場合 Install Config Config httpd.conf SecurtyPolicy Run MACのACLにおける問題 ﻪ通常のDACとは別にACLが必要 ﻩ粒度が高くなればなるほど設定は複雑に ﻩ管理対象が増えれば増えるほど管理は困難に ﻪACLは環境によって異なる ﻩapacheだけでも様々なパターンが存在 ﻯ/usr/local/etc/apache/ ﻯ/etc/apache/ ﻯ/etc/httpd/ アプローチ ﻪ設定ファイルから自動的にポリシを生成 config file ○プログラムの設定 ・~にあるファイルを読む ・Aというファイルに追記 ・X番PortをListen ACL 以下を許可 ・○が~にあるファイルを読む ・○がAというファイルに追記 ・○がX番PortをListen アプローチ アプリケーションの設定 ﻪアプリケーションの設定ファイル ﻩアプリケーションの振る舞いを定義 httpd.confか ら ﻩアプリケーションに必要なリソースの定義 読み出して はじめて理解 apache read httpd.conf Port Listen DocumentRoot モデルの提案 ﻪPolicyAutoGenSystem Software1 Soft2 ﻩConfig Parserを統合管理 ﻩポリシを自動生成 Conf1a Conf1b Conf2 ﻪConfig Parser ﻩSoftware毎に用意される ﻩAutoConfのように生成 Config Parser1 CP2 PolicyAutoGenSystem ACL OS 実装環境 ﻪSELinux ﻩLSMを用いて実装されるSecure OS ﻩ非常に粒度の細かい設定が可能 ﻪReference Policy ﻩ個々のアプリケーションのPolicyをModule化 ﻩアプリケーション間の依存性の解決 ﻯapache(enable cgi) + ypbindなど SELinux ﻪNSAが開発 ﻩRedhatとTresys社がメインで開発 ﻪ強制アクセス制御(MAC) ﻩType Enforcement ﻯプロセス毎にアクセス制限を行う機能 ﻩRole Based Access Control ﻯロール毎に権限を分割する ﻪLSM(Linux Security Module) に対応 ﻩLinux Kernel 2.6以降 Reference Policy ﻪシステム全体にわたる ポリシを廃し、Moduleに分割 ﻩソフトウェア毎の依存性の問題の解決 ﻩallow文などをほぼ使わない設定を可能に ﻯ人間に理解しやすいマクロを用いる ﻳex) logging_read_all_logs(***_t) ﻯpolicyを開発するのはadminでもend-userでもない 実行イメージ ﻪ画面は完成イメージであり、 実際の完成物とは異なります… [root@skjn /sbin]# policy_autogen –t apache2 Checking for apache …ok SeverRoot… /etc/httpd … ok DocumentRoot… /etc/httpd… ok EnableCGI… true… ok ケーススタディ:apache apacheの情報を得るために ﻪapacheの設定ファイル ﻩapacheの起動用シェルスクリプト内に記載 ﻩfedora: “/etc/httpd/”, debian: “/etc/apache/” CONFFILE=/etc/httpd/conf/httpd_conf inittab /etc/rc.d/init.d/httpd Fedora:CONFFILE=… Vine: CONFFILE=… Debian: CONF=… 独自のshell scriptの場合も有 ※与えられない場合はデフォルト httpd.confから得られる情報(1/2) ﻪリソース情報 ﻩServer Root, Document Root, etc… ﻩListen Port /etc/httpd ServerRoot “/etc/httpd” DocumentRoot “/var/www/html” ServerRoot “/usr/local/etc/httpd” DocumentRoot “/usr/local/www/data” system_u:object_r:httpd_config_t /var/www(/.*)? system_u:object_r:httpd_sys_content_t /usr/local/etc/httpd system_u:object_r:httpd_config_t /usr/local/www/data /(/.*)? system_u:object_r:httpd_sys_content_t httpd.confから得られる情報(2/2) ﻪapacheの実行user/group ﻪUserDirの許可/不許可 ﻪCGIの利用/不利用 bool httpd_enable_homdirs false; bool httpd_enable_cgi false; bool httpd_enable_homdirs true; bool httpd_enable_cgi true; UseDir+ExecCGIの場合 •~user/cgi-bin/に限定して利用可能 •~user/以下全てで利用可能 apacheのポリシ生成における課題 ﻪExecCGI and AllowOverride All ﻩユーザの.htaccessによるExecCGIの可能性 ﻪModuleによっては問題が起こる可能性 ﻪweb管理専用特権ユーザなどアプリケー ションに閉じないポリシー管理問題 今後の課題 ﻪ学習 ﻩautoconf, automake, etc… ﻪ設計 ﻩSecurity Frameworkとしてworkするのが理想 ﻩautoconfのような支援環境/ツール ﻪ実装 ﻩまず最初にapache(httpd.conf)用のツールから ﻪReference Policyの開発への参加
© Copyright 2024 ExpyDoc