ネットワークの可視化

情報処理学会創立 50周年記念(第 72回)全国大会
セッション名:情報爆発時代における分散処理と運用技術
講演番号:2ZP-4 会場:ZP会場 3月9日(火)15:30~17:30
i-Pathルータのフロー情報を用いた
DoS攻撃検知法
野上晋平 下田晃弘 後藤滋樹
早稲田大学 基幹理工学研究科 情報理工学専攻
1
研究背景
従来のインターネット
エンドノードからネットワーク内部の情報が
直接得られない
ネットワークの多様化
情報開示を求める声の高まり
2
ネットワークの多様化
ネットワークの利用形態が多様化
ブロードバンド
モバイル
P2P
ネットワークアプリケーションの最適化、
障害時の原因究明などで困難に直面
3
情報開示を求める声
ネットワーク中立性の観点から情報開示を
求める声が高まっている
米連邦通信委員会(FCC)
情報開示の重要性を指摘
「ISP は正当な理由があればサービスの規制
を行えるが、その場合はネットワークの管理情
報を開示しなければならない」
4
研究概要
本研究ではこれまで注目されてない
ルータが持つ情報を活用する
ルータを通過するフロー情報を用いて
DoS攻撃を検知
複数のルータを使用してDoS攻撃の
送信元を識別する
※フロー:宛先と送信元のIPアドレス、ポート番号が
同一のパケット
5
i-Pathルータ
小林克志(産業技術総合研究所)が開発
FreeBSDのカーネルをSIRENSに入れ替え実装
ネットワーク内部の可視化が目的
エンドノードが通信経路の情報を取得できる
取得できる情報の例
ネットワーク帯域、輻輳状態、遅延、パケットロス
6
可視化の例
可用帯域 [%]
ネットワーク帯域 [bps]
32%
1G
33%
1G
17%
500M
59%
2G
68%
10G
2%
100M
43%
3G
48%
1G
35%
700M
34%
2G
41%
2G
7
SHIMヘッダ
IPヘッダとTCP/UDPヘッダの間にルータの
持つ情報を書き込むSHIMヘッダを挿入
イーサ
ネット
ヘッダ
IP
ヘッダ
TCP/
UDP
ヘッダ
イーサ
ネット
ヘッダ
IP
ヘッダ
SHIM
ヘッダ
データ
TCP/
UDP
ヘッダ
データ
イーサ
ネット
トレイラ
イーサ
ネット
トレイラ
IPヘッダとTCP/UDPヘッダの間にSHIMヘッダを挿入
8
DoS攻撃
サービス不能(Denial of Service)攻撃
大量のパケットを送りつけ、サーバの資源やネッ
トワーク帯域を占有してサービスを妨害する
攻撃の送信元の識別が困難
DoS攻撃の種類
SYN Flood(TCP), Connection Flood(TCP), ・・・
UDP Flood, ICMP Flood, ・・・
9
従来のDoS攻撃の検知
?
?
DoS攻撃の経路情報が得られない
10
実証実験
i-Pathルータが実現する機能を確認する
 i-Pathルータの機能をLinuxで実装
1. nf_conntrackでフロー情報を取得
ルータでの
処理
2. MIB(SNMP)に情報を書き込む
3. ルータを観測して得られたフロー情報をもと
にDoS攻撃を検知(検知プログラム)
定常状態から外れた場合に検知
複数のルータからDoS攻撃の経路を識別
11
実証実験
DoS攻撃
通常のトラフィック
各ルータで同時にDoS攻撃の検知を行う
12
SYN Flood攻撃
SYN Flood攻撃とは
TCP 接続のスリーウェイハンドシェイクにおいて、
接続要求(SYNパケット)を大量に送りつける攻撃
送信元アドレスの偽装が容易
検知法
内部状態がSYN_RECVのフロー数で判定
SYNフラグとACKフラグ
が立っている
13
実験結果(SYN Flood)
フロー数
フロー数
フロー数
フロー数
14
実験結果(SYN Flood)
$ ./detector
02:50:04:
Router3:
Router4:
02:50:05:
Router3:
Router4:
02:50:06:
Router3:
Router4:
02:50:07:
Router3:
Router4:
output01.csv
SYN Flood
SYN Flood
SYN Flood
SYN Flood
SYN Flood
SYN Flood
SYN Flood
SYN Flood
15
Connection Flood攻撃
Connection Flood攻撃とは
TCP による接続を大量に確立させる攻撃
検知法
内部状態がESTABLISHEDのフロー数で判定
TCPコネクションが
確立している
16
実験結果(Connection Flood)
フロー数
フロー数
フロー数
フロー数
17
実験結果(Connection Flood)
$ ./detector
20:45:59:
Router3:
Router4:
20:46:04:
Router3:
Router4:
20:46:07:
Router3:
Router4:
20:46:08:
Router3:
Router4:
output02.csv
Connection Flood
Connection Flood
Connection Flood
Connection Flood
Connection Flood
Connection Flood
Connection Flood
Invalid Data
18
UDP Flood攻撃
UDP Flood攻撃とは
UDP パケットを大量に送りつける攻撃
送信元アドレスの偽装が容易
検知法
UDPのフロー数で判定
19
実験結果(UDP Flood)
フロー数
フロー数
フロー数
フロー数
20
実験結果(UDP Flood)
$ ./detector
21:23:46:
Router3:
Router4:
21:23:50:
Router3:
Router4:
21:23:51:
Router3:
Router4:
21:23:52:
Router3:
Router4:
output03.csv
UDP Flood
UDP Flood
UDP Flood
UDP Flood
UDP Flood
UDP Flood
UDP Flood
UDP Flood
21
ICMP Flood攻撃
ICMP Flood攻撃とは
ICMP パケットを大量に送りつける攻撃
送信元アドレスの偽装が容易
検知法
ICMPのフロー数で判定
22
実験結果(ICMP Flood)
フロー数
フロー数
フロー数
フロー数
23
実験結果(ICMP Flood)
$ ./detector
21:49:15:
Router3:
Router4:
21:49:16:
Router3:
Router4:
21:49:17:
Router3:
Router4:
21:49:18:
Router3:
Router4:
output04.csv
ICMP Flood
ICMP Flood
ICMP Flood
ICMP Flood
ICMP Flood
ICMP Flood
ICMP Flood
ICMP Flood
24
まとめ
ネットワーク可視化の重要性が高まる中で、
ルータが持つ情報に着目した
実証実験でルータのフロー情報を用いて
DoS攻撃の検知を行った
複数のルータを監視することでDoS攻撃の
経路を識別できる
25
ご清聴ありがとうございました
26
i-Pathプロジェクト
情報通信研究機構の委託を受け、産業技術
総合研究所、早稲田大学後藤滋樹研究室の
共同研究
FreeBSDのカーネルをSIRENSに
入れ替え実装
 i-Path Project: http://i-path.goto.info.waseda.ac.jp/trac/i-Path/
