BGP FlowSpec
通信を選ぶ条件と、条件に一致したパケットへの処理をBGPで配布するための拡張である。IPアドレスに加えてプロトコルやポート番号などを組み合わせ、複数のルータで破棄や速度制限を行うために使う。
イマシルちゃんの解説
攻撃されているサーバを守るために、そのIPアドレスへの通信を全部止めると、普通に利用したい人まで接続できなくなるんだ。
BGP FlowSpecは、止めたい通信の条件と処理の指示をBGPで配布する拡張機能だよ。
宛先だけでなく通信の種類やポート番号も組み合わせて、対象を絞れるんだ。
情報を受け取ったルータが条件を確かめ、一致するパケットを止めたり量を制限したりするよ。
ただし、攻撃を見つける機能とは別だから、設定した条件で必要な通信まで止まらないかを確認することも大切なんだ。
この解説はわかりやすかったですか?
より深い解説
通信の条件と処理をセットで配る
通常のBGP経路では、主に宛先プレフィックスへ到達するための情報を交換する。FlowSpecでは、それより細かな通信の条件を表現し、ルータのフィルタリングなどへ利用する。
情報は大きく二つに分かれる。通信を選ぶ条件をFlow SpecificationのNLRIで表し、速度制限などの動作はBGP拡張コミュニティで伝える。前者はBGPが経路情報を表す部分であり、ここでは複数のヘッダーフィールドを組み合わせた条件を載せる。
| 情報 | 記述するもの | 受信側の役割 |
|---|---|---|
| 条件 | 宛先・送信元、プロトコル、ポートなどを組み合わせる | パケットが一致するか判定する |
| 処理 | 破棄、速度制限、転送先変更などを指定する | 対応する機能で処理を実施する |
経路を広告する制御処理と、実際のパケットを扱う転送処理は別である。BGPの情報を受信できても、指定した条件や処理を装置が実装できるとは限らない。
どの通信を選べるか
IPv4のFlowSpecを扱うRFC 8955では、IPプレフィックス以外にも複数の条件を定めている。主な条件と、読むときの注意点を示す。
| 条件 | 調べるもの |
|---|---|
| 送信元・宛先プレフィックス | どのアドレス範囲から、どこへ向かうかを調べる |
| IPプロトコル | TCP、UDP、ICMPなどを区別する |
| 送信元・宛先ポート | トランスポート層のどちらのポートを条件にするか区別する |
| ICMPのタイプ・コード | ICMPメッセージの種類を調べる |
| TCPフラグ | SYNやACKなどの状態を調べる |
| パケット長・DSCP・分割情報 | 大きさ、優先制御用の値、フラグメントの情報を調べる |
例えば「ある宛先プレフィックスに向かうUDPだけを対象にする」という条件なら、同じ宛先へのTCP通信はその条件に一致しない。これは識別の説明例であり、UDPを使う正規のサービスがあれば、その通信も条件に含まれる。
条件を細かくすることと、攻撃だけを正しく識別することは同じではない。暗号化されたアプリケーションの内容や利用者の意図まで、ポート番号だけで判別できるわけではない。
一致した通信への処理
| 処理 | 目的と注意点 |
|---|---|
| 速度制限 | 条件に一致する通信の流量を抑える。バイト単位かパケット単位かも確認する |
| 破棄 | 速度制限の値を0とすることで、対象の通信を転送しない |
| 転送先の変更 | 対応する別の転送先へ向ける。装置の対応機能と経路が必要になる |
| DSCPの設定 | 後段での優先制御などに利用する値を付ける |
転送先変更や速度制限を指定しても、どの装置でも同じ動作が保証されるわけではない。使う拡張、アドレスファミリ、装置の対応範囲をそろえる。IPv6のFlowSpecはRFC 8956で別途規定されている。
複数のルールに一致するパケットでは、ルールの優先関係や処理の組合せも確認する。装置へ手動で入れたACLなどとの適用順を、FlowSpecの広告順だけから決めつけない。
宛先だけを止める方式との違い
宛先ベースのRTBHは、攻撃対象のアドレスへ向かう通信全体を止める。FlowSpecでは条件を増やせるため、影響範囲を狭められる場合がある。
| 観点 | 宛先ベースRTBH | BGP FlowSpec |
|---|---|---|
| 対象の選び方 | 主に宛先プレフィックスで選ぶ | 複数のヘッダーフィールドを組み合わせる |
| 指示の中心 | 廃棄する経路を配布する | 条件と対応する処理を配布する |
| 正規の通信 | 遮断対象への通信全体が影響を受ける | 条件に一致した正規の通信は影響を受ける |
| 検討する制約 | 廃棄経路の範囲と配布先を確認する | 条件の精度、装置の機能、ルール数や処理容量も確認する |
自組織の入口で制限する構成でも、その上流の回線が先に飽和すれば問題は残る。遮断する位置と、守りたい設備の位置関係を確認する必要がある。
誤った指示を受け入れない
FlowSpecは受信した情報によって通信の扱いを変更する。無関係な相手のルールを受け入れれば、正規の通信を止められるおそれがある。誰がどの宛先について指示できるかを決め、受信フィルタと広告内容の検証を行う。
RFC 8955には、外部から受け取るルールをユニキャスト経路と照合する検証手順がある。BGPセッションが成立したことだけで、全てのルールを信頼してよいわけではない。ルール数の上限と有効期間、配布先も管理する。
誤遮断を防ぐため、適用後には対象のパケット数、回線の流量、正規サービスへの疎通を確認する。攻撃が終わった後のルール撤回までを管理し、古い条件が残り続けることを防ぐ。
観測する機能との違い
NetFlowは通信フローを観測して情報を集める仕組みである。FlowSpecは、その観測結果などを基に決めた処理を配る仕組みであり、両者は同じものではない。
全体の動きは観測、対象の判断、ルール配布、ルータでの適用、結果の確認へと進む。CDNへのDDoS対策としての判断は「CDNによる配信とDDoS対策」で扱う。
参考資料
- RFC 8955でIPv4の条件、処理、検証手順を確認できる。
- RFC 8956でIPv6へ適用するときの条件を確認できる。
- IPAの令和6年度問題資料のネットワークスペシャリスト午後Ⅰ問1では、RTBHとの違いと正常な通信への影響が論点になる。
午後での問われ方
宛先だけを止める場合と、ポートやプロトコルを追加して絞る場合を比較する。配布する条件、実施する処理、巻き込まれる正常な通信を分け、FlowSpecが攻撃の検知機能そのものではないことも説明する。
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午後Ⅰ