踏み台攻撃への対処
IaaS 型サービスを提供するデータセンタにとって踏み台攻撃は脅威 ユーザの仮想マシン( VM )に侵入されて外部を
攻撃 被害者でありながら加害者になってしまう
攻撃を検出したらその通信を即座に制限すべき できるだけ攻撃パケットだけを制限したい
サービスの可用性を保つため
VM大量のパケット
ポートスキャン
データセンタ外部ホスト
メールサーバ
一般的な対処法
外部のファイアウォールによる通信制限 ポートや IP アドレス単位で通信を制限 踏み台攻撃でない通信まで制限してしまう
制限が大雑把過ぎる
port:25
port:25
SMTPスキャン
sendmail
deny ip A port 25
データセンタ外部ホスト
ファイアウォール
OS
メールサーバ
従来のきめ細かい対処法
サーバ内部のファイアウォールで通信制限 OS 内部のパケット送信
元の情報も利用 踏み台攻撃を行っている
プロセスからのパケットのみ制限
攻撃者に通信制限を無効化される恐れ 管理者権限を取られると
ルールを削除できる
port:25 port:25
SMTPスキャン
sendmail
deny ip A port 25 pid 100
データセンタ
外部ホスト
ファイアウォール
xFilter
仮想マシンモニタ( VMM )内で動作するきめ細かいパケットフィルタ VMM における通信制限
すべてのパケットを検査できる VM から隔離されているので安全
ゲスト OS 内の送信元情報を利用 踏み台攻撃のみを抑制できる VM のメモリを解析して取得
VM
VMMxFilter
プロセス
ゲスト OS
deny ip A port 25 pid 100
パケット 情報
システム構成
xFilter は3つのコンポーネントからなる xFilter コア
モジュール、 IDS を統括 xFilter モジュール
ゲスト OS に合わせたメモリ解析 パケット送信元プロセスの特定
パケットをルールと照合 IDS
踏み台攻撃を検出 攻撃を防ぐルールを追加
ゲスト OS
SMTPスキャン
sendmail
modulecore
IDS破棄
送信
VMM
xFilter
パケット 情報
メールサーバ
xFilter モジュール
送信元プロセスによるパケットフィルタリング 型情報を用いてメモリ解析
デバッグ情報から取得 deny ルールに指定された
プロセスを探す 対象パケットを送信した
ソケットが見つかれば拒否 xFilter
VMM
VM
modulecore
IDS
task_structfiles_struct
fdtable file
sock socket
pid 、 uid
を取得
ポート、IP アドレスを取得
メモリ解析
deny ip A port 25 pid 100
フィルタリング結果のキャッシュ
xFilter
性能向上のために xFilter コアがフィルタリング結果をキャッシュ TCP の同一コネクション内のパケットについて
は結果が変わらないことを利用
パケットの TCP ヘッダのフラグで判断 SYN: コネクションの確立
フィルタリング結果をキャッシュ FIN: コネクションの終了
キャッシュからエントリを削除
miss
hit
core
cache module
packet
xFilter モジュールの開発支援
別 VM で xFilter モジュールを動かせる デバッグが容易になる
クラッシュしても立ち上げなおすだけで良い
フィルタリング性能は低下 完成したら VMM に入れる
ことができる 変更は不要
ゲスト OS
プロセス
xFiltercore
xFiltermodule
送信破棄 VMM
xFilter
パケット
外部 IDS を用いた場合の問題点
VMM 内の IDS が踏み台攻撃を検出 パケット送信から検出までのタイムラグを小さく
できる 外部の IDS で検出するとタイムラグが長い
送信元プロセスを特定できない可能性を減らす ソケットのクローズ プロセスの終了
VM
modulecore外部IDS
xFilter
VMM
IDS による攻撃元の特定
IDS が攻撃を検出したらパケットの送信元を特定 ゲスト OS の全てのソケットを調べる
xFilter モジュールの機能を利用 攻撃を検出したら送信元特定フェーズに移行
以降は送信元を記録 常に記録すると性能に影響
誤検知を防ぐ xFilter
VMM
VM
modulecore
IDS
フィルタリングルールの自動登録
検出した攻撃を防ぐルールを自動的に追加 新しいルールの生成
検出した攻撃パケット(群)を包括するルールを生成 既存のルールとの統合
類似の攻撃を遮断できるように必要に応じてルールをまとめる
deny ip A port 22 pid 100deny ip B port 25 pid 100 deny ip * port * pid 100
deny ip A port 22 pid 100 uid 1000deny ip B port 22 pid 101 uid 1000
deny ip * port 22 pid * uid 1000
実装
xFilter を Xen3.4.2 に実装 xFilter コア
ドメイン 0 の netback と実ドライバの間に実装
ハイパーコールを使ってモジュールを呼び出し
xFilter モジュール VMM 内に実装
IDS ドメイン 0 内に実装
hypervisor call
domain0 domain U
Xen VMM
netfrontnetbackreal
driver
xFilter core
プロセス
xFiltermodule
stab
IDS
送信
実験
ポートスキャンの検出 nmap を用いてドメイン U からポートスキャン フィルタリングルールの最適化
アプリケーションの性能への影響 ドメイン U で Apache 2.0 ApacheBench で 50KB のサイズの HTTP ファイ
ル をリクエスト
xFilter モジュール、 IDS それぞれについて
実験環境Intel Core i7 860Xen 3.4.2 (x86_64)domain0:Linux 2.6.18.8, 7GbytedomainU:Linux 2.6.18.8, 1Gbyte
ポートスキャンの検出
nmap を用いて特定ホストへポートスキャン 1 つのプロセスで実験
ポートスキャンを検出、遮断 ssh 等の他のプロセスからの通信は行える
fork しながら実験 ポートスキャンを検出、遮断 ルールの統合が行われ、以降の攻撃も遮断 別のユーザからの通信は行える
VM
ポートスキャン
VMM
ssh
xFilter
deny ip xx.xx.xx.xx port * pid 16532
deny ip xx.xx.xx.xx port * pid 27904 uid 0deny ip xx.xx.xx.xx port * pid 28281 uid 0
deny ip xx.xx.xx.xx port * pid * uid 0
送信
メモリ解析時間
メモリ解析を行うハイパーコールの実行時間 プロセスのリストのみ解析 ソケット情報まで解析
結果 プロセス数に比例
1 プロセスにつき約 28ns ソケット数に比例
1 ソケットにつき約 41ns
usメモリ解析時間( )
0
10
20
30
40
50
100 200 300 400 500ソケット数
us
メモリ解析時間
0
50
100
150
200
1000 2000 3000 4000 5000
プロセス数
us
フィルタリングによる性能低下
プロセス数を変えて測定 IDS は動作していない xFilter なしでは
スループット 961req/sレスポンス 1.04ms
結果 キャッシュが有効であれば
500 プロセスにつき約 2.5 % キャッシュが無効であれば
500 プロセスにつき約 15 %
0
200
400
600
800
1000
1000 2000 3000 4000 5000プロセス数
(req
/s)
スル
ープ
ット
no cachecache on
0
1
2
3
4
5
1000 2000 3000 4000 5000プロセス数
(ms)
レス
ポン
ス
no cachecache on
IDS による性能低下
プロセス数を変えて測定 ポートスキャンを検出す
る IDS を用いて実験 xFilter モジュールは動作
していない
結果 攻撃検出フェーズでは
スループット 950req/sレスポンス 1.05ms
攻撃元特定フェーズでは500 プロセスにつき約 3%
0
200
400
600
800
1000
1000 2000 3000 4000 5000
プロセス数
(req
/s)
スル
ープ
ット
xFilter なしではスループット 960.82req/s
レスポンス 1.041ms
0
0.5
1
1.5
2
1000 2000 3000 4000 5000
プロセス数
(ms)
レス
ポン
ス
関連研究
Amazon EC2 ドメイン 0 上で動作するファイアウォール 踏み台攻撃に対応できない
ステートフルインスペクション SYN パケットはルールベースで、それ以降はス
テートテーブルでチェック Chorus[Rozier ら ‘ 92]/CAPELA[kourai ら ‘ 98]
カーネルモジュールの開発支援システム プロセスとして実装し、変更なしにカーネルに移
植
まとめ
VMM レベル・パケットフィルタの xFilter を提案 踏み台攻撃に対して安全かつきめ細かい通信制限
が可能 送信元プロセスの情報を用いてフィルタリング VM のメモリを解析してゲスト OS 内の情報を取得
VMM 内の IDS により、ルール追加を自動化 ルールの統合を行い、以降の同様の攻撃を防ぐ
今後の課題 ポートスキャン以外の踏み台攻撃用の IDS を追加