KVMにおける仮想マシンの 内部監視機構の実装と性能評価

Slides:



Advertisements
Similar presentations
九州工業大学 塩田裕司 光来健一.  仮想マシンは必要なときだけ動かす使い方が一般 的 ◦ 一台の計算機上に複数の計算機を仮想的に作成できる ◦ デスクトップ  異なる OS を使用するため作成 ◦ サーバ  最大負荷に合わせた数の仮想マシンを作成  長期間使わない仮想マシンも存在する VM.
Advertisements

ファイルキャッシュを考慮したディスク監視のオフロード
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
クラウド上の仮想マシンの安全なリモート監視機構
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
Xenを用いたクラウドコンピュー ティングにおける情報漏洩の防止
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
KVMにおけるIDSオフロードのための仮想マシン監視機構
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
メモリ暗号化による Android端末の盗難対策
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
XenによるゲストOSの解析に 基づくパケットフィルタリング
大きな仮想マシンの 複数ホストへのマイグレーション
ファイルシステムキャッシュを 考慮したIDSオフロード
ネストした仮想化を用いた VMの安全な帯域外リモート管理
帯域外リモート管理の継続を 実現可能なVMマイグレーション手法
VMマイグレーションを可能にするIDSオフロード機構
クラウドの内部攻撃者に対する安全なリモートVM監視機構
アスペクト指向プログラミングを用いたIDSオフロード
サスペンドした仮想マシンの オフラインアップデート
型付きアセンブリ言語を用いた安全なカーネル拡張
仮想マシンを用いて既存IDSを オフロードするための実行環境
仮想マシン間にまたがる プロセススケジューリング
Xenによる ゲストOSの監視に基づく パケットフィルタリング
仮想計算機を用いて OSを介さずに行う安全な ファイルアクセス制御
セキュリティ機構のオフロードを考慮した 仮想マシンのスケジューリング
分散IDSの実行環境の分離 による安全性の向上
仮想マシンモニタによる きめ細かい パケットフィルタリング
VMのメモリ暗号化によるクラウド管理者への情報漏洩の防止
VMのメモリ暗号化による クラウド管理者への情報漏洩の防止
VM専用仮想メモリとの連携による VMマイグレーションの高速化
IaaS型クラウドにおける インスタンス構成の動的最適化手法
リモートホストの異常を検知するための GPUとの直接通信機構
シャドウデバイスを用いた 帯域外リモート管理を継続可能なVMマイグレーション
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
IaaS環境におけるVMのメモリ暗号化による情報漏洩の防止
クラウドにおけるVMリダイレクト攻撃を防ぐためのリモート管理機構
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
仮想マシンを用いた 既存IDSのオフロード
Intel SGXを用いた仮想マシンの 安全な監視機構
軽量な仮想マシンを用いたIoT機器の安全な監視
複数ホストにまたがって動作する仮想マシンの障害対策
セキュリティ機構のオフロード時の 性能分離
VMMのソフトウェア若化を考慮した クラスタ性能の比較
信頼できないクラウドにおける仮想化システムの監視機構
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
仮想環境を用いた 侵入検知システムの安全な構成法
Cell/B.E.のSPE Isolationモードを用いた監視システム
仮想マシンの監視を継続可能なマイグレーション機構
仮想マシンと物理マシンを一元管理するための仮想AMT
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
強制パススルー機構を用いた VMの安全な帯域外リモート管理
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション
複数ホストにまたがるVMの メモリ使用状況に着目した高速化
Virtual Machine Introspectionを可能にするVMCryptの拡張 田所秀和 光来健一 (九州工業大学)
強制パススルー機構を用いた VMの安全な帯域外リモート管理
管理VMへの キーボード入力情報漏洩の防止
Presentation transcript:

KVMにおける仮想マシンの 内部監視機構の実装と性能評価 九州工業大学  中村孝介 光来健一

