仮想環境を用いた 侵入検知システムの安全な構成法 光来健一* 廣津登志夫** 佐藤孝治** 明石修** 福田健介** 菅原俊治** 千葉滋* *東京工業大学 **NTT未来ねっと研究所
侵入検知システム(IDS) ホストへの攻撃の徴候を検出・報告する ホスト型IDS(HIDS) ネットワーク型IDS(NIDS) ホストやネットワークの監視を続けなければならない ホスト型IDS(HIDS) ユーザの挙動、ファイルなどを監視 ネットワーク型IDS(NIDS) ネットワーク上を流れるパケットを監視
従来のIDS構成 ホスト型IDS ネットワーク型IDS IDSがサーバプロセスと同じ実行環境下で動く HIDS httpd NIDS sshd
攻撃によるIDSの停止 IDSの停止 攻撃方法 IDSプロセスの停止 IDSのルールを変更 IDSのルール漏洩 サーバプロセスの通信チャネルから侵入 IDSの利用する通信チャネルから侵入 管理者になりすまして侵入
アップデート時のIDSの停止 IDSの停止 綿密なテストが必要 アップデート時の不手際 新しいIDSの不具合 別個に同じ環境を作るのは大変 既存の環境で共存させるのは危険 ディレクトリやネットワークポートを変更
新しいIDS構成法 IDSを仮想環境の中で動かす 構成要素 IDSを攻撃から守る アップデートを安全に行う 監視用ポートスペース サーバ用ポートスペース サーバプログラムを動かす ベース環境 ホスト サーバ用 ポートスペース 監視用 ポートスペース サーバ IDS ファイル システム ベース環境 ベースネットワーク
ポートスペース [光来ら’03] 仮想的な実行環境 ファイルシステム空間 ネットワーク空間 プロセス空間 ベース環境のファイルシステムを継承できる 一から構築しなくてよい ネットワーク空間 ベース環境と同じIPアドレスが使える 専用のIPアドレスが必要ない プロセス空間 シグナルの送信を制限できる プロセス ネットワーク スタック
監視用ポートスペース サーバ用ポートスペースを監視できる VPNのみを利用する 他の監視用ポートスペースと通信できる ファイルシステム ネットワークインタフェース VPNのみを利用する 他の監視用ポートスペースと通信できる 閉じたネットワークを形成する 監視 IDS サーバ用 ポートスペース 監視用 ポートスペース VPN
サーバ用ポートスペース ベースネットワークを利用する 複数のサーバ用ポートスペースを使える インターネットからアクセスできる サーバプロセス宛てのパケットを転送する ベース環境とサーバ用ポートスペースの間 複数のサーバ用ポートスペースを使える サーバ用 ポートスペース サーバ サーバ 転送 ベース環境 インターネットへ ベースネットワーク
IDSの保護 サーバ用ポートスペースからはアクセスできない インターネットから直接アクセスできない ファイル、ネットワーク、プロセスのいずれにも サーバプロセス経由で侵入されても大丈夫 インターネットから直接アクセスできない VPNが必要 131.112.40.1 監視用 ポートスペース IDS 131.112.40.1 サーバ用 ポートスペース
IDSの多重化 複数の監視用ポートスペースでそれぞれIDSを動かす 万一の場合でも監視を続けることができる サーバ用 ポートスペース サーバ 監視 IDS
IDSの安全なアップデート 別々の監視用ポートスペースの中で古いIDSと新しいIDSを同時に動かす アップデートが完了したら古いポートスペースは破棄 分散IDSも一括してアップデートできる 新しいIDS サーバ サーバ 古いIDS
継承を用いたアップデート 古いIDSの動いているポートスペースを継承 必要なファイルだけ変更 アップデート完了時に古いIDSプロセスを停止 サーバ 継承 古いIDS
実装 FreeBSD 4.7にポートスペースを実装 ファイルシステムの仮想化 ネットワークの仮想化 監視機構
ファイルシステムの仮想化 ベース環境の/.filespace/<id>を利用 unionマウント 継承を実現 IDSのチェックを容易に 読み出し 書き込み /.filespace/1 / unionファイルシステム
ネットワークの仮想化 VPNにはIPsecを用いる 監視用ポートスペース サーバ用ポートスペース IPsecのSPIの値でパケットを分離 ポート番号でパケットを分離 外部ホストと通信する時は 動的NAPTのように変換 サーバ用 ポートスペース 監視用 ポートスペース httpd popd IDS1 IDS2 port=80 port=110 SPI=1 SPI=2 非IPsec IPsec ベース環境 ベースネットワーク
ファイルシステムの監視 サーバ用ポートスペースのファイルシステムをマウント unionマウント /.serverfs/<id>でアクセスできる /.filespace/<id>だけをマウントすることもできる 変更部分のみ ポートスペース1の unionファイルシステム /.filespace/1 監視するための unionファイルシステム / /.serverfs/1 /.filespace/2 / ポートスペース2の unionファイルシステム
ネットワークの監視 ベース環境のネットワーク インタフェースにアクセス パケットフィルタ(BPFなど)を通して 全てのパケットを取得できる システム全体に対する攻撃も監視 サーバ用 ポートスペース 監視用 ポートスペース IDS BPF ベース環境
実験:Tripwire ファイルの改ざんを監視 全てのファイルをチェック オーバヘッド ベース環境にて 監視用ポートスペースからサーバ用ポートスペース 全てのファイルをチェック ファイルに変更はなし オーバヘッド 15% 変更部分だけチェックすれば高速化できる PentiumIII-S 1.4GHz メモリ 512MB
実験:Snort ネットワークパケットを監視 UDPパケットを大量に送信 オーバヘッド ベース環境にて 監視用ポートスペースにて 2,200パケット/秒 オーバヘッド 0.9%多くとりこぼした 100baseT スイッチ NIC Intel Pro/100+
実験:thttpdウェブサーバ サーバ用ポートスペースのオーバヘッド測定 オーバヘッド ApacheBench 継承なし: 9.5% 継承あり: 4.3%
関連研究(1) IDSをカーネル内で動かす IDSを別のホストで動かす ホストに侵入されても停止させられにくい 制御用のシステムコール経由の攻撃 専用のIDSが必要 IDSを別のホストで動かす サーバホストの影響を受けにくい アップデートで多重化がしやすい ネットワーク型IDSのみ対応できる
関連研究(2) VMI [Garfinkel et al.’03] サーバプロセスを仮想マシンの中で動かす IDSが直接攻撃を受ける ホスト 仮想マシン サーバ 監視 IDS
まとめ IDSをポートスペースの中で動作させるIDS構成法を提案 今後の課題 IDSの安全性を確保 IDSのアップデート時に監視を継続 IDSに対するDoS攻撃への対処 IDSを多重化させた時の負荷対策