Transcript
Page 1: KVM における IDS オフロードの実現

KVMにおけるIDSオフロードの実現

中村孝介(九州工業大学)光来健一(九州工業大学 /JST CREST )

Page 2: KVM における IDS オフロードの実現

IDS は攻撃者の侵入を検知するシステム◦ 監視対象

ディスク、メモリ、ネットワーク 攻撃者により改竄・停止させられる可能性がある

◦ 侵入を検知できなくなる

侵入検知システム (IDS)

IDS

攻撃者

検知改竄・停止

ディスクメモリネットワーク

監視

Page 3: KVM における IDS オフロードの実現

IDS と監視対象 VM を別々の VM 上で動作させる◦ IDS 自身が攻撃を受けにくくなる

IDS を動作させる仮想マシンへの侵入は困難 外部へのサービスを提供しない

仮想マシンによる IDSオフロード

攻撃者

監視

VM VM

IDS

攻撃検知ディスクメモリネットワーク

Page 4: KVM における IDS オフロードの実現

Linux ベースの仮想マシンとして KVM が普及してきている◦ Linux に Xen よりも先にマージされた (2.6.20)

Xen は 2.6.23 で一部マージ、 3.0 で完全にマージ◦ RedHat 、 IBM 、 HP らが KVM 採用促進コンソーシアムを設立◦ NTT コム、さくらレンタルサーバらが KVM を用いたサービスを提供

KVMの普及

Page 5: KVM における IDS オフロードの実現

KVM で IDS オフロードは実現されていない◦ IDS オフロードの研究は主に Xen を用いて行われてきた

KVM に適用できるかは不明であった◦ KVM はアーキテクチャが Xen とは異なる

Linux カーネル内で仮想マシンモニタを動作 QEMU を使用し VM をホスト OS の1つのプロセスとして管理

KVMにおける IDSオフロード

Xen(VMM)

ドメイン Uドメイン 0

KVM

通常のプロセス

Linux カーネル ( ホストOS)

QEMUQEMU

VM VM

IDS? IDS

ディスクメモリネットワーク監視

Page 6: KVM における IDS オフロードの実現

KVM で IDS オフロードを実現するシステム◦ IDS をホスト OS 上のプロセスとして実行する

IDS を攻撃から守る◦ IDS が VM のディスクとメモリを監視◦ VM と IDS への統一的な CPU ・メモリ制限

一定のリソースを保証

提案 :KVMonitor

KVM

通常のプロセス

Linux カーネル ( ホストOS)

監視

VM

IDS

ディスク

メモリQEMU

Page 7: KVM における IDS オフロードの実現

ホスト OS に VM のディスクをマウントすることで監視◦ qcow2 形式は直接マウントできない◦ qemu-nbd を経由することで仮想的にブロックデバイスとして見せる

ディスクの監視

VMIDS(Tripwire)

ホスト OS

監視

ブロックデバイスディスクイメージ( qcow2)

qemu-nbd

Page 8: KVM における IDS オフロードの実現

VM の物理メモリを IDS の仮想メモリ上にマップ◦ QEMU にメモリ用ファイルをメモリとして使わせる

mmap を用いてメモリマップする QEMU がファイルを削除しないように修正

従来はオープンした後に削除していた◦ IDS もメモリ用ファイルをマップして参照する

メモリの監視

ホスト OS

VM 物理メモリ VM 物理メモリメモリ用ファイル

QEMU

IDS

マップVM

マップ監視

Page 9: KVM における IDS オフロードの実現

QEMU と通信して仮想アドレスを物理アドレスに変換◦ VM 内部の変数等は仮想アドレスだけが分かっている◦ IDS がアクセスできるのは物理アドレスである◦ QEMU に xaddr コマンドを追加し、 QMP を使って通信

メモリアドレスの変換

ホスト OS

VM 物理メモリ

IDS

xaddr

QEMU

VMQMP

ページテーブル

監視

Page 10: KVM における IDS オフロードの実現

VM と IDS をグループ化して CPU とメモリを割り当て◦ Linux の Cgroups を用いてグループ化

Cgroups は複数のプロセスをグループ化しグループ単位での資源管理を可能にする KVM では VM もプロセス

◦ グループ内ではリソースを融通し合える

IDSオフロードを考慮したリソース管理

ホスト OS

QEMU

IDS

VM

CPU :50% CPU :50%