仮想マシンによるIDSオフロード 侵入検知システム(IDS)への攻撃 IDSと監視対象システムを別々の仮想マシン(VM)上 で動作させる 攻撃者によって改ざん・停止させられる可能性がある IDSと監視対象システムを別々の仮想マシン(VM)上 で動作させる IDS自身が攻撃を受けにくくすることができる VM VM IDS 近年、攻撃者の検知にIDSが用いられるようになってきた。 IDSはメモリ、ディスク、ネットワークを監視することで攻撃者の侵入を検知する。 しかし、IDSは侵入した攻撃者によって改ざん・停止させられる可能性がある。 このようなIDS自身への攻撃に対処するために、仮想マシンを用いてIDSをオフロードするという手法が提案されている。 IDSオフロードは監視対象システムとIDSを別々のVMで動作させ、 IDSを監視対象VMの外側で実行して監視を行う手法である。 IDSオフロードを行うことにより、監視対象VMに侵入されたとしても、IDSを攻撃することはできず、IDSのセキュリティを向上させることができる。 もっと短く 検知 監視 攻撃 監視 メモリ ディスク ネットワーク 攻撃者

従来のIDSオフロードの研究 VMware、Xen、QEMU等で行われてきた 異なる仮想化ソフトウェア間で性能比較した研究はな い Livewire [Garfinkel et al.'03] VMwatcher [Jiang et al.'07], ... 異なる仮想化ソフトウェア間で性能比較した研究はな い VMwatcherは様々な仮想化ソフトウェアに対して実装 性能評価はUser-Mode Linuxでのみ LibVMIはネットワーク経由でメモリダンプを行うことでVMのメモリ情報を取得するため、メモリ監視性能が低い

KVMにおけるIDSオフロード Linuxの標準になっているKVMでの研究は少ない オープンソースのLibVMIが対応 実装の問題でメモリ監視性能が低い QEMUと通信してデータを取得 他の仮想化ソフトウェアとの公平な性能比較ができない IDS リクエスト データ データの 要求 VM libVMI: VMの物理メモリにアクセスする際にネットワーク経由でメモリ内容を送る必要があるため遅く、メモリ監視性能が低い 仮想アドレス QEMU LibVMI カーネルデータ ホストOS

本研究の目的 KVMにおいて高性能なIDSオフロードを実現するシス テムを開発 KVMとXenにおけるIDSオフロードの性能を比較 LibVMIを引き合いに 比較をメインに?

KVMonitor KVMのための高性能なIDSオフロード・システム KVMではVMをホストOSの一つのプロセスとして実行 QEMUがハードウェアをエミュレーション IDSもホストOSのプロセスとして実行 VMのメモリとディスク、ネットワークの監視に対応 VM オフロード Linuxカーネル内で仮想マシンモニタを動作 QEMUによるディスク、メモリのエミュレーション QEMU 通常の プロセス 監視 IDS ディスク メモリ KVMonitor ネットワーク VMM Linuxカーネル(ホストOS)

メモリの監視 VMの物理メモリをホストOS上のファイルとして作成 RAMディスクに似たHugeTLBfs上のファイル このファイルをQEMUとKVMonitorの両方のメモリにマップ VMのOSカーネル内の情報を取得できる 例:プロセス情報 ホストOS QEMU VM 監視 IDS メモリ ファイル VM物理 KVMonitor ・従来、VMの物理メモリはQEMU内でmallocしていて外から見ることができなかった ・libVMIは効率が悪い(ネットワーク経由でメモリダンプ)

メモリアドレスの変換 KVMonitorが仮想アドレスを物理アドレスに変換 KVMonitorがマップしたメモリファイルは物理メモリ QEMUと通信してCR3レジスタの値だけを取得 物理メモリ上のページテーブルを探索してアドレス変換 IDS 仮想アドレス 物理アドレス VM VM物理 メモリ IDSはVM内のカーネルデータの仮想アドレスだけがわかっているが、KVMonitorにマップされたメモリは物理メモリであるため、 データを取得することができない。 IDSがマップされたVMの物理メモリから情報を取得できるようにするために、KVMonitorが仮想アドレスを物理アドレスに変換します。 KVMonitorはVMのCPUのCR3レジスタの値をQEMUと通信することで取得する。 通信にはQMPを使用し、CR3レジスタの値を取得するためにコマンドをQMEUに追加した。 KVMonitorは得られたCR3レジスタの値と仮想アドレスから物理メモリ上のページテーブルを探索して、仮想アドレスを物理アドレスに変換する IDSは得られた仮想アドレスと物理アドレスの対応をもとにメモリから情報を取得できるようになる。 QMP {“execute”:”cr3”} {“return”: {“CR3”:”0x000....”}} CR3 QEMU CR3 ページ テーブル KVMonitor ホストOS 8

