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