そのパケットは、どこから来たのか?
トレースバック技術の種類、方式
トレースバック技術の種類や方式を4つ紹介しよう。
1つ目が「SNMP(Simple Network Management Protocol)を使った発信源の探知」だ。複雑なレイヤ2ネットワークで、「このMACアドレスが発信源であることはわかるので、実際どのスイッチの、どのスロット/ポートにつながってる端末なのか突き止めたい」ということがよくある。これは、スイッチのFDB(Forwarding Database)をたどっていけばいいのだが、手動で行うと時間がかかる。
そこで、SNMPでFDBをダンプする簡単なスクリプトをPerlなどで記述すれば、この手順を自動化できる。やり方は簡単で、dot1dTpFdbTableをダンプするだけだ。このMIB(Management Information Base)はRFC1493(Bridge MIB)(http://www.rfc-editor.org/rfc/rfc1493.txt)で定義されている標準的なものだ。
2つ目が「BGP(Boarder Gateway Protocol)やMPLS(Multi Protocol Label Switching)を使った流入口の探知」である。
これはあらかじめ、DDoS攻撃を吸い込む専用のルーターを用意しておき、攻撃が来たらBGPやMPLSで特定のあて先アドレス行きのパケットを「吸い込み口」に向かうようにすべてのBGPルーターを設定しておく、というものだ。これは多くの海外プロバイダーで標準的に使われており、RFC3882(http://www.rfc-editor.org/rfc/rfc3882.txt)に詳しい方法が書いてある。これを使うと流入口の探知が簡単にできる。ただ難点は、対象がルーターのmatch構文で記述できる程度のものに限られるということと、適用がほぼプロバイダー環境に限定されるということだ。
3つ目が「ポートミラーリングや光スプリッタを使ったトレースバック」である(図3)。ネットワーク内の主要なスイッチにポートミラーリングを設定して、ミラーポートにPCを接続すればトレースバック網の完成だ。接続したPCはパケットのハッシュ値を計算して「指紋」をため込むことになる。なにか問題が起きた場合、問題となるパケットの「指紋」を計算して、同じ「指紋」がネットワークのどこで観測されたか、順に捜していけばいい。これが「ハッシュ方式」と言われるトレースバックの基本アイデアである。
ポートミラーリングの難点は、スイッチでの設定に、製品カタログには記されていない制約がある場合があることだ。「同一スロットしか設定できない」といった事実が、あれこれ設定して格闘していくうちにわかる。メーカー側にとっては、ポートミラーリング機能は頻繁に使われない割に、ハードウエアへの実装を難しくする厄介な機能であるようだ。
ポートミラーリング機能の制約が条件が厳しく使いにくい場合は、高価ではあるが、光スプリッタを使って、光ファイバを信号分岐するという方式も考えられる。こうした構成で動かしておけば、運用中のトラブルシューティングでもとても重宝する。
ポートミラーリングや光スプリッタを使った場合、エッジのスイッチあたりまで正しく設定すれば発信源の探知も可能であるし、ボーダールーターあたりで設定すれば流入口の探知にも使える。また次回以降で説明するInterTrackを使えば送信経路の復元も可能だ。ただ用途も幅広く、精度も高い代償としてネットワーク設計の段階から考慮する必要がある。またトレースバック網のセキュリティー管理に高いスキルと細心の注意が要求されるのは言うまでもない。
4つ目が「サンプリングを使ったトレースバック」である。最近のスイッチやルーターにはほぼsFlowかNetFlowが搭載されている。もちろん、マネジメント機能のない安価なスイッチングハブにはついていないが、要となるフロアスイッチやボーダースイッチにそんな安物を使うエンジニアはいない(と思いたい)。
このsFlow、NetFlowはフロー、あるいはパケットをサンプリングするもので、設定したサンプリングレートにしたがってランダムに選んだフローあるいはパケットをサンプリングする。この機能を使うと、ポートミラーリング機能を常時オンにできない状況でも、光スプリッタを購入する予算がない状況でも、限定的ではあるがトレースバックができる。サンプリングした結果からトレースする方法は、前述の「ハッシュ方式」と同じである。
ただ、sFlowやNetFlowプロトコルのバージョンがメーカーによって違うことがあるので気をつけたい。また、サンプリングなので精度には限界がある。よってsFlowを設定したのに問題となるパケットの発信源が探知できなかった、という可能性は十分にある。
トレースバック技術はネットワーク全体で
トレースバック技術と言っても夢の新技術ではなく、既に使われている技術を組み合わせればすぐにでもできるということがわかってもらえたと思う。またセキュリティー用途だけでなく、ネットワークのトラブルシューティングにも使えるケースもある。ただ難点は、自分のネットワークだけで独自のやり方でやっていたら、複数のネットワークをまたがる「送信経路の復元」や「発信源の探知」は永遠にできないということだ。
次回以降は、複数のネットワークをまたがるトレースバックを実現する、InterTrackを中心に解説していく。