Presentation is loading. Please wait.

Presentation is loading. Please wait.

仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング

Similar presentations


Presentation on theme: "仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング"— Presentation transcript:

1 仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
安積武志  田所秀和  光来健一  千葉滋 東京工業大学

2 仮想マシンを用いたホスティング データセンタが仮想マシンを貸し出し ユーザが管理する仮想マシ ンは攻撃を受けやすい
ユーザが自由にOSをインストール ユーザがOSを管理する必要 従来はデータセンタが管理 ユーザが管理する仮想マシ ンは攻撃を受けやすい 適切な設定やパッチの適用が必要 ユーザのスキルが低いと脆弱性 データセンタ OS VM OS VM OS VM

3 データセンタで 攻撃に対処すべき 仮想マシンのユーザは信頼できない 問題が起きたときデータセンタも責任を問われる可能性
フルタイムで管理できるとは限らない 即座に対処できない スキル不足だと問題の解決に時間がかかる 問題が起きたときデータセンタも責任を問われる可能性 踏み台攻撃で外部に被害 踏み台攻撃 攻撃ホスト 攻撃対象 ホスト 侵入 踏み台攻撃 データセンタ 仮想マシン 仮想マシン 仮想マシン

4 例:メールサーバに侵入されて25番ポートを使って踏み台攻撃
仮想マシンの サービス可用性が低下 データセンタ側では大雑把な通信制御しかできない 問題のある仮想マシンからの通信を全て遮断 全てのアプリケーションが外部のサービスを使えない 外部の特定のポートへの通信を遮断 外部の特定のサービスは使えない 例:メールサーバに侵入されて25番ポートを使って踏み台攻撃 データセンタ 攻撃を 行っている ユーザ 攻撃を行っている通信 仮想     マシン    fw 25 X send mail 25 X 22 X 外部

5 xFilter 仮想マシンモニタでプロセス単位、ユーザ単位のパケットフィルタリングを行うシステム サービス可用性の低下を抑えら れる
ゲストOS内部のプロセス情報を取得 取得した情報を用いてパケットのフィルタリング 全てのパケットは仮想マシンモニ タを通過する サービス可用性の低下を抑えら れる 特定のプロセス、ユーザからの 通信のみを遮断できる 仮想マシン プロ セス ゲストOS 参照     仮想マシンモニタ xFilter 物理デバイス

6 仮想マシンモニタによる プロセス情報の取得
ゲストOSの内部データを覗く 従来は不可能 ゲストOSのデータ構造の知識を利用 取得するプロセスのデータ構造 プロセスの所有者(ユーザID) プロセス名 行っている通信のポート番号とIPアドレスの組 仮想マシン 仮想マシン ユーザA ユーザB プロ セス プロ セス プロ セス xxx.xxx.xxx 仮想マシンモニタ yyy.yyy.yyy

7 ユーザ単位の パケットフィルタリング 指定したユーザの通信を拒否 パケットを受信したらそのユーザのプロセス一覧を取得
例:メールサーバに 侵入されて 25番ポートを使って 踏み台攻撃 指定したユーザの通信を拒否 パケットを受信したらそのユーザのプロセス一覧を取得 データセンタ管理者が通信を禁止するユーザを指定 一致する通信があればパケットを破棄 uid=81の通信リスト 仮想マシン vm1:10 host1:25 vm1:14 host2:25 プロセス vm1:8 host3:25 vm1:54 host4:25 vm1:29 host5:25 vm1:63 host6:25        vm1:14         host2:25 vm1:47 host7:25 参照 vm1:39 host8:25 仮想マシンモニタ xFilter 破棄 許可

8 使用方法 攻撃元ユーザの特定 異常検知された通信から攻撃元を探す プロセス情報一覧を取得 一致する通信を行ったプロセスを見つける
そのプロセスIDまたは所有者を攻撃元とする pid = 315, uid = 81 vm1:10 host1:25 vm1:14 host2:25 vm1:8 host3:25 vm1:54 host4:25 pid = 330, uid =     vm1:57 host10:25 vm1:30 host40:25 pid = 372, uid = 81 vm1:29 host5:25 vm1:63 host6:25 pid = 397, uid = 0 vm1:79 host23:22

9 Xenにおける パケットフィルタリング実装
ドメインのOS Linux2.6.18 ドメイン0のiptablesを使用 ドメインUの通信は全てドメイン0を通過 ドメイン0のファイアウォールで制御可能 指定したプロセスやユーザの通信を遮断するルールを自動で追加 定期的にドメインUのメモリを見てルールを更新 ドメイン0 ドメインU 参照 xFilter パケットの流れ Xen VMM

10 ゲストOSの データ構造の追跡 仮想CPUのGSレジスタからカレントプロセスのtask_struct構造体を取得
sock構造体からポート番号、IPアドレスなどの情報を得る ドメイン0 ドメインU task_struct task_struct file マッピング task_struct sock inode ・・・ 仮想マシンモニタ       仮想CPU task_struct GSレジスタ

11 ドメイン0による ドメインUのメモリアクセス
必要な型情報はデバッグ情報から取得 gdbを利用 ドメイン0 のメモリ ドメインU のメモリ task_struct struct file* task_struct file struct inode* sock inode inode sock file

12 実験 ポーリングの間隔を変えてオーバーヘッドを測定 httperfを使って実験 マッチしないルールを設定 実験結果 毎秒150リクエスト
実験環境 CPU: Athlon™ 64Processor3500+ Mem:1Gbyte                (Dom0/DomU 512Mbyte/256Mbyte) ポーリングの間隔を変えてオーバーヘッドを測定 httperfを使って実験 毎秒150リクエスト マッチしないルールを設定 実験結果 ポーリング間隔が短くなると平均処理時間は大きくなった パケット受信ごとに行うとオーバーヘッドはさらに大きくなる

13 関連研究 Livewire[Garfmkel et al. ‘03] Antfarm [Jones et al. ’06]
ゲストOSの内部を見て侵入検知を行う フィルタリングは行わない Antfarm [Jones et al. ’06] 仮想マシンモニタ上からゲストOSの中を見ずにプロセスの情報を取得 取得できる情報はプロセスの状態の変化だけ BSDのipfw uidを指定してフィルタリングを行う ただしOSの中で使う

14 まとめ xFilterを提案した 仮想マシンモニタでプロセス単位、ユーザ単位のパケットフィルタリング
仮想マシンに対する高いサービス可用性を実現 データセンタ管理者がきめ細かい通信制御 メモリマップを使ってゲストOS内の情報を取得

15 今後の課題 パケットごとにフィルタリングできるようにする ポーリング間隔の間に張られた通信は素通り 性能向上が実用化の鍵
パケットごとにプロセス情報を取得するとオーバーヘッドが大きい パケットを仮想マシンモニタのキューにためて一括処理することで改善


Download ppt "仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング"

Similar presentations


Ads by Google