ディスクの監視 VMのディスクを仮想的なブロックデバイスとして提供 NBDを用いてアクセス時にqcow2形式をraw形式に変換 IDS 監視 KVMonitor VM ブロック デバイス NBD client NBD server ディスク イメージ (qcow2) QEMU ディスクを監視することによってファイルの改竄を検知することができる VMの仮想ディスクはホストOS上のディスクイメージ ホストOS

ネットワークの監視 パケットキャプチャが可能なtapデバイスを作成 ホストOSとVMをブリッジ接続 VMが送受信するパケットを取得できる IDS QEMU eth0 KVMonitor 監視 tap0 ホストOS br0 eth0

Transcallの移植 Xen用に開発されたTranscall [飯田ら’10] をKVM 用に移植 Transcallは既存のIDSをオフロードするための実行環境を 提供 KVMonitor経由でメモリ監視を行うように修正 IDS Transcall システムコールエミュレータ: IDSが発行するシステムコールにVM内の情報を返させるために、VM内のカーネルデータから必要な情報を取得する Shadow fs: VM内と同一のファイルシステムを提供しつつ、安全のためにIDSの実行に必要なファイルだけホストOS上のファイルを使わせる Shadow proc: VM内のメモリを解析して、プロセスやネットワークに関する情報を提供する。 簡略 システムコール エミュレータ Shadow proc ファイルシステム VM KVMonitor VM物理 メモリ QEMU

IDSとVMの統一的なリソース管理 IDSオフロードを考慮したリソース管理 IDSと監視対象VMの組に一定のリソースを割り当て可能 LinuxのCgroups機能でプロセスのグループ化 KVMではVMはホストOS上のプロセス Cgroupsはグループ単位でリソースの割り当てを行う Group1 Group2 VM VM IDS IDS IDSをオフロードするとVMに割り当てたリソース以上にリソースを消費してしまうのでVM間公平性が保てない そこでKVMonitorではIDSオフロードを考慮したリソース管理を行う。 QEMU QEMU ホストOS

グループへのリソース割り当て CPU時間の相対的な割り当て メモリ使用量の制限 各グループにCPUシェアを設定し、グループ間で配分される CPU時間の割合を制御 メモリ使用量の制限 グループが使用するファイルキャッシュを含めたメモリの使用 量を制限 CPU時間 60ms/100ms 40ms/100ms 512MB 256MB CPUシェア:60 CPUシェア:40 VM VM IDS IDS QEMU QEMU ホストOS

実験 目的 比較対象 KVMとXenにおけるIDSオフロードの性能比較 KVM_host:ホストOSにオフロード 実験環境 Inter Xeon E5630(2.53GHz) メモリ 6GB HDD 250GB Dom0:Linux 3.2.0 VM:Linux 2.6.27 実験 目的 KVMとXenにおけるIDSオフロードの性能比較 比較対象 KVM_host:ホストOSにオフロード Xen_Dom0:管理VMにオフロード KVM_VM:KVMのVMで実行 Xen_VM:XenのVMで実行 ホスト側 ゲスト側 Linux 3.2.0(ホストOS) KVMonitor QEMU- KVM 1.1.2 IDS VM 全体的に長いので1行で済むように Xen、KVMのバージョンは図に書き込み グラフの数値を小数点第1位に 口頭:オフロードせずにVMで実行 Xen 4.1.3(VMM) 管理VM(Dom0) VM IDS

実験:KVMonitorとLibVMIの比較 KVMにおいてVMのメモリをホストOSから読み込む性 能を測定 KVMonitorを用いた方が読み込み性能が高い VMのメモリファイルをマップすることで高速化

