Download - KVM における IDS オフロードの実現
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 との定量的な性能比較
まとめ