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のメモリ消費を考慮して仮想マシンへのメモリ割当を
変更
実験により、正確に動的メモリ割当ができることを確認
今後の課題
より柔軟な動的メモリ割り当て手法の開発