Transcript slide - KSL
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