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