i-Pathルータのフロー情報を用いたDoS攻撃検知法 情報処理学会創立 50周年記念(第 72回)全国大会 セッション名:情報爆発時代における分散処理と運用技術 講演番号:2ZP-4 会場:ZP会場 3月9日(火)15:30~17:30 i-Pathルータのフロー情報を用いたDoS攻撃検知法 野上晋平 下田晃弘 後藤滋樹 早稲田大学 基幹理工学研究科 情報理工学専攻
研究背景 ネットワークの可視化 従来のインターネット エンドノードからネットワーク内部の情報が 直接得られない ネットワークの多様化 エンドノードからネットワーク内部の情報が 直接得られない ネットワークの多様化 情報開示を求める声の高まり ネットワークの可視化
ネットワークの多様化 ネットワークの利用形態が多様化 ネットワークアプリケーションの最適化、 障害時の原因究明などで困難に直面 ブロードバンド モバイル P2P ネットワークアプリケーションの最適化、 障害時の原因究明などで困難に直面
情報開示を求める声 ネットワーク中立性の観点から情報開示を求める声が高まっている 米連邦通信委員会(FCC) 情報開示の重要性を指摘 「ISP は正当な理由があればサービスの規制を行えるが、その場合はネットワークの管理情報を開示しなければならない」
研究概要 ルータを通過するフロー情報を用いて DoS攻撃を検知 複数のルータを使用してDoS攻撃の 送信元を識別する 本研究ではこれまで注目されてない ルータが持つ情報を活用する ルータを通過するフロー情報を用いて DoS攻撃を検知 複数のルータを使用してDoS攻撃の 送信元を識別する ※フロー:宛先と送信元のIPアドレス、ポート番号が 同一のパケット
i-Pathルータ 小林克志(産業技術総合研究所)が開発 ネットワーク内部の可視化が目的 取得できる情報の例 FreeBSDのカーネルをSIRENSに入れ替え実装 ネットワーク内部の可視化が目的 エンドノードが通信経路の情報を取得できる 取得できる情報の例 ネットワーク帯域、輻輳状態、遅延、パケットロス
可視化の例 32% 1G 17% 500M 68% 10G 43% 3G 34% 2G 33% 1G 59% 2G 2% 100M 48% 可用帯域 [%] ネットワーク帯域 [bps] 32% 1G 17% 500M 68% 10G 43% 3G 34% 2G 33% 1G 59% 2G 2% 100M 48% 35% 700M 41%
SHIMヘッダ IPヘッダとTCP/UDPヘッダの間にルータの持つ情報を書き込むSHIMヘッダを挿入 イーサネットヘッダ IP ヘッダ TCP/ UDP データ イーサネット トレイラ イーサネットヘッダ IP ヘッダ TCP/ UDP データ イーサネット トレイラ SHIMヘッダ IPヘッダとTCP/UDPヘッダの間にSHIMヘッダを挿入
DoS攻撃 サービス不能(Denial of Service)攻撃 DoS攻撃の種類 大量のパケットを送りつけ、サーバの資源やネットワーク帯域を占有してサービスを妨害する 攻撃の送信元の識別が困難 DoS攻撃の種類 SYN Flood(TCP), Connection Flood(TCP), ・・・ UDP Flood, ICMP Flood, ・・・
従来のDoS攻撃の検知 ? ? DoS攻撃の経路情報が得られない
実証実験 nf_conntrackでフロー情報を取得 MIB(SNMP)に情報を書き込む i-Pathルータが実現する機能を確認する i-Pathルータの機能をLinuxで実装 nf_conntrackでフロー情報を取得 MIB(SNMP)に情報を書き込む ルータを観測して得られたフロー情報をもとにDoS攻撃を検知(検知プログラム) 定常状態から外れた場合に検知 複数のルータからDoS攻撃の経路を識別 ルータでの処理
実証実験 DoS攻撃 通常のトラフィック 各ルータで同時にDoS攻撃の検知を行う
SYN Flood攻撃 SYN Flood攻撃とは 検知法 TCP 接続のスリーウェイハンドシェイクにおいて、接続要求(SYNパケット)を大量に送りつける攻撃 送信元アドレスの偽装が容易 検知法 内部状態がSYN_RECVのフロー数で判定 SYNフラグとACKフラグが立っている
実験結果(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攻撃とは 検知法 TCP による接続を大量に確立させる攻撃 内部状態がESTABLISHEDのフロー数で判定 TCPコネクションが 確立している
実験結果(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
UDP Flood攻撃 UDP Flood攻撃とは 検知法 UDP パケットを大量に送りつける攻撃 送信元アドレスの偽装が容易
実験結果(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攻撃とは 検知法 ICMP パケットを大量に送りつける攻撃 送信元アドレスの偽装が容易
実験結果(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攻撃の検知を行った
ご清聴ありがとうございました
i-Pathプロジェクト 情報通信研究機構の委託を受け、産業技術総合研究所、早稲田大学後藤滋樹研究室の共同研究 FreeBSDのカーネルをSIRENSに 入れ替え実装 i-Path Project: http://i-path.goto.info.waseda.ac.jp/trac/i-Path/
実験環境 Polling 観測用ホスト
i-PathルータとSNMP i-Pathルータ SNMP End-to-End原理にもとづいて、エンドノードへの情報提供を目的とする ルータで情報が開示されれば、どのホストでも等しく情報が得られる SNMP Managerにより、ホストの集中管理を行う 外部のホストのアクセスは制限される 情報の取得に加えて、一部の設定も行える
End-to-End原理 パケットの再送やQoS などの複雑な機能は可能な限りエンドノードで行うべきだという考え インターネットの基本的な設計原理 TCPにおける再送制御などがこれにあたる
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
今後の課題 実運用のトラフィックに近い環境で評価を行い説得力を高める 今回使用しなかったパラメータを使用して 検知の精度を高める
DoS攻撃の種類 SYN Flood攻撃 Connection Flood攻撃 UDP Flood攻撃 ICMP Flood攻撃 TCP で接続の最初に行われるスリーウェイハンドシェイクにおいて、攻撃者が接続要求(SYNパケット)を大量に送りつける攻撃 Connection Flood攻撃 TCP による接続を大量に確立させる攻撃 UDP Flood攻撃 UDP パケットを大量に送りつける攻撃 ICMP Flood攻撃 ICMP echo request パケットを大量に送りつける攻撃 送信元アドレスの偽装が可能
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コネクションが 確立している