セキュアかつ高性能な ウェブサーバアーキテクチャ の提案 電気通信大学 情報工学科 原 大輔 中山 泰一 2005/11/25 WIT 2005@小倉 1 発表の流れ • • • • • • • はじめに 背景 目的 ウェブサーバアーキテクチャ 関連研究 議論 まとめ 2005/11/25 2 はじめに • 共有型ホスティングサービス向けのウェブ サーバアーキテクチャを提案(数百~数千 サイト/サーバ) • キーワード – 動的コンテンツの高速配信 • 組み込みインタプリタ – サーバ内部のセキュリティ • サーバを共有するサイト間のセキュリティ 2005/11/25 3 はじめに(続き) • 組み込みインタプリタ (mod_ruby) – 最大7.6倍、平均3.7倍の性能差 (vs CGI) 160 Throughput (#N/s) 140 120 100 mod_ruby 80 Ruby CGI 60 40 20 0 20 2005/11/25 40 60 80 100 120 140 Request frequency (#N/s) 160 180 4 はじめに(続き) • ホスティングサービス – サーバ内部のセキュリティのために組み込み インタプリタを使わない ・・・勿体無い • 本研究のモチベーション – サーバ内部のセキュリティを保持しつつ、組み 込みインタプリタによる高速化を実現したい! 2005/11/25 5 背景 • ウェブサイトを公開する人の増加 • 共有型ホスティングサービスに人気集中 – 1台のサーバを数百~数千サイト規模で共有 2005/11/25 6 背景 既存のウェブサーバの問題 • サーバ組み込みのモジュールとして提供される プログラム(組み込みモジュール)をセキュアか つ便利に利用できない – 組み込みインタプリタ • サーバプロセスにインタプリタを内包することにより、動的コ ンテンツを高速配信 ☓サーバを共有する別のユーザからファイルを盗視・改ざんさ れる危険性 – WebDAV • ブラウザから HTTP 経由でサーバ上のファイルを操作 ☓利用者がサーバにリモートログインしてファイルを直接操作 することが困難 2005/11/25 7 背景 サーバ内部のセキュリティ ID、パスワード A さんのサイト B さんのサイト 認証 認証コンテンツ 閲覧者 C さんのサイト サーバ 認証を掛け、コンテンツの閲覧を制限できる ⇒ ウェブにも機密データが沢山! 2005/11/25 8 背景 サーバ内部のセキュリティ(続き) ファイルパーミッション •公開ファイル: rw-/---/r-- (604) •データファイル: A さんのサイト B さんのサイト 認証コンテンツ rw-/---/rw- (606) C さんのサイト 不正閲覧 サーバ サーバ内部からは認証なしにコンテンツを閲覧可能 (cp, rm) 2005/11/25 9 背景 サーバ内部のセキュリティ(続き) ならば、POSIX ACLを用いて、 ウェブサーバの実行ユーザ (www) だけに許可を与える ファイルパーミッション •公開ファイル: A さんのサイト B さんのサイト 認証コンテンツ rw-/---/--- (600) +www に読み取り許可 C さんのサイト •データファイル: rw-/---/--- (600) 不正閲覧 +www に書き込み許可 CGI サーバ CGI も www の権限で動作 2005/11/25 10 背景 サーバ内部のセキュリティ(続き) さらに、suEXEC を 用いて、CGI を各サイト 所有者の権限で実行 A さんのサイト B さんのサイト 認証コンテンツ C さんのサイト 不正閲覧 PHP スクリプト サーバ 組み込みインタプリタも www の権限で動作 2005/11/25 11 背景 Harache (文献[1][11]) • サーバプロセスをサイトごとに異なるユー ザ権限で実行 root ② ① ③ GET /~userA/ ④ 閲覧者 2005/11/25 root userA root ① A さんのサイトにリクエスト ② userA にユーザ権限変更 ③ リクエスト処理 ④ レスポンスを返す 12 背景 Harache (続き) ○組み込みモジュールをセキュアかつ便利に利用 できないという問題を解決 – 全てのコンテンツ(静的・CGI・組み込みスクリプト)の ファイルパーミッションが所有者のみで OK – WebDAV 経由で作成されたファイルの所有者がサイト 所有者と一致 △組み込みインタプリタによる高速化を十分活用で きていない – セッション毎にサーバプロセスを終了(= CGI) 2005/11/25 13 目的 • セキュアかつ高性能なウェブサーバアーキ テクチャ、 の実現 – 共有型ホスティングサービスのような大規模 環境を対象 2005/11/25 14 設計 の設計 • サーバ内の高セキュリティ → サーバプロセスをパーティション毎に異なる ユーザ権限で実行(Harache と同様) • 動的コンテンツの高速配信 → 組み込みインタプリタの利用 Harache とは異なり、組み込みインタプリタに よる高速化に対応 ※パーティション・・・ウェブオブジェクトの分割単位 サイト、コンテンツ、QUERY_STRING など 2005/11/25 15 設計 パーティション:サイト Website A Website B Wiki Website C Wiki Wiki Weblog サーバプロセスをサイト毎に 異なるユーザ権限で実行 Weblog Weblog CMS 2005/11/25 CMS Web Server OS 16 設計 パーティション:コンテンツ Website A Website B Wiki Website C Wiki Wiki Weblog サーバプロセスをコンテンツ毎に Weblog 異なるユーザ権限で実行 Weblog CMS 2005/11/25 CMS Web Server OS 17 設計 基本構成 • パーティション:サイト – ホスティングサービスでの一般的な契約形態 • 構成要素 – dispatcher • リバースプロキシとして動作し、リクエストを worker に振り分ける – worker • パーティション毎に存在し、リクエスト処理を行なう 2005/11/25 18 設計 性能・スケーラビリティ • ウェブサーバの性能低下要因 – スラッシング(文献[1]) • メモリの有効利用の必要性 – worker プロセスはリクエストに起因して生成 – リクエストがなければ終了 → 計算資源の無駄な使用を防ぐ 2005/11/25 19 HTTP UNIX Domain socket 動作概略 hisapd GET / HTTP/1.1 Host: www.C.net dispatcher www root www root 閲覧者 リクエストがworker C がアクティブか ない リバース 問い合わせ レスポンス プロキシ A B C A A 2005/11/25 worker 終了 C B B C C worker worker 生成 … 処理 20 設計 拡張機能 • アクセス制御機構との連携 – セキュア OS などと統合し、更に柔軟で強力な アクセス制御を提供 • パーティションの分割粒度変更 – コンテンツや QUERY_STRING など • 認証情報に応じたアクセス制御 – クライアント(閲覧者)に応じてサーバプロセス を異なるユーザ権限で実行 2005/11/25 21 設計 アクセス制御機構との連携 • ウェブサーバ側の設定に合わせて、セキュ ア OS のポリシを自動生成(管理支援) • 管理ツールを開発 – 新しい worker を追加すると、自動的にポリシ も生成されているというイメージ 2005/11/25 22 設計 認証情報に応じたアクセス制御の例 特権 ID、パスワード A さんのサイト B さんのサイト 認証 認証コンテンツ 認証コンテンツ C さんのサイト ホスティング業者 認証コンテンツ 認証コンテンツ 2005/11/25 一度特権ユーザで認証されれば、 全サイトの全コンテンツにアクセス可能 サーバ 23 関連研究 • サンドボックス・VM – サーバソフトや OS を他と隔離して実行 ○サイト毎にサンドボックス/VM を割り当てれば サーバ内の高セキュリティを達成 ☓サイト数に対するスケーラビリティが極めて低い 2005/11/25 24 関連研究(続き) • PHP セーフモード – スクリプトにより操作できるファイルの制限 – 変更できる環境変数の制限 – 特定の関数・クラスの無効化 ○サーバ内の高セキュリティを達成 ☓他の組み込みインタプリタでは実現されてお らず、標準的でない ☓使いにくい 2005/11/25 25 関連研究(続き) • Apache perchild MPM – サイト毎に異なるユーザ/グループ権限で ウェブサーバを実行 ○仕様上はサーバ内部の高セキュリティを達成 ☓サーバ起動時に各サイト専用のサーバプロセ スを固定数ずつ生成する必要があり、スケー ラビリティが低い ☓作りかけのまま開発ストップ 2005/11/25 26 議論 ウェブサーバ実現方法の比較 サーバ内部の セキュリティ 動的コンテンツ の処理性能 スーケーラビリティ 汎用性 通常* × ◎ ○ ○ suEXEC & POSIX ACL ○ × ○ ○ サンドボックス ・VM* ◎ ◎ × ○ PHP セーフ モード* ○ ◎ ○ × Apache perchild MPM ○ - △ ○ ◎ ◎ ○ ○ * 組み込みインタプリタ利用 27 * 2005/11/25 まとめ • 共有型ホスティングサービス向けのウェブサーバ アーキテクチャを提案 – セキュアかつ高性能 • 現在、実機上に実装中 • 電通大情報工学科情報工学実験に採用され、セ キュリティ評価を行なう予定(12月~) • 第47回プログラミングシンポジウムにて実装につ いて発表予定(来年1月) • http://www.hi-sap.net/ 2005/11/25 28 謝辞 • 本研究は、一部、独立行政法人情報処理 推進機構(IPA) 「未踏ソフトウェア創造事 業」の支援による • 貴重な御助言を下さった並木美太郎 PM に感謝致します 2005/11/25 29 おしまい ご清聴、ありがとうございました 2005/11/25 30
© Copyright 2024 ExpyDoc