Secure OS

アプリケーションの設定解析による
セキュリティポリシーの自動生成に
関する研究
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の開発への参加