IDSオフロードを考慮した 仮想マシンへの動的メモリ割当 内田昂志* 岡崎正剛* * 九州工業大学 ** CREST 光来健一*,** IDSへの攻撃 侵入検知システム(IDS)を攻撃してから本来の攻 撃を行うことが増えてきた 例:Tripwire Tripwire プロセスを停止 ポリシーファイルの書き換え 改ざんしたファイルのチェックを回避 DBへの再登録 改ざん後のファイルの内容を正しいと判定 レポートの改ざん 検出結果が管理者に通知されない ディスク IDSオフロード 仮想マシン(VM)を用いてIDSだけを別のVMで動 かす手法が提案されている IDSが攻撃を受ける可能性を減らす Xenの場合、ドメイン0でIDSを動かす プロセス、ポリシーファイル、DB、レポート ドメインUのディスクイメージをマウントして監視 Tripwire ディスク ドメイン0 ドメインU メモリに関する問題 IDSがドメイン0のメモリを使うことになる VM間の公平性が失われる IDSをオフロードしたVMは割り当てられたサイズ以 上のメモリを使える システム全体の性能が低下する恐れがある IDSがドメイン0のメモリを使いすぎた場合 IDS ドメイン0 1GB 1GB ドメインU ドメインU 静的なメモリ割り当ての問題 VMとIDSのメモリサイズを静的に分割するとメ モリの有効活用ができない IDS分として固定メモリ量をドメインUから減らす IDSは増えたドメイン0のメモリを使う IDSが動いていない間もドメインUはそのメモリを 使えない IDS 0.3 ドメイン0 0.7GB 1GB ドメインU ドメインU Balloon Performer オフロードしたIDSが使用するメモリを考慮して VMのメモリを動的に割り当て直す ドメイン0で実行されているIDSのメモリ使用量を 測定 その分をドメインUのメモリ割り当てから減らす ドメイン0のメモリ割り当てを増やす IDS 1GB ドメイン0 ドメインU 0.3 ドメイン0 0.7GB ドメインU Balloon Performerの効果 IDSのメモリ使用量とドメインUのメモリ割り当 ての合計を一定に保つ VM間のメモリ割り当ての公平性を確保 IDSのオフロードの有無に関わらず ドメイン0のメモリの圧迫を防止 システム全体の性能低下を防ぐ メモリを有効活用できる IDSが動作していない間はドメインUが使える IDSが使用するメモリ 大きく分けて2種類のメモリを使用 プロセス自身が使用するメモリ テキスト領域、ヒープ ファイルの読み書きによって作られるファイル キャッシュ OSカーネル内に作られる Tripwireの場合 メモリの種類 使用量 プロセスメモリ 121MB ファイルキャッシュ 407MB (27,752個のファイルをスキャン) Tripwire OS ドメイン0 プロセスのメモリ消費量の測定 ドメイン0のLinuxカーネルが記録している /proc/<プロセスID>/status から情報を取得 pidofコマンドでIDSのプロセス名からプロセスIDを 取得 VmRSS欄の値が メモリ消費量 プロセスが使っているファイル キャッシュはどれ? ファイルキャッシュをプロセスに対応づける必 要がある 従来のLinuxでは対応づけられていない 複数のプロセスで共有されることがあるため どのプロセスが使っているか判断できない プロセスが終了しても残されるため 対応づけるべきプロセスがなくなる プロセス ファイル キャッシュ プロセス ファイル キャッシュ プロセスとファイルキャッシュ の対応づけ ファイルキャッシュを確保したプロセスが使用 しているとみなす IDSだけがドメインU上のファイルにアクセス IDSプロセスに一対一に対応づけられる IDS終了時には仮想ディスクをアンマウント ファイルキャッシュが消去される IDS ドメイン0 マウント ドメインU ファイルキャッシュの使用量の 測定 ドメイン0のLinuxがページキャッシュを確保す る際にプロセスIDを記録 ページキャッシュはメモリページ単位で管理 page構造体にpidメンバを追加 ページキャッシュを破棄したら0に初期化 使用量を調べるシステムコールを追加 すべてのpage構造体を調べ、 pidが一致するページ数を返す IDS pid pid ドメイン0 VMへの動的メモリ割り当て Xen APIを用いてドメインUのメモリサイズを変 更する Xen APIとは? Xenの管理をプログラムから行うためのAPI ドメインUの元々のメモリサイズからIDSのメモリ 使用量を引いたサイズを割り当て直す しきい値よりサイズが小さくならないようにする ドメインUの動作に影響する場合があるため 現在の実装では元の半分のサイズ Xen APIの動作 xendとの間にセッションを確立してXML-RPCで 通信 ドメイン名を指定してメモリサイズを設定 ゲストOSに組み込まれたバルーンドライバがメモ リサイズを調整 メモリを確保して Xenに返却 Xenからメモリを 取得して解放 ドメイン0 ドメインU xend Balloon Performer VMM balloon driver 実験 Balloon PerformerがVMのメモリ割り当てをう まく調整できているかどうか調べた プロセスのメモリ消費量を変化させた場合 Tripwireを動かした場合 実験環境 Intel Core 2 Quad 2.83GHz, 4GBメモリ Xen 3.4.0, Linux 2.6.18 ドメイン0、ドメインUに1.5GBを割り当て プロセスのメモリ消費量に応じ たメモリ割り当て 5秒おきにランダムにメモリの確保・解放を行う プログラムをドメイン0で実行 プロセスのメモリ消費量とドメインUのメモリサイ ズの変化を測定 実験結果 これらの合計は ほぼ1.5GBになった メモリ量(MB) 合計 ドメインU プロセス 時刻(秒) ファイルキャッシュの使用量に 応じたメモリ割り当て 27,752個のファイルをスキャンするTripwireをド メイン0で実行 ファイルキャッシュの使用量とドメインUのメモリ サイズの変化を測定 実験結果 これらの合計は ほぼ1.5GBになった メモリ量(MB) 合計 ドメインU ファイルキャッシュ 時刻(秒) 関連研究 OffloadCage [新井ら’10] IDSオフロードを考慮したCPUスケジューリング IDSのCPU使用分をVMのCPU割り当てから減らす SEDF-DC [Gupta et al.’06] Xenのスプリットドライバを考慮したCPUスケ ジューリング netbackのCPU使用量をパケット数から推定 まとめ Balloon Performerを提案 IDSオフロードを考慮してVMへの動的なメモリ割 り当てを実現 プロセスのメモリ消費量とファイルキャッシュ使用 量を測定 メモリ使用量に応じてVMのメモリ割り当てを増減 IDSのメモリ使用量とVMのメモリ割り当ての合計 を一定に保てることを確認 IDSのメモリ使用量が実行時に変化する場合 今後の課題 システム全体を考慮してVMにメモリを動的割り 当てできるようにする ドメインUが正常に動作できるかどうかや性能を測 定しながらメモリ割り当てを減らす オフロードしたIDSのメモリ使用を制御できるよ うにする Tripwireの場合、ファイルキャッシュは小さくても 性能に影響しない ほとんどのファイルには1回しかアクセスしない 今後の課題:Cgroupsの利用 プロセスグループの単位でページキャッシュも 含めたメモリ使用量を取得できる IDSだけが所属するプロセスグループを作る プロセスグループに割り当てるメモリ量の制限も できる IDSによるメモリの使い過ぎを 抑制 Xen 4.0以降のLinuxカーネル (2.6.32)で利用可能 実装に用いた2.6.18では 未サポート プロセス グループ IDS メモリ ドメイン0
© Copyright 2024 ExpyDoc