27
実験環境
Polling
観測用ホスト
28
i-PathルータとSNMP
i-Pathルータ
End-to-End原理にもとづいて、エンドノードへの
情報提供を目的とする
ルータで情報が開示されれば、どのホストでも
等しく情報が得られる
SNMP
Managerにより、ホストの集中管理を行う
外部のホストのアクセスは制限される
情報の取得に加えて、一部の設定も行える
29
End-to-End原理
パケットの再送やQoS などの複雑な機能は可
能な限りエンドノードで行うべきだという考え
インターネットの基本的な設計原理
TCPにおける再送制御などがこれにあたる
30
nf_conntrack
フローを追跡して情報を保持する
(Linuxの持つConnection Tracking機能)
通信中のフローについての情報
プロトコル
コネクションの状態、数
送信元と宛先のIPアドレス・ポート番号
パケット数、トラフィック量
31
例:nf_conntrackの情報
内部状態
ipv4 2 tcp 6 299 ESTABLISHED
src=192.168.1.2 dst=192.168.2.2
sport=34711 dport=5001
packets=9736 bytes=14373496
src=192.168.2.2 dst=192.168.1.2 コネクションの確立状態
sport=5001 dport=34711
packets=3687 bytes=192812 [ASSURED]
mark=0 secmark=0 use=2
32
nf_conntrack 補足
The meaning of the states are:
* NONE:
initial state
* SYN_SENT: SYN-only packet seen
* SYN_RECV: SYN-ACK packet seen
* ESTABLISHED: ACK packet seen
* FIN_WAIT: FIN packet seen
* CLOSE_WAIT: ACK seen (after FIN)
* LAST_ACK: FIN seen (after FIN)
* TIME_WAIT: last ACK seen
* CLOSE:
closed connection (RST)
33
nf_conntrack 補足
 それぞれのタイムアウト時間
[TCP_CONNTRACK_SYN_SENT]
= 2 MINS
[TCP_CONNTRACK_SYN_RECV]
= 60 SECS
[TCP_CONNTRACK_ESTABLISHED] = 5 DAYS
[TCP_CONNTRACK_FIN_WAIT]= 2 MINS
[TCP_CONNTRACK_CLOSE_WAIT] = 60 SECS
[TCP_CONNTRACK_LAST_ACK]
= 30 SECS
[TCP_CONNTRACK_TIME_WAIT]
= 2 MINS
[TCP_CONNTRACK_CLOSE]
= 10 SECS
[TCP_CONNTRACK_SYN_SENT2]
= 2 MINS
34
今後の課題
実運用のトラフィックに近い環境で評価を
行い説得力を高める
今回使用しなかったパラメータを使用して
検知の精度を高める
35
DoS攻撃の種類
SYN Flood攻撃
 TCP で接続の最初に行われるスリーウェイハンドシェイクにおいて、攻
撃者が接続要求(SYNパケット)を大量に送りつける攻撃
Connection Flood攻撃
 TCP による接続を大量に確立させる攻撃
UDP Flood攻撃
送信元アドレスの
偽装が可能
 UDP パケットを大量に送りつける攻撃
ICMP Flood攻撃
 ICMP echo request パケットを大量に送りつける攻撃
36
DoS攻撃の検知法
SYN Flood攻撃
SYNフラグとACKフラグ
が立っている
内部状態がSYN_RECVのフロー数で判定
Connection Flood攻撃
内部状態がESTABLISHEDのフロー数で判定
UDP Flood攻撃
UDPのフロー数で判定
TCPコネクションが
確立している
ICMP Flood攻撃
ICMPのフロー数で判定
37