分散IDSの実行環境の分離 による安全性の向上 光来健一 千葉滋 (東京工業大学) 廣津登志夫 (豊橋技術科学大学) 菅原俊治 (NTT) 分散侵入検知システム(IDS) ワームやウィルスの拡がり を防ぐ 攻撃の兆候や 各ホストの状態を解析 各ホストのIDSの情報を集 める • ホスト型IDS • ネットワーク型IDS IDS 継続した監視が必要 サーバ 分散システム IDSへの能動的な攻撃 IDSに直接アクセスする攻撃 分散システム外部から直接攻撃 • IDSの通信用ポートを利用 分散システム内部のサーバを経由する攻撃 • IDSの通信用ポートを利用(より容易) • IDSプロセスを停止 • IDSポリシーの書き換え 攻撃者 IDS サーバ IDSへの受動的な攻撃 IDSが攻撃用データを読むのを待つ攻撃 例:フォーマット文字列の脆弱性 IDS ネットワーク型IDS • サーバにIDSを攻撃する ためのパケットを送る ホスト型IDS パケット 監視 ファイル 監視 • サーバのファイルの内容 や属性を書き換える サーバ 分散IDSの構成に問題 各IDSが監視対象から分離されていない ホスト型IDS • 監視対象のサーバホスト上に配置される • ファイルシステム、ネットワーク、プロセス空間を共有 ネットワーク型IDS • 監視対象のネットワーク上に配置される • ネットワークを共有 仮想分散環境:HyperSpector 分散IDSを分散システムから分離する IDSを仮想マシン(VM)上で動かす HyperSpector VMをVPNで結ぶ VPN 分散IDS 監視 別の分散IDS 分散システム VM VMの独立性 独立した名前空間を提供 ネットワークシステム空間 • VPNのみと接続され、ホストのネットワークから分離 • ホストと同じIPアドレスを利用できる ファイルシステム空間 • IDSプログラムやポリシーファイルを分離 プロセス空間 • ホストのプロセスとの通信を禁止 network system ホストからのアクセスを制限 VPN VMの監視機構 IDSはVM内からサーバを監視できる ファイルシステム • サーバの使うファイルシステムを検査 ネットワーク • ホストが送受信する全てのパケットを盗聴 • サーバの行うUnixドメインソケットによる通信を盗聴 プロセス • サーバプロセスの実行を追跡 ユーザレベルIDSをそのまま動かせる 能動的な攻撃からの保護 HyperSpector は外部からのアクセスを禁止 分散システム外部からの直接攻撃を防ぐ • VPNによるネットワーク空間の分離 分散システム内のサーバを経由した攻撃を防ぐ • IDSの使う通信ポートに アクセスできない • IDSプロセスにアクセス できない • IDSポリシーファイルに アクセスできない 受動的な攻撃への対処 被害が拡がるのを防ぐことができる サーバや他の HyperSpector に能動的な攻撃は できない • 同じ機能を持った分散IDSを同時に動かしておけば監 視を継続できる HyperSpector 外にサーバ情報を送信できない • 監視機構によりサーバ情報を盗み見ることはできる 分散IDSの実装1 分散IDSの実装2 ホスト構成 ポートスペース IDSを動かすVM サーバを監視する サーバスペース ホスト サーバ スペース ポート スペース サーバ プロセス IDS サーバを動かすVM LANに接続される ベース環境 それ以外のプログラム を動かす 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) • ポートスペースでチェック • フルチェック ホスト サーバ スペース ポート スペース Tripwire ケース2 (/.dserverfs) • ポートスペースでチェック • 変更のみチェック Tripwire ケース3 • ベース環境でチェック ベース環境 実験結果:Tripwire ベース環境と比較 • 17%~26%のオーバ ヘッド /.dserverfs • 変更率が80%までは 高速化 チェック時間(秒) /.serverfs 120 100 80 60 40 20 0 0 25 50 75 変更率(%) /.serverfs /.dserverfs ベース環境 100 実験:Snort Snortのパケットドロップ率を 測定 ホスト1 ベース環境 1バイトのUDPパケットを送信 ポート スペース Snort ケース1 Snort • ポートスペースから監視 ケース2 • ベース環境から監視 ネットワーク ホスト2 実験結果:Snort ベース環境と比較 3.5 3 • より多くのパケットを取り こぼす • 最大で0.5%多い 2.5 ドロップ率(%) ポートスペースのSnort 2 1.5 1 0.5 0 0 5 10 15 レート(万パケット/秒) ポートスペース ベース環境 実験:Truss thttpdの性能を測定 Trussでシステムコール をトレース ApacheBenchで測定 ケース1 • ポートスペースでトレース ホスト1 サーバ スペース thttpd thttpd ケース2 ポート スペース Truss Truss ベース環境 • ベース環境でトレース ネットワーク ホスト2 ab 実験結果:Truss ベース環境と比較 • 0.8%~7.3%のオーバ ヘッド 1200 リクエスト数/秒 ポートスペースの Truss 1400 1000 800 600 400 200 0 0 2 4 6 8 リクエストファイルサイズ(KB) ベース環境 ポートスペース 関連研究 LIDS サーバ SODA [Jiang’04] サーバ ReVirt [Dunlap’02] Livewire [Garfinkel’03] サーバ HyperSpector サーバ IDS IDS ログ IDS IDS ログ ログ •専用のIDSが必要 •受動的な攻撃に弱い ログ まとめと今後の課題 分散IDSを分離する HyperSpector を提案 ポートスペース • 独立したファイルシステム空間、ネットワーク空間、プ ロセス空間 VPN 今後の課題 分散IDSの多重化における負荷の軽減 分散IDSに対するDoS攻撃への対処
© Copyright 2024 ExpyDoc