ppt - KSL

分散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攻撃への対処