160 likes | 310 Vues
Hussa: スケーラブルかつセキュアなサーバアーキテクチャ ~低コストなサーバプロセス実行権限変更機構~. 電気通信大学 情報工学科 原 大輔 中山 泰一. アジェンダ. 背景 個人でウェブサイトを公開するユーザの増加 ウェブサーバ共有の危険性 実行権限に関する既存技術 POSIX ACL, セキュア OS, コンテナ /VM, Harache/Hi-sap 設計 実行権限変更 ユーザスクリプトによる実行権限変更制限 基礎性能評価実験 まとめ. 背景. 個人でウェブサイトを公開するユーザの増加 Weblog サービス 手軽、無料
E N D
Hussa: スケーラブルかつセキュアなサーバアーキテクチャ~低コストなサーバプロセス実行権限変更機構~ 電気通信大学 情報工学科 原大輔中山泰一 FIT2009@仙台
アジェンダ • 背景 • 個人でウェブサイトを公開するユーザの増加 • ウェブサーバ共有の危険性 • 実行権限に関する既存技術 • POSIX ACL, セキュアOS, コンテナ/VM, Harache/Hi-sap • 設計 • 実行権限変更 • ユーザスクリプトによる実行権限変更制限 • 基礎性能評価実験 • まとめ
背景 • 個人でウェブサイトを公開するユーザの増加 • Weblogサービス • 手軽、無料 • 例:Blogger, はてなダイアリー、ココログ • ホスティングサービス • 自由度が高い/好みのツールをインストール、有料(月額数百円~) • サービス例:XREA, さくらインターネット、OCN • ツール例: • Weblog: Movable Type, WordPress, tDiary • Wiki: PukiWiki, Hiki, MediaWiki, MoinMoin • CMS: XOOPS, Plone, Zope, 島根県CMS
ホスティングサービス • 専有型と共有型 ウェブサーバプログラム サイト ・・・ … 計算機 基礎 基礎 基礎 • 個人の利用に適している • 本研究のターゲット
ウェブサーバ共用の弊害(1/2) • ウェブサーバプログラムのプロセス構成(例:Apache) • 親プロセス(1個):80番ポートのバインド等⇒ root権限で動作 • サーバプロセス(複数個):リクエスト処理⇒ 専用の一般ユーザ(専用ユーザ)の権限で動作(例:apache, www-data, www等) • 各サイトのコンテンツファイルのパーミッション • 専用ユーザがアクセス可能である必要有⇒ UNIXのパーミッションモデル”owner/group/other”のotherにread/write/executeパーミッションを付与
(1) HTTPリクエスト受信 ウェブサーバ共用の弊害(2/2) • 計算機を共用する他のユーザからファイルを盗視・改竄される危険性有 • (0) ファイルパーミッション • rw-/---/r--(静的コンテンツ(例:HTML、画像)) • rw-/---/rw-(ログ、wikiのデータファイル等) • rwx/---/r-x(CGIスクリプト) ウェブサーバ ウェブブラウザ www A www www Malicioususer B (3) レスポンス送信 www C … … … (2) リクエスト処理 www: 実行権限 HTTP ユーザアカウント コンテンツファイル サーバプロセス コマンドラインツール
実行権限に関する既存技術(1/4)~POSIX ACL~ • ユーザ単位でのアクセス制御を提供 • UNIXのパーミッションモデルを拡張 • コマンド攻撃(cp, rm, etc.) ⇒ 盗視・改竄を防止 • コンテンツファイルのread/write権限を専用ユーザに付与 • スクリプト攻撃(CGI) ⇒ 盗視・改竄を防止 • suEXECを併用し、CGIをサイト毎に異なるユーザ権限(≠専用ユーザ)で実行 • 問題点:低性能(動的コンテンツ) • suEXECはプロセス生成/プログラム実行を各2回必要 • 動的コンテンツ高速配信手法である組込みインタプリタ(mod_ruby, etc.)利用⇒ 盗視・改竄を防止できない www fork(), execve() setuid(),setgid() root⇒A fork(), execve() A To be terminated
実行権限に関する既存技術(2/4)~セキュアOS~実行権限に関する既存技術(2/4)~セキュアOS~ • 強制アクセス制御 • 全てのユーザとプロセスに例外なくアクセス制御を実施 • 最小特権 • ユーザとプロセスに動作上必要最小限の権限を付与 • root権限の制限が可能 ⇔ 従来のUNIX系OSはroot権限によりOSの全ての操作が可能 • サーバソフトウェアのセキュリティホールや設定誤り等によりroot権限が奪取された場合の被害を最小化 • コマンド攻撃(cp, rm, etc.) ⇒ 盗視・改竄を防止 • スクリプト攻撃(CGI, 組込みスクリプト)⇒ 盗視・改竄を防止できない
実行権限に関する既存技術(3/4)~コンテナ/VM~実行権限に関する既存技術(3/4)~コンテナ/VM~ • コンテナ:OSレベルの仮想化技術 • サーバソフトウェアを実行するコンテナを同一OS上で複数同時に動作⇒ サイト毎にコンテナを割り当てることで擬似的な専用サーバを構築可能 • 問題点:仮想化のオーバヘッド・カーネル修正 • OS当たりに収容可能なコンテナ数は数百程度に限定 • 仮想計算機(VM) • 同一計算機上で複数のOSを同時に動作 • 問題点:仮想化のオーバヘッド・カーネル修正
実行権限に関する既存技術(4/4)~Harache/Hi-sap~実行権限に関する既存技術(4/4)~Harache/Hi-sap~ root • 我々がこれまでに提案したシステム • Harache • suEXECのCGI実行性能を改善:最大1.7倍 • プロセス生成/プログラム実行を各1回に削減 • 問題点:組込みインタプリタの実行性能 • HTTPセッション毎にサーバプロセス終了 • Hi-sap • 組込みスクリプトの実行性能改善 • Apacheと比較して、平均2.0%の低下 • リバースプロキシ型の構成を取り、サーバプロセスを再利用 • 問題点:遅延時間 • Apacheと比較して、平均1.24倍 setuid(),setgid() A To be terminated Dispatcher forward A B C workers Reusable
設計~実行権限変更~ • サーバのプロセスをroot権限で起動(=Harache) • リクエストされたサイトを所有するユーザの実行権限に遷移 • seteuid(), setegid()システムコール(≠Harache) • リクエスト処理&ブラウザにレスポンス送信 • root権限に遷移 • seteuid(), setegid()システムコール • ファイルパーミッションをownerのみに付与した状態でのサービス提供が可能(=Harache/Hi-sap)⇒ セキュリティ確保 • seteuid(), setegid()システムコール利用(≠Harache)⇒ 性能・遅延面で有利
設計~ユーザスクリプトによる実行権限変更制限~設計~ユーザスクリプトによる実行権限変更制限~ • CGI/組込みスクリプト • setuid(), setgid()系のシステムコールを実行可能⇒ 悪意のあるユーザにroot権限を奪取される危険性有 • 解決策 • スクリプトが実行するsetuid(), setgid() 系のシステムコールをフックして無効化⇒ setuid(), setgid()系のシステムコール実行を 本システムのみに制限
基礎性能評価実験~条件~ • 環境 • 対象システム • 本システム Apache HTTP Server 2.2.10のモジュールとして実装 • Apache HTTP Server 2.2.10 • 対象コンテンツ • phpinfo()関数を呼び出すPHPスクリプト(データ転送量:約40KB/req) • サーバ計算機にインストールされているPHP処理系の各種情報を出力 • ベンチマークツール • httperfベンチマーク0.9.0
基礎性能評価実験~結果~ • Apacheと比較して平均0.5%、最大4.7%の性能低下⇒ 非常に小さなオーバヘッドであり、実用に耐え得る
まとめ • UNIX系OSの実行権限に関する問題点を明確化 • 問題を解決するための実行権限変更機構を提案 • 基礎性能評価の結果、実用に耐え得る性能を達成 • 今後の課題 • セキュアOSの適用(JSSST第26回大会にて発表予定) • 実アプリケーションを用いた性能評価 • 他のサーバプログラムへの適用の検討