1 - KSL - 九州工業大学

Download Report

Transcript 1 - KSL - 九州工業大学

九州工業大学大学院情報工学府情報創成工学専攻
光来研究室修士2年
内田昂志
 攻撃者の侵入を検知するために用いられる

ファイルの監視


例:Tripwire
 定期的にディスクをチェック
 許可無く変更・追加された
ファイルを検出する
外部からの攻撃
ネットワークの解析

例:Snort
 ネットワークに入ってくる
データを監視
 シグネチャに合致するもの
を検出
Tripwire
検知
Disk
監視
 侵入検知システム(IDS)を攻撃してから本来の
攻撃を行うことが増えてきた

例:Tripwireへの攻撃




プロセスを停止
 ファイルの整合性チェックが行われなくなる
ポリシーファイルの書き換え
 改ざんしたファイルのチェックを回避できる
データベースへの再登録
 改ざん後のファイルの内容が正しいと判定される
レポートの改ざん
 検出結果が管理者に通知されないようにできる
 仮想マシン(VM)を用いてIDSだけを別のVMで
動かす手法が提案されている


IDSが攻撃を受ける可能性を減らす
Xenの場合、ドメイン0でIDSを動かす


Tripwireプロセス、ポリシーファイル、データベース、
レポートをドメイン0に移動
ドメインUのディスクイメージをマウントして監視
IDS
監視
ドメイン0
Disc
ドメインU
 IDSがドメイン0のメモリを使うことになる
VM間の公平性が失われる


IDSをオフロードしたVMは割り当てられたサイズ以上の
メモリを使える
システム全体の性能が低下する恐れがある

IDSがドメイン0のメモリを使いすぎた場合
ドメイン0
IDS
ドメイン0メモリ
IDSの使用するメモリ
ドメインU
サーバ
ドメインUメモリ
5000
サイズ(MB)

VM+Tripwireの
メモリサイズ
4000
3000
2000
1000
VMは512MB固定
0
0
50
100
150
 オフロードしたIDSが使用するメモリを考慮し
てVMのメモリを動的に割り当て直す

IDSのメモリ使用量とドメインUのメモリ割り当て
の合計を一定に保つ



ドメイン0で動くIDSのメモリ使用量を測定
その分をドメインUのメモリ割り当てから減らす
減らした分をドメイン0のメモリ割り当てに加える
ドメイン0
ドメインU
監視
IDS
Balloon
Balloon
Performe
Performer
r
メモリ
Disc
メモリ
Xen ver.3と
Xen ver.4で実装
 大きく分けて2種類のメモリを使用

プロセス自身が使用するメモリ


malloc関数などでプロセス内に確保されたメモリ
ファイルの読み書きによってOS内に確保された
ファイルキャッシュ


次のアクセスを高速化するために保持され続ける
これもIDSが使っているメモリと考えるべき
IDSプロセス
ファイルキャッシュ
OS
 プロセスのメモリ使用量

procファイルシステムから取得
 ファイルキャッシュ使用量

OS内でキャッシュを確保する際にプロセスIDを記
録するようにした


キャッシュを破棄したら初期化
使用量を調べるシステムコールを追加
pid = 50
Disc
50 50
50
50
4kB
pid =100
50 100
50
100
pid = 50 12kB
システムコール
OS
 Linuxのcgroupの機能を用いて測定

Linux 2.6.25以降で利用可能



Xen 4でドメイン0のOSとして使えるようになった
IDSの所属するグループを作成する
グループ内のプロセスの使用している
メモリ使用量、ファイルキャッシュ使用量を取得
cgroup
IDSプロセス
他のプロセス
ファイルキャッシュ
OS
 Xen
APIやLibvirtを用いてVMへのメモリ割り当
てを変更

xendとの間にセッションを確立


ドメインUを指定してメモリサイズを設定
ゲストOSに組み込まれたバルーンドライバがメモ
リサイズを調整


メモリを確保してXenに返却
ドメイン0
Xenからメモリを受け取る
ドメインU
Balloon
Balloon
Performer
Performe
r
XenAPI
Balloon
driver
xend
Xen VMM
 Cgroupの機能を用いてIDSのグループが使える
メモリの最大量を制限

IDSが過度にメモリを使用することを抑制する



メモリ不足によるドメインUの性能低下を防ぐ
IDSのメモリが足りなくなったらグループ内の
ファイルキャッシュを自動で解放
Xen 4用のBalloon Performerでのみ対応
 Balloon
PerformerがVMのメモリ割り当てをう
まく調整できているかどうか調べた

IDSがメモリの確保・解放を繰り返した場合
Tripwireを動かした場合

実験環境



Xen 3 (3.4.0)
 Intel Core 2 Quad 2.83GHz, 6GBメモリ
 ドメインUに1.5GBを割り当て
Xen 4 (4.1.3)
 Intel Xeon X5675 2基, 16GBメモリ
 ドメインUに512MBを割り当て
 考察


VMとIDSのメモリ使用量の合計を1.5GBに保てた
Tripwireがメモリを使いすぎるとVMのメモリが足
りなくなった
Tripwire
malloc
ドメインUのメモリ
ドメイン0に追加されたメモリ(MB)
プロセスの消費メモリ+ファイルキャッシュ
140
ドメインU+プロセスの消費メモリ+ファイルキャッシュ
120
1600
100
1400
80
1200
1000
60
800
40
600
20
400
200
0
0
15
30
45
60
75
90
105
120
135
150
0
0
50
100
150
200
250
 考察


VMとIDSのメモリ使用量の合計を512MBに保てた
Tripwireが128MBしか使わないように制限できた
malloc
キャッシュ
VM
合計
600
500
400
300
200
100
0
0
30
60
時間(秒)
90
プロセス
メモリサイズ(MB)
メモリサイズ(MB)
プロセス
Tripwire
キャッシュ
VM
合計
600
500
400
300
200
100
0
0
30
60
90
時間(秒)
120
 KVMonitor

[中村ら'10]
KVMにおけるIDSオフロードを考慮したメモリ割り
当て

KVMではVMとIDSをcgroupでグループ化できる
 OffloadCage

IDSオフロードを考慮したCPUスケジューリング

IDSのCPU使用分をVMのCPU割り当てから減らす
 SEDF-DC

[新井ら’10]
[Gupta et al.’06]
Xenのドライバがドメイン間で協調して動作する
ことを考慮したCPUスケジューリング

CPU使用量をパケット数から推定
 Balloon

IDSオフロードを考慮してVMへの動的なメモリ割
り当てを実現



Performerを提案
プロセスのメモリ消費量とファイルキャッシュ使用量
を測定
メモリ使用量に応じてVMのメモリ割り当てを増減
実験によりVMとIDSのメモリ使用量の合計を一定
に保てることを確認
 今後の課題

VMとIDSの間で自動的に最適なメモリ配分を行え
るようにする

全体の性能が最もよくなるようにする