i-Pathルータのフロー情報を用いたDoS攻撃検知法 情報理工学専攻 後藤研究室 5108B096-1 野上晋平
研究背景 ネットワークの可視化 従来のインターネット エンドノードからネットワーク内部の情報が 得られない(ICMPを用いて間接的に得る) ネットワークの多様化 情報開示を求める声の高まり ネットワークの可視化
研究概要 ルータを通過するフロー情報を用いて DoS攻撃を検知 複数のルータを使用してDoS攻撃の 送信元を絞り込む 本研究ではこれまで注目されてない ルータが持つ情報を活用する ルータを通過するフロー情報を用いて DoS攻撃を検知 複数のルータを使用してDoS攻撃の 送信元を絞り込む
i-Pathルータ 産業技術総合研究所の小林克志氏が開発 ネットワーク内部の可視化が目的 取得できる情報の例 エンドノードが通信経路の情報を取得できる 取得できる情報の例 ネットワーク帯域 輻輳状態 遅延 パケットロス
可視化の例 30% 1G 20% 500M 60% 10G 40% 3G 2G 30% 1G 60% 2G 1% 100M 50% 700M
SHIMヘッダ IPヘッダとTCP/UDPヘッダの間にルータの持つ情報を書き込むSHIMヘッダを挿入 イーサネットヘッダ IP ヘッダ TCP/ UDP データ イーサネット トレイラ イーサネットヘッダ IP ヘッダ TCP/ UDP データ イーサネット トレイラ SHIMヘッダ IPヘッダとTCP/UDPヘッダの間にSHIMヘッダを挿入
DoS攻撃 サービス不能(Denial of Service)攻撃 大量のパケットを送りつけ、サーバの資源(CPU、メモリなど)やネットワーク帯域を占有してサービスを妨害する DoS攻撃の種類 SYN Flood(TCP), Connection Flood(TCP), ・・・ UDP Flood, ICMP Flood, ・・・ 分散型(DDoS)、反射型(DRDoS)
実証実験 nf_conntrackでフロー情報を取得 MIB(SNMP)に情報を書き込む i-Pathルータが実現する機能を確認する i-Pathルータの機能をLinuxで実装 nf_conntrackでフロー情報を取得 MIB(SNMP)に情報を書き込む 観測用ホストがSNMPで得たフロー情報を もとにDoS攻撃の検知を行う 定常状態から外れた場合に検知 複数のルータからDoS攻撃の経路を絞り込む ルータでの処理
DoS攻撃の検知法 SYN Flood攻撃 Connection Flood攻撃 UDP Flood攻撃 ICMP Flood攻撃 SYNフラグとACKフラグが立っている SYN Flood攻撃 内部状態がSYN_RECVのフロー数で判定 Connection Flood攻撃 内部状態がESTABLISHEDのフロー数で判定 UDP Flood攻撃 UDPのフロー数で判定 ICMP Flood攻撃 ICMPのフロー数で判定 TCPコネクションが 確立している
実験環境 Polling 観測用ホスト
実験 DoS攻撃 通常のトラフィック 各ルータでDoS攻撃の検知を行う
実験結果(SYN Flood)
実験結果(SYN Flood) $ ./detector output01.csv 02:50:04: Router3: SYN Flood Router4: SYN Flood 02:50:05: 02:50:06: 02:50:07:
実験結果(Connection Flood)
実験結果(Connection Flood) $ ./detector output02.csv 20:45:59: Router3: Connection Flood Router4: Connection Flood 20:46:04: 20:46:07: 20:46:08: Router4: Invalid Data SNMPでデータが取得できなかった
実験結果(UDP Flood)
実験結果(UDP Flood) $ ./detector output03.csv 21:23:46: Router3: UDP Flood Router4: UDP Flood 21:23:50: 21:23:51: 21:23:52:
実験結果(ICMP Flood)
実験結果(ICMP Flood) $ ./detector output04.csv 21:49:15: Router3: ICMP Flood Router4: ICMP Flood 21:49:16: 21:49:17: 21:49:18:
まとめ ルータのフロー情報を用いてDoS攻撃の検知を行った 複数のルータを監視することでDoS攻撃の経路を絞り込めた
ご清聴ありがとうございました
End-to-End原理 パケットの再送やQoS などの複雑な機能は可能な限りエンドノードで行うべきだという考え インターネットの基本的な設計原理 TCPにおける再送制御などがこれにあたる
i-PathルータとSNMP i-Pathルータ SNMP End-to-End原理にもとづいて、エンドノードへの情報提供を目的とする ルータで情報が開示されれば、どのホストでも等しく情報が得られる SNMP Managerにより、ホストの集中管理を行う 外部のホストのアクセスは制限される 情報の取得に加えて、一部の設定も行える
ネットワークの多様化 ブロードバンドの普及 モバイル機器によるインターネットの利用 P2P など新たな形態のネットワーク →多様化と格差の拡大 ネットワークアプリケーションの最適化、 障害時の原因究明などで困難に直面
情報開示を求める声 ネットワーク中立性の観点から情報開示を求める声が高まっている 米連邦通信委員会(FCC) 規則の制定を目指す 「ISP は正当な理由があればサービスの規制を行えるが、その場合はネットワークの管理情報を開示しなければならない」
nf_conntrack フローを追跡して情報を保持する (Linuxの持つConnection Tracking機能) 通信中のフローについての情報 プロトコル コネクションの状態、数 送信元と宛先のIPアドレス・ポート番号 パケット数、トラフィック量
例: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 内部状態 コネクションの確立状態
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)
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
i-Pathプロジェクト 情報通信研究機構の委託を受け、産業技術総合研究所、三菱総合研究所、早稲田大学後藤滋樹研究室の共同研究 FreeBSDのカーネルをSIRENSに入れ替え実装 i-Path Project: http://i-path.goto.info.waseda.ac.jp/trac/i-Path/
DoS攻撃の説明 SYN Flood攻撃 Connection Flood攻撃 UDP Flood攻撃 ICMP Flood攻撃 TCP で接続の最初に行われるスリーウェイハンドシェイクにおいて、攻撃者が接続要求(SYNパケット)を大量に送りつける攻撃 Connection Flood攻撃 TCP による接続を大量に確立させる攻撃 UDP Flood攻撃 UDP パケットを大量に送りつける攻撃 ICMP Flood攻撃 ICMP echo request パケットを大量に送りつける攻撃
今後の課題 実運用のトラフィックに近い環境で評価を行い説得力を高める 今回使用しなかったパラメータを使用して 検知の精度を高める