Document

セキュアかつ高性能な
ウェブサーバアーキテクチャ
の提案
電気通信大学 情報工学科
原 大輔 中山 泰一
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