Page 11: KVM における IDS オフロードの実現

KVMonitor では◦ qemu-ndb 経由でマウントする◦ qcow2 形式はディスクイメージを小さくできる

Xen では◦ 主に raw 形式を使用するため直接マウントできる◦ ディスクアクセスが速い◦ qcow2 形式を使用すれば KVMonitor と同様

ディスク監視手法の比較

Xen(VMM)

ドメイン 0 ドメイン U

ディスクイメージ( raw)

ディスクイメージ( raw)ホスト OS

ブロックデバイスディスクイメージ( qcow2)

qemu-nbd

VM

Page 12: KVM における IDS オフロードの実現

KVMonitor では◦ メモリ用ファイルをマップし QEMU がアドレス変換◦ QEMU との通信に時間がかかる

Xen では◦ メモリページを直接マップし、自力でアドレス変換◦ ページテーブルを何度もマップする必要がある

メモリ監視手法の比較

Xen(VMM)

ドメイン 0 ドメイン U

メモリページ

ページテーブルIDSアドレス空間

アドレス変換

ホスト OS

IDS

xaddrQEMU

VMQMP

ページテーブル

監視

VM 物理メモリメモリ用ファイル

Page 13: KVM における IDS オフロードの実現

KVMonitor では◦ Cgroups を使って IDS と VM をグループ化◦ 標準機能で実現可能

Xen では◦ VMM やドメイン 0 の OS に機能を追加 [ 新井ら’ 10][ 内田ら’ 11]◦ CPU の上限も設定可能

リソース管理手法の比較

Xen(VMM)

IDS

ドメイン0

ドメインU

ホスト OS

QEMU

IDS

VM

Page 14: KVM における IDS オフロードの実現

Tripwire によるディスクの検査にかかる時間を比較した◦ オフロードした方が実行時間が長くなった

NBD 経由のためファイルアクセスに時間がかかることが原因

実験: Tripwireによる監視

実験環境ホスト OS・ Intel Xeon 2.53GHz・メモリ 6GBVM・ディスク 30GB・メモリ 512MB

オフロードなし オフロードあり0123456789

1011

9.29.9

実行時間(分)

Page 15: KVM における IDS オフロードの実現

ホスト OS から VM のカーネルメモリ上にあるシステムコールテーブルを監視する時間を測定した◦ システムコールテーブルを読み出す IDS を 1000 回実行◦ ほとんどの時間はアドレス変換に費やされている

実験 :システムコールテーブルの監視

アドレス変換 システムコールテーブル読み出し0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.3

1.5実行時間(ミリ秒)

Page 16: KVM における IDS オフロードの実現

IDS と VM のグループに対して CPU 使用率の下限が設定できていることを確認◦ IDS として Tripwire を使用し VM とホスト OS で無限ループを行うプログラムを実行◦ CPU の割合を 40 : 60 とした

実験 :CPUにおける性能分離

/dev/cgroup

Group1 Group2

Tripwire

VM( loop )loop

40% 60%

Page 17: KVM における IDS オフロードの実現

Group1 の CPU 使用率は設定した 40% でほぼ一定しており制御できている

実験結果

0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 600

10

20

30

40

50

60

70

Group2 VM Tripwire Group1

time( S)

CPU(%

)Group1

Tripwire

VM( loop )

Group2

loop

Page 18: KVM における IDS オフロードの実現

VMwatcher [Xuxian et al.’07]◦ VMware 、 Xen 、 QEMU 、 UML で実装◦ ディスクとメモリの監視を行う

QEMU での実装は KVM でも適用できる可能性あり アドレス変換はゲスト OS のページテーブルを参照する

KVMonitor では QEMU に行わせることでアーキテクチャ依存度を減らしている リソースプール

◦ VMware で VM をグループ化し CPU ・メモリの制御を行う プロセスをグループ化することはできない

KVMonitor では VM とプロセスをグループ化できる

関連研究

Page 19: KVM における IDS オフロードの実現

KVM における IDS オフロードを実現するシステム KVMonitor を提案◦ 仮想ディスクをマウントできる形式に変更してディスクの監視◦ ファイルをメモリとして使いメモリの監視◦ Linux既存の Cgroups を使用し CPU とメモリの制限

今後の課題◦ ネットワーク IDS への対応◦ Xen との定量的な性能比較

まとめ


Top Related