実験:メモリファイルの性能への影響 メモリファイルを使うことによるVM内でのメモリ性能へ の影響を調べた メモリファイルを使っても性能は劣化しない むしろHugeTLBfsを使うことでTLBミスが減少して性能向上

実験:メモリ監視性能の比較 VMのメモリの読み込み性能を測定 KVMのホストOSからの読み込み性能が最も高い 仮想化によるオーバーヘッドがない Xenの管理VMからの読み込み性能が極端に低い VMのメモリをページ単位でマップするため Guest→VM Xen_host→Xen_Dom0 文章中は管理VMに Animationで丸付けによる注目 VMのメモリをページ単位でアクセスし確保した領域にメモリコピーする

実験:ディスク監視性能の比較 VM内のファイルの読み込み性能を測定 ホスト側で読み込む方が高速 ディスクイメージ形式の違いによる性能差は小さい KVMの標準はqcow2形式、Xenの標準はraw形式 グラフを入れ替えKVM_guest→Xen_host KVM同士、Xen同士で丸付け グラフを2枚:デフォルトのみ・全部 文章はそのまま グラフ KVM VM Dom0 DomU

実験:ディスク監視性能の比較 VM内のファイルの読み込み性能を測定 ホスト側で読み込む方が高速 ディスクイメージ形式の違いによる性能差は小さい KVMの標準はqcow2形式、Xenの標準はraw形式 グラフを入れ替えKVM_guest→Xen_host KVM同士、Xen同士で丸付け グラフを2枚:デフォルトのみ・全部 文章はそのまま

実験:Tripwireの性能比較 Tripwireによるディスクの検査にかかる時間を測定 Xenにおける実行時間の方がKVMより短い raw形式のほうがqcow2形式より高速 アクセス時にNBDで変換することによるオーバーヘッドのため Tripwire: ファイルの整合性を確認するIDS ホスト側と明記(グラフ) ライン:アニメーション

実験:パケットキャプチャ性能の比較 高負荷時のSnortのパケットロス率を測定 VMに大量のパケットを送信 KVMのホストOSでSnortを実行して監視したほうがパケット ロス率が低い Xenの管理VMには仮想化のオーバーヘッドがある Snort: パケットをキャプチャして 攻撃の検出を行うIDS

実験:chkrootkitの性能比較 chkrootkitの実行時間を測定 ホスト側ではTranscallを用いて実行 KVMの方が高速 Xenでは2.7倍 2.7倍 2倍 chkrootkit: システム内に仕掛けられたrootkitの検知を行うIDS グラフ修正 KVM Xen 凡例:ホスト側、ゲスト側

実験:CPU割り当ての制約 グループに割り当てるCPU時間を60:40に設定 設定通りのCPU使用率になった オフロードしたTripwireとVMをグループ化 VM上でCPUを使うプログラムを実行 もう一つのグループでCPUを使うプログラムを実行 設定通りのCPU使用率になった Group1 Group2 VM loop loop 1.TripwireとVM上のloop 2.ホストOSとVMでloop 3.全て実行 Tripwire QEMU ホストOS

実験:メモリ使用量の制限 TripwireとVM全体のメモリ上限を256MBに設定 ファイルキャッシュも考慮して制限することができた ホストOS QEMU Tripwire VM malloc Group1 VMとTripwireのメモリ使用量を個別に把握するために、VMとTripwireそれぞれをグループ化

関連研究 Livewire [Garfinkel et al.’03] VMawatcher[Jiang et al.'07] IDSオフロードの最初の研究 VMware Workstationで実装 VMawatcher[Jiang et al.'07] QEMUでの実装がKVMにも適用できる可能性あり 監視性能については不明 Resource Cage [新井ら’10]、 Balloon Performer [内田ら’11] XenにおいてオフロードしたIDSとVMの統一的なリソース管 理を実現

まとめ KVMにおける高性能なIDSオフロード・システムの KVMonitorを開発した 高いメモリ監視性能を実現 KVMとXenにおけるIDSオフロードの性能比較を行っ た Tripwire以外ではKVMの方が性能がよい 今後の課題 多くのIDSを用いてより網羅的に評価を行う