250 likes | 465 Views
仮想マシンを用いた IDS オフロードを考慮するための 資源管理機構. 数理・計算科学専攻 指導教員: 千葉滋 09M37028 新井昇鎬. IDS( 侵入検知システム ) オフロードとは. 監視対象 VM の外から監視 IDS 自体が攻撃されにくいためセキュリティが向上 IDS のポリシやログなどのデータの改竄を防ぐ 攻撃者はシステム侵入後に IDS を狙う 発見されるのを防ぐ. IDS オフロード. 監視対象 VM. IDS-VM. 通常. IDS. 検知. IDS. 攻撃. VMM. Xen を用いた IDS オフロードの例.
E N D
仮想マシンを用いたIDSオフロードを考慮するための資源管理機構仮想マシンを用いたIDSオフロードを考慮するための資源管理機構 数理・計算科学専攻 指導教員: 千葉滋 09M37028 新井昇鎬
IDS(侵入検知システム) オフロードとは • 監視対象 VM の外から監視 • IDS自体が攻撃されにくいためセキュリティが向上 • IDS のポリシやログなどのデータの改竄を防ぐ • 攻撃者はシステム侵入後に IDS を狙う • 発見されるのを防ぐ IDSオフロード 監視対象 VM IDS-VM 通常 IDS 検知 IDS 攻撃 VMM
Xenを用いた IDS オフロードの例 • Snort のオフロード • 監視対象の仮想インターフェイスを監視 • ClamAVのオフロード • 監視対象のディスクイメージをマウントして監視 • Livewire (Garfinkel, ’03)、SAccessor (滝沢ら, ‘08) 監視対象 VM IDS-VM 監視対象 VM IDS-VM ClamAV Snort 監視 監視 Disk image パケット VMM VMM
VM 間の性能分離の問題 • オフロードすると性能分離が難しくなる • 性能分離とは • 各 VM への資源割り当てを保証すること • 例: 上限 50 % が設定された VM はその分を利用可 • IDS による資源消費分は監視対象元 VM に含めるべき • IDS は監視対象 VM のために動作 • 合計すると監視対象 VM の資源割り当てを超える CPU 40% CPU 50% CPU20% IDS
VM 単位の資源管理が原因 • VM の外で動作している IDS を考慮することはできない • VMM は VM 単位で性能分離を実現 • 例: Xenでは VM に cap, weight を設定 • IDS と VM に個別に資源割り当てを行うだけでは不十分 • IDS が利用しない分を VM が使用できない VM(40%) CPU20% IDS Xen
提案: Resource Cage • RC 単位で資源管理 • VM という実行単位から資源管理を切り離す • RC: VM、プロセス • cap(上限), weight (割合) を設定 • 複数の RC をグルーピング可能 • IDS オフロードを考慮 Resource Cage RC2(Group) RC1 VM1 VM2 VM1 RC4 RC3 VM2 IDS IDS VMM
ClamAVオフロードを考慮する例 • ClamAVと VM2 合わせて最大 CPU 50 % • VM2 は 50% まで使用可 • ClamAVが使用しない分 • cap の値が 0 (無指定) のとき • ClamAVは最大 20 %まで RC2(Group) cap: 50 weight: 256 RC1(VM1) cap:0 weight: 256 VM1 VM2 cap: 0 w:128 cap:20 w:128 ClamAV VMM RC3(ClamAV) RC4(VM2)
実装: Resource Cage の構成 ( Xenに実装) • RC-Monitor • 仮想マシンモニタレベルで CPU 使用率を監視 • RC Credit Scheduler • RC を元に VM をスケジューリング • RC-Limiter • RC に応じてプロセスの 動作を制御 dom0 監視対象 VM RC-Limiter 制御 IDS 参照 監視 RC-Monitor dom0 記録 Xen 参照 RC Credit Scheduler IDS VM
RC-Monitor • CR3 レジスタの切り替えを利用してCPU 使用率を計測 • CR3 = プロセスのページディレクトリ のアドレス • ゲスト OS のカーネル、 スケジューラに依存しない • 0(1)スケジューラ、CFS • VMの切り替えが考慮されて いない古いカーネルや完全仮想化 VM ユーザランド P1 P2 カーネル OC-Monitor VMM 監視 CR3
RC Credit Scheduler • 所属している RC の cap, weight を元に VM をスケジューリング • Xenのクレジットスケジューラを改良 • VM の cap, weight を参照してスケジューリング • 監視対象の仮想マシンの場合は同じグループ内の RC も考慮 RC2(Group) cap: 80 weight: 256 VM1 VM2 cap: 0 w:128 cap:40 w:128 ClamAV RC4(VM2) RC3(ClamAV) VMM
VM VM VM クレジットスケジューラ over under 仮想 CPU 仮想 CPU • クレジット • 物理 CPU を使用できる量 • 30 ms ごとに仮想 CPU に配布 • 10 ms ごとに減少 (物理CPU 上の) • 正の値の仮想 CPU が優先 under 仮想 CPU 物理CPUを使用している仮想CPUのcreditの変化 20ms 10ms 30ms
RC-CS によるクレジットの配分 • 同じグループ内の IDS の RC の weight、cap を参照してクレジットを計算 • IDS の CPU 使用率に応じてクレジットが増減 • 例: cap による制御 VM2 VM1 IDS がほとんど動作していないとき IDS クレジット cap: 50 VM1 cap:40 IDS が最大20%まで利用した時 IDS cap: 20 VM2 cap: 0 クレジット Resource cage
RC-Limiter • RC のプロセスの CPU 使用率を制限 • 設定された cap を超えさせない • グループに所属してる場合: 全体のcap を超えない • プロセスの動作を制御 • SIGCONT, SIGSTOP シグナルを利用 例: 40%に制限 100ms IDS-VM 監視対象 VM 時間 OC-Limiter IDS SIGCONT SIGSTOP
実験: Snort のオフロード • 実験内容 • 監視対象 VM はウェブサーバ • 外部マシンから攻撃 • httperfを使用 • RC (group) = RC1 (snort) + RC2 (監視対象VM) • RC: 最大CPU使用率 50% • RC1: 最大CPU使用率20% 監視対象 VM Dom 0 httperf web 実験環境マシン CPU: Intel Core i72.80GHz(コア1) メモリ:8 GB VMM : Xen4.1.0(x86_64) OS:Linux Kernel 2.6.32.39 snort
Snort と VM の CPU使用率の合計 • オフロードすると制限を超える(上図) • Resource Cage • オフロードしても 50 % の制限を守れている (下図) • RC-Limiterにより、Snort は 20 %以下 CPU 使用率 ( % ) 時間 ( 秒 )
ウェブサーバのスループット • offloadなしの場合 (赤) • Snortの分だけウェブサーバが使用できる • 本システムの場合 (緑) • オフロードしない場合とほぼ同じスループット req/sec offloadなし offloadあり
実験: ClamAVのオフロード • 実験内容 • 監視対象 VM のディスクイメージをマウントすることで VM の外からウイルスチェック • 監視対象では無限ループが動作 • 途中から Clam AV が動作を始める • RC = RC1(ClamAV) + RC2(監視対象VM) • 合計で最大 CPU 使用率 60 % • ClamAVは最大 CPU使用率 30 % 監視対象 VM Dom 0 loop ClavAV
ClamAVと VM の CPU 使用率の合計 • オフロードすると制限を超える(上図) • Resource Cage • オフロードしても 60 % の制限を守れている (下図) • RC-Limiterにより、ClamAVは 30 %以下
実験: CR3 と proc • 無限ループを計測 • 途中で別のVM でも 無限ループを動作 • CR3 はVM 切り替えが考慮 • Snort の CPU 使用率 • O(1) は正確に課金できない CPU 使用率 ( % ) 時間 ( 秒 ) 実験環境マシン CPU:Athlon™2.2GHz(コア1) メモリ:2 GB VMM : Xen3.3.0(x86_64) OS:Linux Kernel 2.6.18
関連研究 • SEDF-DC [ Guptaet al. ’06] • 仮想マシン間の性能分離 • Xenのスプリットドライバのドメイン0内の処理による資源の使用を使用した仮想マシンに適切にカウント • Resource Container [ Banga et al. ‘99] • プロセス単位ではなく適切な単位でOSの資源管理 • VMdesched Component [VMware] • 完全仮想化で正確な時間管理 • VMDeschedプロセス動作時に溜まっていた割り込みを処理
Future Work • シェアスケジューリングの実現 • オフロードしたプロセスを監視対象の仮想マシンの物理CPUと共有させる • CGroupでプロセスと VCPUを固定 • その VCPU を監視対象の 仮想マシンの物理 CPU と共有 VM1 VM2 IDS 仮想 CPU1 仮想 CPU3 仮想 CPU2 共有 物理 CPU
まとめ • 仮想マシンを用いた IDS をオフロードを考慮した資源管理機構をXen上に実装 • VM単位ではなく、Resource Cage 単位で資源管理 • Resource Cage に対して CPU 制約 • Snort とClamAVをオフロードして実験 • ここまでの成果 • ’09 VM ミニワークショップ • ’10 DSW • ’10 OS 研究会
実験: ClamAVのオフロード時の性能分離 CPU使用率 • グループ内のClamAVとdomUは1 対 2 でスケジューリング • 途中からdomU内で無限ループ domU 時間 Clam AV Xen
実験: シェアスケジューリング(無限ループ) CPU使用率 • 無限ループとdomUでグルーピング • 最大60 % • ループとdomUで1: 2シェアスケジューリング domU 時間 loop loop Xen
新しい手法 • オフロードしたプロセスに VCPU (仮想 CPU) を持たせ、オフロード元の仮想マシンと共有 Resource Cage VM1 VM2 RC2(Group) RC1 VM1 RC4 RC3 IDS VM2 IDS 仮想 CPU1 仮想 CPU3 仮想 CPU2 共有 仮想 CPU1 仮想 CPU2 仮想 CPU3 物理 CPU 物理 CPU