Xenによる ゲストOSの監視に基づく パケットフィルタリング
Download
Report
Transcript Xenによる ゲストOSの監視に基づく パケットフィルタリング
Xenによる
ゲストOSの監視に基づく
パケットフィルタリング
理学部 情報科学科
学籍番号: 04-12926
安積 武志
指導教員: 千葉 滋 准教授
仮想マシンによるホスティング
仮想マシン
を貸し出す
仮想マシン単位での貸し出し
ホストをソフトウェア的に管理
仮想マシンモニタで一括管理
VM
OS
VM
OS
・・・
VM
OS
仮想マシンモニタ
仮想マシンモニタから通信を遮断することで即座
に攻撃に対処できる
例:踏み台攻撃を受けて外部に大量にssh
仮想マシンモニタ管理者がフルタイムですべての仮想マ
シンを管理していれば良い
通信制御の粗粒度
仮想マシンモニタ管理者にはきめ細かい通信制御がで
きない
仮想マシンモニタにはプロセスやユーザといった情報は分から
ない
OSの持つ内部の情報だから
例:攻撃に使われているプロセスや攻撃しているユーザのssh
だけを止めることはできない
すべてのsshができなくなる
FreeBSDのipfwを使えば可能
結局、ゲストOS管理者もフルタイムで管理せざるを得ない
提案:xFilter
仮想マシンモニタからゲストOSの細粒度な通信制御を
行えるようにする
ゲストOSのプロセスID、ユーザIDを指定してパケットフィルタリン
グ
ゲストOSのメモリを調べてプロセス、ユーザの情報を取得
使用例:仮想マシンモニタ管理者がsshを使った踏み台
攻撃を検知
ゲストOSで攻撃を行っているユーザを特定
xFilterの提供するプロセス情報一覧表示機能を利用
攻撃しているユーザを指定してsshを遮断する
通信の制御
ドメイン0でiptablesを使ってゲストOSのプロセスやユーザ
が行っている通信を遮断するルールを追加
ドメインUのメモリを調べて対象となるプロセスやユーザが
使っているポート番号を取得
ポーリングを行ってフィルタリングルールを更新
ドメインUのメモリを見てルールにマッチする通信があるかチェック
メモリをチェックするときはドメインを停止する
あればポート番号を取得してiptablesのルールに追加
iptable
s
パケット
の流れ
ドメイン0
監視
Xen VMM
ドメインU
プロセス情報の取得(1)
ドメインUのメモリをドメイン0のメモリにマッピング
Xenの提供するメモリ操作するための関数を利用
指定したアドレスからページサイズ分のメモリをマッピング
参照したい構造体の先頭アドレスを指定してマッピング
参照したいメンバがポインタ
ドメインU
ドメイン0
型であればそのアドレスを
計算してさらにマッピング
ゲストOSのメモリ操作に必 情報が見られ
るようになる
要な型情報はデバッグ情報
から取得
マッピング
Xen VMM
参照したい
情報
プロセス情報の取得(2)
GSレジスタ
task_struct
files_struct
fdtab
file
f_dentry
dentry
d_inode
socket_alloc
socket
sk
inode
task_struct ・・・ task_struct
files
カレントプロセスから順
番にすべてのプロセス
の情報を得る
プロセスID
ユーザID
fdtable
fd
ポートやIP
アドレスなど
の情報
sock
カレントプロセスのメモリ
上の位置はドメインの
CPUのGSレジスタから
たどる
指定したIDと一致した
らさらに詳しい情報を
マッピングする
ポート番号を取得
実験
ポーリングごとにドメインを停止させる時間を調べた
メモリをマップしてドメインUのプロセスを調べるのにかかる時間
ポーリングの間隔を変えてオーバーヘッドを測定した
httperfを使って実験
10000回繰り返して最大値、最小値、平均値を計算
毎秒150リクエスト
実験環境
CPU:Athlon™ 64 Processor 3500+
Mem:1Gbyte (Dom0/DomU 512Mbyte/256Mbyte)
VMM:Xen3.1.0 (x86_64)
OS:Linux Kernel 2.6.18
実験結果
ドメインのポーズ時間[ミリ秒]
最大値:52,最小値:15,
平均値:19
スループットとしては1%のオー
バーヘッド
0.6
常にオーバーヘッドが発生して
いるわけではない
0.5
ポーリングの間隔と平均処理時間
xFilterは管理者が危険である
と判断したときのみ使用する
ポーリングの間隔とオーバー
ヘッド
ポーリング間隔を短くすれば
処理時間は長くなった
スループットには影響なかった
サーバにまだ余裕があった
平均処理時間(ミリ秒)
0.4
0.3
0.2
0.1
0
3秒
5秒 10秒 15秒 なし
ポーリング間隔
関連研究
Antfarm [Jones et al. ’06]
仮想マシンモニタ上からドメインに手を加えずにプロセスの情
報を取得する技術
Geiger [Jones et al. ’06]
取得できる情報はプロセスの状態の変化だけ
仮想マシンモニタ上からドメインに手を加えずにバッファキャッ
シュの状態を取得する技術
[田所ら ’07]
ドメイン間にまたがるプロセスのスケジューリングを実施
仮想マシンモニタ上からゲストOSのランキューを操作
まとめ
xFilterを提案
仮想マシンモニタ管理者によるプロセス単位、ユーザ単位のパ
ケットフィルタリングを可能にするシステム
ゲストOSのメモリをマッピングすることでゲストOS内のプロセス
情報を仮想マシンモニタ上から取得
プロセスID、ユーザIDからポート番号を取得し、iptablesを用い
て通信を制御
今後の課題
デバイスドライバを改造して、パケットの到着毎にプロセス情報
を参照してルールを更新できるようにする
フィルタリングの精度が上がる
もっと負荷を大きくして実験する