kvm における ids オフロードの実現
DESCRIPTION
KVM における IDS オフロードの実現. 中村孝介(九州工業大学) 光来健一(九州工業大学 /JST CREST ). 侵入検知システム (IDS). IDS は攻撃者の侵入を検知するシステム 監視対象 ディスク、メモリ、ネットワーク 攻撃者により改竄・停止させられる可能性がある 侵入を検知できなくなる. IDS. 検知. 改竄・停止. 監視. ディスク メモリ ネットワーク. 攻撃者. 仮想マシンによる IDS オフロード. IDS と監 視対象 VM を別々の VM 上で動作させる IDS 自身が攻撃を受けにくくなる - PowerPoint PPT PresentationTRANSCRIPT
KVMにおけるIDSオフロードの実現
中村孝介(九州工業大学)光来健一(九州工業大学 /JST CREST )
IDS は攻撃者の侵入を検知するシステム◦ 監視対象
ディスク、メモリ、ネットワーク 攻撃者により改竄・停止させられる可能性がある
◦ 侵入を検知できなくなる
侵入検知システム (IDS)
IDS
攻撃者
検知改竄・停止
ディスクメモリネットワーク
監視
IDS と監視対象 VM を別々の VM 上で動作させる◦ IDS 自身が攻撃を受けにくくなる
IDS を動作させる仮想マシンへの侵入は困難 外部へのサービスを提供しない
仮想マシンによる IDSオフロード
攻撃者
監視
VM VM
IDS
攻撃検知ディスクメモリネットワーク
Linux ベースの仮想マシンとして KVM が普及してきている◦ Linux に Xen よりも先にマージされた (2.6.20)
Xen は 2.6.23 で一部マージ、 3.0 で完全にマージ◦ RedHat 、 IBM 、 HP らが KVM 採用促進コンソーシアムを設立◦ NTT コム、さくらレンタルサーバらが KVM を用いたサービスを提供
KVMの普及
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
ディスクメモリネットワーク監視
KVM で IDS オフロードを実現するシステム◦ IDS をホスト OS 上のプロセスとして実行する
IDS を攻撃から守る◦ IDS が VM のディスクとメモリを監視◦ VM と IDS への統一的な CPU ・メモリ制限
一定のリソースを保証
提案 :KVMonitor
KVM
通常のプロセス
Linux カーネル ( ホストOS)
監視
VM
IDS
ディスク
メモリQEMU
ホスト OS に VM のディスクをマウントすることで監視◦ qcow2 形式は直接マウントできない◦ qemu-nbd を経由することで仮想的にブロックデバイスとして見せる
ディスクの監視
VMIDS(Tripwire)
ホスト OS
監視
ブロックデバイスディスクイメージ( qcow2)
qemu-nbd
VM の物理メモリを IDS の仮想メモリ上にマップ◦ QEMU にメモリ用ファイルをメモリとして使わせる
mmap を用いてメモリマップする QEMU がファイルを削除しないように修正
従来はオープンした後に削除していた◦ IDS もメモリ用ファイルをマップして参照する
メモリの監視
ホスト OS
VM 物理メモリ VM 物理メモリメモリ用ファイル
QEMU
IDS
マップVM
マップ監視
QEMU と通信して仮想アドレスを物理アドレスに変換◦ VM 内部の変数等は仮想アドレスだけが分かっている◦ IDS がアクセスできるのは物理アドレスである◦ QEMU に xaddr コマンドを追加し、 QMP を使って通信
メモリアドレスの変換
ホスト OS
VM 物理メモリ
IDS
xaddr
QEMU
VMQMP
ページテーブル
監視
VM と IDS をグループ化して CPU とメモリを割り当て◦ Linux の Cgroups を用いてグループ化
Cgroups は複数のプロセスをグループ化しグループ単位での資源管理を可能にする KVM では VM もプロセス
◦ グループ内ではリソースを融通し合える
IDSオフロードを考慮したリソース管理
ホスト OS
QEMU
IDS
VM
CPU :50% CPU :50%
KVMonitor では◦ qemu-ndb 経由でマウントする◦ qcow2 形式はディスクイメージを小さくできる
Xen では◦ 主に raw 形式を使用するため直接マウントできる◦ ディスクアクセスが速い◦ qcow2 形式を使用すれば KVMonitor と同様
ディスク監視手法の比較
Xen(VMM)
ドメイン 0 ドメイン U
ディスクイメージ( raw)
ディスクイメージ( raw)ホスト OS
ブロックデバイスディスクイメージ( qcow2)
qemu-nbd
VM
KVMonitor では◦ メモリ用ファイルをマップし QEMU がアドレス変換◦ QEMU との通信に時間がかかる
Xen では◦ メモリページを直接マップし、自力でアドレス変換◦ ページテーブルを何度もマップする必要がある
メモリ監視手法の比較
Xen(VMM)
ドメイン 0 ドメイン U
メモリページ
ページテーブルIDSアドレス空間
アドレス変換
ホスト OS
IDS
xaddrQEMU
VMQMP
ページテーブル
監視
VM 物理メモリメモリ用ファイル
KVMonitor では◦ Cgroups を使って IDS と VM をグループ化◦ 標準機能で実現可能
Xen では◦ VMM やドメイン 0 の OS に機能を追加 [ 新井ら’ 10][ 内田ら’ 11]◦ CPU の上限も設定可能
リソース管理手法の比較
Xen(VMM)
IDS
ドメイン0
ドメインU
ホスト OS
QEMU
IDS
VM
Tripwire によるディスクの検査にかかる時間を比較した◦ オフロードした方が実行時間が長くなった
NBD 経由のためファイルアクセスに時間がかかることが原因
実験: Tripwireによる監視
実験環境ホスト OS・ Intel Xeon 2.53GHz・メモリ 6GBVM・ディスク 30GB・メモリ 512MB
オフロードなし オフロードあり0123456789
1011
9.29.9
実行時間(分)
ホスト OS から VM のカーネルメモリ上にあるシステムコールテーブルを監視する時間を測定した◦ システムコールテーブルを読み出す IDS を 1000 回実行◦ ほとんどの時間はアドレス変換に費やされている
実験 :システムコールテーブルの監視
アドレス変換 システムコールテーブル読み出し0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.3
1.5実行時間(ミリ秒)
IDS と VM のグループに対して CPU 使用率の下限が設定できていることを確認◦ IDS として Tripwire を使用し VM とホスト OS で無限ループを行うプログラムを実行◦ CPU の割合を 40 : 60 とした
実験 :CPUにおける性能分離
/dev/cgroup
Group1 Group2
Tripwire
VM( loop )loop
40% 60%
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
VMwatcher [Xuxian et al.’07]◦ VMware 、 Xen 、 QEMU 、 UML で実装◦ ディスクとメモリの監視を行う
QEMU での実装は KVM でも適用できる可能性あり アドレス変換はゲスト OS のページテーブルを参照する
KVMonitor では QEMU に行わせることでアーキテクチャ依存度を減らしている リソースプール
◦ VMware で VM をグループ化し CPU ・メモリの制御を行う プロセスをグループ化することはできない
KVMonitor では VM とプロセスをグループ化できる
関連研究
KVM における IDS オフロードを実現するシステム KVMonitor を提案◦ 仮想ディスクをマウントできる形式に変更してディスクの監視◦ ファイルをメモリとして使いメモリの監視◦ Linux既存の Cgroups を使用し CPU とメモリの制限
今後の課題◦ ネットワーク IDS への対応◦ Xen との定量的な性能比較
まとめ