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を用い
て通信を制御
今後の課題


デバイスドライバを改造して、パケットの到着毎にプロセス情報
を参照してルールを更新できるようにする
 フィルタリングの精度が上がる
もっと負荷を大きくして実験する