この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
この章では、Cisco Traffic Anomaly Detector Module(Detector モジュール)のフィルタの設定方法について説明します。
• 概要
ゾーン フィルタは、Detector が特定のトラフィック フローを処理する方法を定義します。ユーザは、フィルタを設定して、カスタマイズされたトラフィック誘導メカニズムや DDoS 攻撃検出メカニズムをさまざまに設計することができます。
Detector モジュールには、次のタイプのフィルタがあります。
• バイパス フィルタ :バイパス フィルタは、特定のトラフィック フローが Detector の保護メカニズムによって処理されないようにします。
信頼されたトラフィックが Detector モジュールの検出メカニズムを通らないように誘導し、Detector モジュールによって分析されないようにすることができます。
詳細については、「バイパス フィルタの設定」を参照してください。
• フレックスコンテンツ フィルタ :フレックスコンテンツ フィルタは、特定のトラフィック フローをカウントします。フレックスコンテンツ フィルタは、バークリー パケット フィルタとパターン フィルタを組み合せたもので、IP ヘッダーと TCP ヘッダーのフィールドに基づいたフィルタリングやペイロード コンテンツに基づいたフィルタリングなどの非常に柔軟なフィルタリング機能、および複雑なブール式をユーザに提供します。詳細については、「フレックスコンテンツ フィルタの設定」を参照してください。
• 動的フィルタ :動的フィルタは、特定のトラフィック フローを関連する
Detector の検出モジュールに誘導します。Detector は、トラフィック フローの分析結果として動的フィルタを作成します。この一連のフィルタは、ゾーンのトラフィックおよび特定の DDoS 攻撃に合せて継続的に調整されます。動的フィルタは有効期間が限定されており、攻撃が終了すると消去されます。詳細については、「動的フィルタの設定」を参照してください。
表 6-1 に、Detector モジュールのフィルタ システムを示します。
Detector は、トラフィック フローを、ゾーンのトラフィックを分析する分析検出モジュールに誘導します。バイパス フィルタを使用すると、特定のフローが Detector の検出メカニズムをバイパスするように設定できます。
トラフィック フローの統計分析を実行するため、Detector には特定のタイプのトラフィックを処理する方法についての定義が含まれています。これらの定義をポリシーといいます。ポリシーは、トラフィック フローを持続的に測定し、特定のトラフィック フローが悪意のあるものまたは異常であると判断すると、そのフローに対してアクションを実行します。このアクションは、フローがポリシーのしきい値を超過すると発生します。Detector が実行するアクションでは、イベントが syslog に記録されるか、新しいフィルタ(動的フィルタ)が作成されます。動的フィルタは、Detector のリストにあるリモート Guard をリモートでアクティブにできます。
フィルタが処理するトラフィック フローを設定する必要があります。 表 6-1 に、フィルタのフローの引数を示します。
詳細については、「バイパス フィルタの設定」と「動的フィルタの設定」の各項を参照してください。
表 6-2 に、フィルタの show コマンドのフィールドを示します。
詳細については、「バイパス フィルタの表示」と「動的フィルタの表示」の各項を参照してください。
|
|
---|---|
|
|
|
|
|
|
|
|
|
フィルタが断片化されたトラフィックを処理するかどうかを指定します。 • yes :フィルタは断片化されたトラフィックを処理します。 |
送信元 IP アドレス、送信元アドレスのマスク、プロトコル番号、および宛先ポートは、特定のものでなくてもかまいません。アスタリスク(*)は、フィルタがすべてのフィールド値に対して動作するか、フィルタに複数の値が一致したことを示します。
フレックスコンテンツ フィルタを使用すると、パケット ペイロードにあるパケット ヘッダーまたはパターンのフィールドに基づいて、ゾーンのトラフィックをフィルタリングできます。着信トラフィックに現れているパターンに基づいて攻撃を識別できます。そのようなパターンは、一定のパターンを持つ既知のワームまたはフラッド攻撃を識別できます。ただし、フレックスコンテンツ フィルタはリソースを大量に消費します。フレックスコンテンツ フィルタはパフォーマンスに影響を及ぼす可能性があるため、十分に注意して使用することをお勧めします。フレックスコンテンツ フィルタを使用して特定の攻撃を検出しようとする場合、その攻撃が動的フィルタで識別可能なときは(特定のポートへの TCP トラフィックなど)、動的フィルタを使用してトラフィックをフィルタリングすることをお勧めします。
フレックスコンテンツ フィルタは、目的のパケット フローをカウントし、トラフィックの特定の悪意ある送信元を明らかにするために使用します。
フレックスコンテンツ フィルタは、強力な選別フィルタリング機能を持つ、バークリー パケット フィルタとパターン フィルタを組み合せたものです。
フレックスコンテンツ フィルタは、行番号の昇順でアクティブになります。したがって、新しいフレックスコンテンツ フィルタを追加する場合には、リストの適切な位置に配置することが重要です。
フレックスコンテンツ フィルタを設定するには、次の手順を実行します。
ステップ 1 フレックスコンテンツ フィルタのリストを表示して、リスト内で新しいフィルタを追加する位置を確認します。詳細については、「フレックスコンテンツ フィルタの表示」を参照してください。
ステップ 2 現在の行番号が連続したものである場合は、新しいフレックスコンテンツ フィルタを挿入できるようにフレックスコンテンツ フィルタの番号を順に増加させます。次のコマンドを入力します。
]]
表 6-3 に、 flex-filter renumber コマンドの引数を示します。
|
|
---|---|
|
(オプション)フレックスコンテンツ フィルタ リストの新しい開始番号を示す 1 ~ 9999 の整数。デフォルトは 10 です。 |
|
(オプション)フレックスコンテンツ フィルタの各行番号の増分を指定する 1 ~ 999 の整数。デフォルトは 10 です。 |
ステップ 3 (オプション)進行中の攻撃または以前に記録した攻撃のパターン式をフィルタリングする場合、Detector モジュールをアクティブにし、 show packet-dump signatures コマンドを使用して攻撃のシグニチャを生成できます。詳細については、「パケットダンプ キャプチャ ファイルからの攻撃シグニチャの生成」を参照してください。
ステップ 4 新しいフレックスコンテンツ フィルタを追加します。次のコマンドを入力します。
表 6-4 に、 flex-filter コマンドの引数とキーワードを示します。
|
|
---|---|
|
1 ~ 9999 の固有な番号。行番号はフィルタの ID で、これによって複数のフレックスコンテンツ フィルタの優先順位が定義されます。Detector モジュールは、行番号の昇順でフィルタを操作します。 |
フィルタの状態をイネーブルに設定します。フィルタはトラフィックに関連付けられ、一致が検出されるとアクションを実行します。 |
|
|
|
|
特定のプロトコルのフローを処理します。すべてのプロトコルを示すには、アスタリスク( * )を使用します。0 ~ 255 の整数を入力します。 |
|
特定の宛先ポートに向かうトラフィックを処理します。0 ~ 65535 の整数を入力します。特定のポート番号を定義するには、特定のプロトコル番号を定義する必要があります。 すべての宛先ポートを示すには、アスタリスク( * )を使用します。プロトコル番号を 6(TCP)または 17(UDP)に設定する場合のみ、アスタリスクを使用できます。 |
|
パケット ペイロードの先頭から、パターン マッチングを開始する位置までのオフセット(バイト単位)。デフォルトは 0(ペイロードの先頭)です。このオフセットは、 pattern フィールドに適用されます。0 ~ 1800 の整数を入力します。 show packet-dump signatures コマンド出力からパターンをコピーする場合は、コマンド出力の Start Offset フィールドからこの引数をコピーします。 |
パケット ペイロードの先頭から、パターン マッチングを終了する位置までのオフセットを指定します(バイト単位)。デフォルトはパケット長(ペイロードの末尾)です。このオフセットは、 pattern フィールドに適用されます。0 ~ 1800 の整数を入力します。 show packet-dump signatures コマンド出力からパターンをコピーする場合は、コマンド出力の End Offset フィールドからこの引数をコピーします。 |
|
パケットと照合する式を指定します。式はバークリー パケット フィルタの形式です。詳細と設定例については、「TCPDump 式の構文について」を参照してください。 |
|
パケット ペイロードと照合する正規表現のデータ パターンを指定します。詳細については、「パターン式の構文について」を参照してください。 Detector モジュールをアクティブにし、 show packet-dump signatures コマンドを使用してシグニチャを生成できます。「パケットダンプ キャプチャ ファイルからの攻撃シグニチャの生成」を参照してください。 |
フレックスコンテンツ フィルタは、次の順序でフィルタリング基準を適用します。
• フレックスコンテンツ フィルタは最初に、 protocol および port に基づいてパケットをフィルタリングする。
• 次に、 tcpdump-expression を適用する。
• フレックスコンテンツ フィルタは、残りのパケットに対して pattern-expression を使用してパターン マッチングを実行する。
フィルタの状態はいつでも変更できます。詳細については、「フレックスコンテンツ フィルタの状態の変更」を参照してください。
user@DETECTOR-conf-zone-scannet#
flex-content-filter enabled count * * expression “ip[6:2] & 0x1fff=0” pattern TCPDump 式は、パケットを照合する式を指定します。式はバークリー パケット フィルタの形式です。
(注) TCPDump 式を使用すると、宛先ポートおよびプロトコルに基づいてトラフィックをフィルタリングできます。ただし、パフォーマンスへの影響を考慮し、これらの基準でトラフィックをフィルタリングする場合は、フレックスコンテンツ フィルタで protocol 引数と port 引数を使用することをお勧めします。
表 6-5 に、フレックスコンテンツ フィルタの式のパラメータの説明を示します。
|
|
---|---|
特定の式に適合するトラフィック。詳細については、 表 6-6 を参照してください。 |
表 6-6 に、フレックスコンテンツ フィルタの式の規則の説明を示します。
• プリミティブとオペレータを小カッコで囲んだグループ(小カッコはシェルの特殊文字であるため、エスケープする必要があります)。
否定は、最も高い優先度を持ちます。代替と連結の優先順位は同じで、左から右に関連付けられます。連結には、並置ではなく、明示的な and トークンが必要です。キーワードなしで識別子を指定した場合は、最後に指定されたキーワードが使用されます。
バークリー パケット フィルタの設定オプションの詳細については、
http://www.freesoft.org/CIE/Topics/56.htm を参照してください。
次の 例は、断片化されていないデータグラムと断片化されたデータグラムのフラグメント 0 のみをカウントする方法を示しています。このフィルタは、TCP と UDP のインデックス操作に暗黙的に適用されます。たとえば、tcp[0] は常に TCP ヘッダーの最初のバイトを意味し、中間のフラグメントの最初のバイトを意味することはありません。
user@DETECTOR-conf-zone-scannet#
flex-content-filter enabled count * * expression ip[6:2]&0x1fff=0 pattern ““
次の例は、すべての TCP RST パケットをカウントする方法を示しています。
user@DETECTOR-conf-zone-scannet# user@DETECTOR-conf-zone-scannet#
flex-content-filter enabled count * * expression tcp[13]&4!=0 pattern ““
次の例は、エコー要求およびエコー応答(ping)ではないすべての ICMP パケットをカウントする方法を示しています。
user@DETECTOR-conf-zone-scannet#
flex-content-filter enabled count * * expression “icmp [0]!=8 and icmp[0] != 0” pattern ““
次の例は、ポート 80 を宛先とし、ポート 1000 を送信元としないすべての TCP パケットをカウントする方法を示しています。
user@DETECTOR-conf-zone-scannet#
flex-content-filter enabled count * * expression “tcp and dst port 80 and not src port 1000” pattern ““
パターン(正規表現)は、一連の文字を含んだ文字列を記述したものです。パターンは、一連の文字列をその要素を実際にリストせずに表現します。パターンは、一般文字と特殊文字で構成されます。一般文字には、特殊文字とは見なされない印刷可能な ASCII 文字が含まれます。特殊文字は、どのようなマッチングを実行するのかを示します。フレックスコンテンツ フィルタは、このパターンをパケットの内容(パケットのペイロード)と照合します。たとえば、 version 3.1 、 version 4.0 、および version 5.2 という 3 つの文字列は、 version .*\..* というパターンで表現できます。
特殊文字は、特殊な意味を持つ文字であり、Detector モジュールが式に対してどのようなマッチングを実行するかを指定します。 表 6-7 に、使用できる特殊文字を示します。
デフォルトでは、パターンでは大文字と小文字が区別されます。パターン式で大文字と小文字が区別されないようにするには、 ignore-case キーワードを使用します。「フレックスコンテンツ フィルタの追加」を参照してください。
次の例は、パケットのペイロードに特定のパターンが含まれているパケットをドロップする方法を示しています。この例のパターンは、Slammer ワームから抽出されたものです。プロトコル、ポート、および tcpdump 式は特定のものでなくてもかまいません。
user@DETECTOR-conf-zone-scannet#
flex-content-filter enabled drop * * expression “ “ pattern \x89\xE5Qh\.dllhel32hkernQhounthickChGetTf\xB9llフレックスコンテンツ フィルタを表示するには、ゾーン設定モードで次のコマンドを入力します。
表 6-8 に、 show flex-content-filters コマンド出力のフィールドを示します。
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
|
パケット ペイロードの先頭から、パターン マッチングを開始する位置までのオフセットを指定します(バイト単位)。このオフセットは、 pattern フィールドに適用されます。 |
|
パケット ペイロードの先頭から、パターン マッチングを終了する位置までのオフセットを指定します(バイト単位)。このオフセットは、 pattern フィールドに適用されます。 |
|
フィルタが一致するパターンで大文字と小文字が区別されるかどうかを示します(この引数は、 pattern フィールドに適用されます)。 |
|
パケットと照合する式をバークリー パケット フィルタ形式で指定します。TCPDump 式の構文については、「TCPDump 式の構文について」を参照してください。 |
|
パケット ペイロードと照合する正規表現のデータ パターンを指定します。パターン フィルタの構文については、「パターン式の構文について」を参照してください。 |
|
フレックスコンテンツ フィルタを削除できます。また、フレックスコンテンツ フィルタをディセーブルにすることで、Detector モジュールがフィルタの式に基づいてパケットをフィルタリングしないようにすることもできます。詳細については、「フレックスコンテンツ フィルタの状態の変更」を参照してください。
フレックスコンテンツ フィルタを削除するには、次の手順を実行します。
ステップ 1 フレックスコンテンツ フィルタのリストを表示し、削除するフレックスコンテンツ フィルタの行番号を確認します。詳細については、「フレックスコンテンツ フィルタの表示」を参照してください。
ステップ 2 フレックスコンテンツ フィルタを削除します。次のコマンドを入力します。
row-num 引数には、フレックスコンテンツ フィルタの行番号を指定します。すべてのフレックスコンテンツ フィルタを削除するには、アスタリスク( * )を入力します。
フレックスコンテンツ フィルタの状態を変更できます。フレックスコンテンツ フィルタをディセーブルにすることで、Detector モジュールがフィルタの式に基づいてパケットをフィルタリングしないようにできます。フィルタは Detector モジュールのフレックスコンテンツ フィルタ リストに残ります。この方法で、Detector モジュールが特定の種類のトラフィックをフィルタリングしないようにできます。その後、特定のトラフィックが再びフィルタリングされるように Detector モジュールを設定できます。このとき、フィルタを設定し直す必要はありません。また、フレックスコンテンツ フィルタを削除することもできます。詳細については、「フレックスコンテンツ フィルタの削除」を参照してください。
フレックスコンテンツ フィルタの状態を変更するには、次の手順を実行します。
ステップ 1 フレックスコンテンツ フィルタのリストを表示し、状態を変更するフレックスコンテンツ フィルタの行番号を確認します。詳細については、「フレックスコンテンツ フィルタの表示」を参照してください。
ステップ 2 フレックスコンテンツ フィルタの状態を変更します。次のコマンドを入力します。
row-num 引数には、フレックスコンテンツ フィルタの行番号を指定します。
user@DETECTOR-conf-zone-scannet# flex-content-filters 5 disabled
バイパス フィルタは、Detector モジュールが特定のトラフィック フローを処理しないようにするために使用します。バイパス フィルタを設定すると、信頼されたトラフィックが Detector モジュールの検出メカニズムを通らないように誘導して、そのトラフィックを直接送信することができます。
バイパス フィルタを追加するには、関係するゾーンの設定モードで次のコマンドを入力します。
bypass-filter row-num src-ip [ ip-mask ] protocol dest-port [ fragments-type ]
表 6-9 に、 bypass-filter コマンドの引数を示します。
|
|
---|---|
1 ~ 9999 の固有な番号を割り当てます。行番号はフィルタの ID で、これによって複数のバイパス フィルタの優先順位が定義されます。Detector モジュールは、行番号の昇順でフィルタを操作します。 |
|
|
フィルタリングを実行する対象のフロー。 src-ip、ip-mask、protocol、dest-port 、 および fragments-type の詳細については、 表 6-1 を参照してください。 |
(注) fragments-type と dest-port を両方指定することはできません。fragments-type を設定する場合は、dest-port に * を入力してください。
バイパス フィルタを表示するには、関連するゾーン設定モードで次のコマンドを入力します。
表 6-10 に、 show bypass-filters コマンド出力のフィールドを示します。
|
|
---|---|
|
|
|
フィルタリングを実行する対象のフローを示します。 |
|
ステップ 1 バイパス フィルタのリストを表示し、削除するバイパス フィルタの行番号を確認します。詳細については、前の項、「バイパス フィルタの表示」を参照してください。
ステップ 2 バイパス フィルタを削除します。次のコマンドを入力します。
row-num 引数には、バイパス フィルタの行番号を指定します。すべてのバイパス フィルタを削除するには、アスタリスク( * )を入力します。
Detector は、トラフィック フローの分析結果として動的フィルタを作成します。このフィルタは、特定のトラフィック フローを関連する検出モジュールに誘導します。Detector モジュールは、この一連のフィルタを、ゾーンのトラフィックおよび特定の DDoS 攻撃に合せて継続的に調整します。動的フィルタは有効期間が限定されており、攻撃が終了すると消去されます。
Detector は、トラフィックの異常を検出する中で、ゾーンを宛先とするトラフィックを継続的に分析します。フローがポリシーのしきい値を超過すると、異常が発見されます。異常なトラフィック パターンを検出すると、攻撃の処理方法を定義する動的フィルタの作成を開始します。
動的フィルタは、Detector モジュールの syslog に通知レコードを作成するか、リモートの Guard をアクティブにしてゾーンを保護します。
ユーザは、動的フィルタにアクセスし、独自のニーズに合うように設定することができます。
Detector モジュールによって作成された動的フィルタを表示するには、 show dynamic-filters コマンドを使用します。このコマンドには、次のオプションが用意されています。
• show dynamic-filters [details]:すべての動的フィルタのリストを表示します。
• show dynamic-filters dynamic-filter-id [ details ]:特定の動的フィルタを表示します。
• show dynamic-filters sort {action | exp-time | id} :すべての動的フィルタのソートされたリストを表示します。
(注) 保留動的フィルタを表示するには、show recommendations コマンドを使用します。詳細については、第 8 章「インタラクティブ検出モード」を参照してください。
表 6-11 に、 show dynamic-filters コマンドの引数を示します。
(注) Detector モジュールは、最大 1,000 個の動的フィルタを表示します。1000 を越える動的フィルタがアクティブになっている場合は、ログ ファイルまたはゾーンのレポートで、動的フィルタに関するすべてのリストを確認してください。
表 6-12 に、 show dynamic-filters コマンド出力のフィールドを示します。
|
|
---|---|
|
|
|
|
|
|
|
フィルタリングを実行する対象のフローを示します。 |
|
表 6-13 に、 show dynamic-filters details コマンド出力の追加フィールドを示します。
|
|
---|---|
|
攻撃フローの特性を示します。フロー フィールドの詳細については、 表 6-2 を参照してください。 |
|
|
|
|
|
特定の動的フィルタを作成したポリシーを示します。詳細については、 第 7 章「ポリシー テンプレートとポリシーの設定」 を参照してください。 |
動的フィルタを削除することができます。ただし、削除が有効である期間は限られています。ゾーンの検出がイネーブルである限り、Detector モジュールが新しい動的フィルタを設定し続けるためです。
ステップ 1 動的フィルタのリストを表示し、削除する動的フィルタの ID を確認します。詳細については、前の項、「動的フィルタの表示」を参照してください。
ステップ 2 関連する動的フィルタを削除します。次のコマンドを入力します。
dynamic-filter-id 引数には、動的フィルタの ID を指定します。すべての動的フィルタを削除するには、アスタリスク( * )を入力します。
必要のない動的フィルタが再作成されないようにするには、次のアクションのいずれかを実行します。
• 動的フィルタを作成するポリシーを非アクティブにします(詳細については、「ポリシーの状態の変更」を参照)。不要な動的フィルタを作成したポリシーを発見するには、「動的フィルタの表示」を参照してください。
• 目的のトラフィック フロー用のバイパス フィルタを設定します(詳細については、「バイパス フィルタの設定」を参照)。
• 不要な動的フィルタを作成したポリシーのしきい値を大きくします(詳細については、「ポリシーのしきい値の設定」を参照)。