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