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

中村孝介(九州工業大学)
光来健一(九州工業大学/JST CREST)

IDSは攻撃者の侵入を検知するシステム
◦ 監視対象
 ディスク、メモリ、ネットワーク

攻撃者により改竄・停止させられる可能性がある
◦ 侵入を検知できなくなる
IDS
監視
ディスク
メモリ
ネットワーク
改竄・停止
検知
攻撃者

IDSと監視対象VMを別々のVM上で動作させる
◦ 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でIDSオフロードは実現されていない
◦ IDSオフロードの研究は主にXenを用いて行われてきた
 KVMに適用できるかは不明であった
◦ KVMはアーキテクチャがXenとは異なる
 Linuxカーネル内で仮想マシンモニタを動作
 QEMUを使用しVMをホストOSの1つのプロセスとして管理
VM
通常の
プロセス
?
VM
IDS
ドメイン0
IDS
監視
QEMU
Linuxカーネル(ホストOS)
QEMU
KVM
ドメインU
ディスク
メモリ
ネットワーク
Xen(VMM)

KVMでIDSオフロードを実現するシステム
◦ IDSをホストOS上のプロセスとして実行する
 IDSを攻撃から守る
◦ IDSがVMのディスクとメモリを監視
◦ VMとIDSへの統一的なCPU・メモリ制限
VM
 一定のリソースを保証
IDS
QEMU
メモリ
通常の
プロセス
監視
Linuxカーネル(ホストOS)
ディスク
KVM

ホストOSにVMのディスクをマウントすることで監視
◦ qcow2形式は直接マウントできない
◦ qemu-nbdを経由することで仮想的にブロックデバイスとし
て見せる
IDS(Tripwire)
VM
監視
ブロック
デバイス
qemu-nbd
ホストOS
ディスク
イメージ
(qcow2)

VMの物理メモリをIDSの仮想メモリ上にマップ
◦ QEMUにメモリ用ファイルをメモリとして使わせる
 mmapを用いてメモリマップする
 QEMUがファイルを削除しないように修正
 従来はオープンした後に削除していた
◦ IDSもメモリ用ファイルをマップして参照する
IDS
VM
監視
マップ
VM物理
メモリ
マップ
メモリ用
ファイル
ホストOS
QEMU
VM物理
メモリ

QEMUと通信して仮想アドレスを物理アドレスに変換
◦ VM内部の変数等は仮想アドレスだけが分かっている
◦ IDSがアクセスできるのは物理アドレスである
◦ QEMUにxaddrコマンドを追加し、QMPを使って通信
IDS
QMP
監視
VM
QEMU
xaddr
VM物理
メモリ
ページ
テーブル
ホストOS

VMとIDSをグループ化してCPUとメモリを割り当て
◦ LinuxのCgroupsを用いてグループ化
 Cgroupsは複数のプロセスをグループ化しグループ単位での資
源管理を可能にする
 KVMではVMもプロセス
◦ グループ内ではリソースを融通し合える
CPU:50%
VM
IDS
QEMU
ホストOS
CPU:50%

KVMonitorでは
◦ qemu-ndb経由でマウントする
◦ qcow2形式はディスクイメージを小さくできる

Xenでは
◦ 主にraw形式を使用するため直接マウントできる
◦ ディスクアクセスが速い
◦ qcow2形式を使用すればKVMonitorと同様
VM
ブロック
デバイス
qemu-nbd
ホストOS
ディスク
イメージ
(qcow2)
ドメイン0
ドメインU
ディスク
イメージ
(raw)
ディスク
イメージ
(raw)
Xen(VMM)

KVMonitorでは
◦ メモリ用ファイルをマップしQEMUがアドレス変換
◦ QEMUとの通信に時間がかかる

Xenでは
◦ メモリページを直接マップし、自力でアドレス変換
◦ ページテーブルを何度もマップする必要がある
IDS
QMP
監視
VM
QEMU
ドメイン0
IDS
アドレス空間
アドレス
変換
xaddr
VM物理
メモリ
メモリ用
ファイル
ホストOS
ドメインU
ページ
テーブル
メモリ
ページ
ページ
テーブル
Xen(VMM)

KVMonitorでは
◦ Cgroupsを使ってIDSとVMをグループ化
◦ 標準機能で実現可能

Xenでは
◦ VMMやドメイン0のOSに機能を追加[新井ら’10][内田ら’11]
◦ CPUの上限も設定可能
VM
ドメイン0
ドメインU
IDS
IDS
QEMU
ホストOS
Xen(VMM)
Tripwireによるディスクの検査にかかる時間を比較し
た
◦ オフロードした方が実行時間が長くなった
 NBD経由のためファイルアクセスに時間がかかることが原因
11
10
9.2
9.9
9
実験環境
ホストOS
・Intel Xeon 2.53GHz
・メモリ 6GB
VM
・ディスク 30GB
・メモリ 512MB
8
実行時間(分)

7
6
5
4
3
2
1
0
オフロードなし
オフロードあり
ホストOSからVMのカーネルメモリ上にあるシステム
コールテーブルを監視する時間を測定した
◦ システムコールテーブルを読み出すIDSを1000回実行
◦ ほとんどの時間はアドレス変換に費やされている
1.6
1.4
1.5
1.3
1.2
実行時間(ミリ秒)

1
0.8
0.6
0.4
0.2
0
アドレス変換
システムコールテーブル読み出し

IDSとVMのグループに対してCPU使用率の下限が設
定できていることを確認
◦ IDSとしてTripwireを使用しVMとホストOSで無限ループを行
うプログラムを実行
◦ CPUの割合を40:60とした
/dev/cgroup
40%
60%
Group1
Group2
Tripwire
VM
(loop)
loop

Group1のCPU使用率は設定した40%でほぼ一定し
ており制御できている
Group2
VM
Tripwire
Group1
70
60
Tripwire
VM
(loop)
Group2
loop
50
CPU(%)
Group1
40
30
20
10
0
0
3
6
9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60
time(S)

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との定量的な性能比較