分散IDSの実行環境の分離 による安全性の向上 光来健一 千葉滋 (東京工業大学) 廣津登志夫 (豊橋技術科学大学) 菅原俊治 (NTT)
分散侵入検知システム(IDS) ワームやウィルスの拡がりを防ぐ 継続した監視が必要 各ホストのIDSの情報を集める 攻撃の兆候や 各ホストの状態を解析 IDS サーバ 分散システム
IDSへの能動的な攻撃 IDSに直接アクセスする攻撃 分散システム外部から直接攻撃 分散システム内部のサーバを経由する攻撃 攻撃者
IDSへの受動的な攻撃 IDSが攻撃用データを読むのを待つ攻撃 例:フォーマット文字列の脆弱性 ネットワーク型IDS ホスト型IDS サーバのファイルの内容 や属性を書き換える IDS パケット 監視 ファイル 監視 サーバ
分散IDSの構成に問題 各IDSが監視対象から分離されていない ホスト型IDS ネットワーク型IDS 監視対象のサーバホスト上に配置される ファイルシステム、ネットワーク、プロセス空間を共有 ネットワーク型IDS 監視対象のネットワーク上に配置される ネットワークを共有
仮想分散環境:HyperSpector 分散IDSを分散システムから分離する IDSを仮想マシン(VM)上で動かす VMをVPNで結ぶ 監視 別の分散IDS 分散IDS 分散システム
VMの独立性 独立した名前空間を提供 ホストからのアクセスを制限 ネットワークシステム空間 ファイルシステム空間 プロセス空間 VPNのみと接続され、ホストのネットワークから分離 ホストと同じIPアドレスを利用できる ファイルシステム空間 IDSプログラムやポリシーファイルを分離 プロセス空間 ホストのプロセスとの通信を禁止 ホストからのアクセスを制限 network system VPN
VMの監視機構 IDSはVM内からサーバを監視できる ユーザレベルIDSをそのまま動かせる ファイルシステム ネットワーク プロセス サーバの使うファイルシステムを検査 ネットワーク ホストが送受信する全てのパケットを盗聴 サーバの行うUnixドメインソケットによる通信を盗聴 プロセス サーバプロセスの実行を追跡 ユーザレベルIDSをそのまま動かせる
能動的な攻撃からの保護 HyperSpector は外部からのアクセスを禁止 分散システム外部からの直接攻撃を防ぐ VPNによるネットワーク空間の分離 分散システム内のサーバを経由した攻撃を防ぐ IDSの使う通信ポートに アクセスできない IDSプロセスにアクセス できない IDSポリシーファイルに アクセスできない
受動的な攻撃への対処 被害が拡がるのを防ぐことができる サーバや他の HyperSpector に能動的な攻撃はできない 同じ機能を持った分散IDSを同時に動かしておけば監視を継続できる HyperSpector 外にサーバ情報を送信できない 監視機構によりサーバ情報を盗み見ることはできる 分散IDSの実装2 分散IDSの実装1
ホスト構成 ポートスペース サーバスペース ベース環境 IDSを動かすVM サーバを監視する サーバを動かすVM LANに接続される それ以外のプログラムを動かす ホスト サーバ スペース ポート スペース サーバ プロセス IDS VPN ベース環境 LAN
ポートスペースによる仮想化 ファイルシステムの仮想化 ネットワークシステムの仮想化 union ファイルシステムを利用 ベース環境のファイルシステムの 上に専用のディレクトリを重ねる サーバスペースも同様の仮想化 ネットワークシステムの仮想化 独自のルーティングテーブル等を用意 パケットはVPNのIDで振り分ける ポートスペース ベース環境
ファイルシステムの監視 /.serverfs ディレクトリ /.dserverfs ディレクトリ サーバスペースのファイルシステムをマウント サーバスペースの union ファイルシステムの 上位層(差分)だけをマウント 変更部分のみ検査できる ポートスペース サーバスペース /.dserverfs /.serverfs マウント
ネットワークの監視 パケットフィルタ(/dev/bpf) mkdup システムコール ホスト全体のパケットを盗聴可能 盗聴のためのUnixドメインソケットを作成 サーバがUnixドメインソケットに送ったメッセージを複製 サーバスペース ポートスペース syslogd 複製 サーバ ソケット syslogd
プロセスの監視 システムコール・トレース サーバスペースのプロセスがシステムコールを発行した時に情報を得ることができる ptrace システムコール proc ファイルシステム 受動的な攻撃に備えて操作を制限 レジスタ、メモリの読み出しのみ許可 トレースのためのターゲットプロセスの停止時間を制限
実験 ポートスペースでIDSを動かすオーバヘッドを測定 実験環境 Tripwire:ファイルシステムの整合性チェック Snort:ネットワークパケットの監視 Truss:システムコールのトレース 実験環境 PC 2台 (Pentium 4 3.0Gz, メモリ 1GB, Intel Pro/100+) 100Base-Tスイッチングハブ
実験:Tripwire Tripwireがファイルシステムをチェックする時間を測定 ケース1 (/.serverfs) ポートスペースでチェック フルチェック ケース2 (/.dserverfs) 変更のみチェック ケース3 ベース環境でチェック ホスト サーバ スペース ポート スペース Tripwire Tripwire ベース環境
実験結果:Tripwire ベース環境と比較 /.serverfs /.dserverfs 17%~26%のオーバヘッド 変更率が80%までは高速化
実験:Snort Snortのパケットドロップ率を測定 1バイトのUDPパケットを送信 ケース1 ケース2 ポートスペースから監視 ベース環境から監視 ホスト1 ベース環境 ポート スペース Snort Snort ネットワーク ホスト2
実験結果:Snort ベース環境と比較 ポートスペースのSnort より多くのパケットを取りこぼす 最大で0.5%多い
実験:Truss thttpdの性能を測定 Trussでシステムコールをトレース ApacheBenchで測定 ケース1 ケース2 ホスト1 thttpdの性能を測定 Trussでシステムコールをトレース ApacheBenchで測定 ケース1 ポートスペースでトレース ケース2 ベース環境でトレース サーバ スペース ポート スペース thttpd Truss thttpd Truss ベース環境 ネットワーク ホスト2 ab
実験結果:Truss ベース環境と比較 ポートスペースのTruss 0.8%~7.3%のオーバヘッド
関連研究 専用のIDSが必要 受動的な攻撃に弱い サーバ IDS ReVirt [Dunlap’02] Livewire [Garfinkel’03] ログ LIDS サーバ IDS ログ SODA [Jiang’04] HyperSpector IDS ログ サーバ サーバ IDS ログ 専用のIDSが必要 受動的な攻撃に弱い
まとめと今後の課題 分散IDSを分離する HyperSpector を提案 今後の課題 ポートスペース VPN 独立したファイルシステム空間、ネットワーク空間、プロセス空間 VPN 今後の課題 分散IDSの多重化における負荷の軽減 分散IDSに対するDoS攻撃への対処