Transcript slide
セキュリティ機構のオフロードを考慮 した仮想マシンへの動的メモリ割当 所属:機械情報工学科光来研究室 指導教員:光来健一 准教授 学籍番号:06237018 名前:岡﨑 正剛 侵入検知システム(IDS) IDSは攻撃者の侵入を検知するために用いられ ている ネットワークパケットの解析 ファイルの監視 例:Tripwire ・定期的にディスクをチェック ・勝手に変更・追加されたファイルを 発見すると警告 tripwire 監視 IDS自身が攻撃を受ける 機能の停止・改ざん 侵入の検知ができなくなる ディスク Tripwire Tripwireに対する攻撃 ウィルス 不正アクセス 侵入 仮想マシンを用いたオフロード サーバーを仮想マシンで動かし、IDSだけ別の仮 想マシンで動かす手法 IDSが攻撃を受けにくくなる 仮想マシンとは (特権ドメイン)(一般ドメイン) ドメイン0 ドメインU 仮想マシン 仮想マシン ハードウェアをエミュレートする事で 仮想的に作成されたマシン 仮想マシン同士は分離 Xenにおける構成 ドメイン0でIDSを動かす 特権をもった仮想マシン ドメインUでサーバーを動かす IDS 監視 IDSのオフロード ウィルス 不正アクセス IDSによるメモリ消費の問題 オフロードされたIDSがドメイン0のメモリを使用 ドメイン0のメモリが不足する可能性 仮想マシン全体の性能低下につながる ドメイン0が全ての仮想マシンを管理するため ドメイン0にあらかじめ割り 当てるのは無駄が大きい IDSが動作していない時は 不要 ドメイン0 ドメインU IDS 監視 メモリ メモリ Xen オフロード時のメモリ使用状況 提案:Balloon Performer IDSが使用するメモリを考慮して、仮想マシンに メモリを動的に割り当てる IDSのメモリ消費量を定期的に測定 IDSが使うメモリをドメインUから ドメイン0に移動 IDSが終了したらドメインUに メモリを返す IDSのオフロードによってドメイン0の メモリが圧迫されない ドメインU ドメイン0 IDS 監視 Balloon Performer メモリ メモリ Xen IDSが使用するメモリの移動 IDSが使用するメモリ IDSのメモリ消費には2種類ある IDSプロセス自身が使用するメモリ プログラム本体、データ領域 OS内に作られるファイルキャッシュ IDSがファイルを読み込んだ時にキャッシュとして保持 IDS Tripwireのメモリ消費量 プロセス:121MB ファイルキャッシュ:407MB OS HDD IDSプロセスの消費メモリ量の測定 ドメイン0のprocファイルシステムから取得 /proc/プロセスID/statusから消費メモリ量が取得で きる pidofコマンドを使ってIDS名からプロセスIDを取得 IDS OS HDD statusファイル 使用ファイルキャッシュ量の測定 ファイルキャッシュ割当時にプロセスIDを記録 するようにOSを改造 従来はどのプロセスが割り当てたかわからなかった 特定のプロセスが使用したファイルキャッシュ量を取 得するシステムコールを追加 IDS その他のプロセス pid = 50 pid = 50 pid =100 システムコール 50 4kB HDD 50 50 100 100 OS 12kB 仮想マシンへの動的メモリ割当 XenAPIを利用して仮想マシンのメモリ割り当て を増減する XenAPIとは Xenの操作を簡単に行う為に準備されているAPI 割り当てるメモリ量をバイト単位で設定できる ドメイン0 balloon driverが仮想マシン内 のメモリを確保・解放 ドメインU Balloon Performer balloon driver XenAPI hypercall Xen 実験1 プロセスの消費メモリを考慮したメモリ割当の確認 実験用に作成したプログラムをドメイン0で実行 15秒ごとにランダムにメモリ領域の確保・解放 プロセスの消費メモリとドメイン0に追加されたメモリ量を比較 メモリ(MB)実験環境 140 120 100 80 60 40 20 0 0 メモリ(MB) CPU:Intel Core 2 Quad 2.83GHz メモリ:4GB 仮想化ソフトウェア:Xen プロセスの消費メ ドメイン0 ほぼ完全に一致 モリ(MB) 割当メモリ:1.5GB カーネル:Linux 2.6.18.8 ドメインU 割当メモリ:1.5GB 時間(s) 15 30 45 60 75 90 105 120 135 150 カーネル:Linux 2.6.27.5 メモリ(MB) 140 120 100 80 60 40 ドメイン0に追加さ れたメモリ(MB) 20 0 時間(s) 0 15 30 45 60 75 90 105 120 135 150 時間(s) 実験2 ファイルキャッシュを考慮したメモリ割当の確認 Tripwireの実行中にOS内に確保されたファイルキャ ッシュの量とドメイン0に追加されたメモリ量を比較 メモリ(MB) メモリ(MB) メモリ(MB) 450 450 400 400 350 350 300 Tripwireの使用 キャッシュ(MB) ほぼ完全に一致 250 300 250 200 200 150 150 ドメイン0に追加 されたメモリ(MB) 100 100 50 50 時間(s) 0 0 10 20 30 40 50 60 70 80 時間(s) 0 0 10 20 30 時間(s) 40 50 60 70 80 関連研究 OffloadCage [新井ら‘09] ドメイン0にオフロードしたIDSのCPU消費量を考慮したス ケジューリング Balloon PerformerはIDSの使用メモリ量を考慮して動的メ モリ割当を行う SEDF-DC [Gupta et al. ‘06] ドメイン0側で動くデバイスドライバのCPU消費を考慮した スケジューリング ドメイン0がドメインUのために行う入出力処理への対応 まとめ IDSの使用メモリを考慮した仮想マシンへの動的メ モリ割当を提案 IDS自身の使用メモリ量と使用ファイルキャッシュ量を測定 IDSのメモリ消費を考慮して仮想マシンへのメモリ割当を 変更 実験により、正確に動的メモリ割当ができることを確認 今後の課題 より柔軟な動的メモリ割り当て手法の開発