Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

IDP 署名言語の機能強化

IDP 署名言語の構成要素を使用すると、IDP はより効率的な署名を生成し、誤検知を減らすことができます。これは、ルールベースの構文、コンテキスト、一致条件を使用して攻撃パターンを定義するシグネチャ言語を使用することで実現できます。

シグネチャ言語の構成要素の理解

Junos OS の IDP シグネチャ言語コンストラクトは、IDP シグネチャ言語内で利用可能なコンストラクトです。これらの構造は、ネットワークセキュリティ対策の検出および防止機能を強化するように設計されています。この言語は、さまざまなタイプの悪意のあるアクティビティや異常なトラフィックパターンを検出できるシグネチャを定義するための一連のツールと機能を提供します。ネットワーク管理者は、効果的なセキュリティシグネチャを作成できます。構成には、トラフィックパターンの定義、アラートの条件の指定、コンテキスト情報を組み込むためのオプションが含まれており、検出の精度と関連性が向上します。

IDP エンジン コードでは、次のコンストラクトがサポートされています。

  • Depth—特定のパターンを検索するパケットの深さを指定します。深度値は相対値ではありません。 たとえば、深さを 100 と指定できます
  • Offset—パケット内のパターンの検索を開始する場所を指定できます。オフセット値は相対値ではありません。 たとえば、offset の値を 100 に指定できます
  • Within—パターン一致間に最大Nバイトがあることを確認します。パターン一致は、常に前の一致を基準にしています。 たとえば、N の値が 10 の場合 例のように、m01 一致の後、10 バイト以内に m02 一致が発生し、攻撃通知がトリガーされます。
  • Distance—IDP エンジンが前のパターン一致を基準にして指定されたパターンを検索する場所を指定できます。これは常に前の一致を基準にしており、距離の値は負の値にすることができます。 たとえば、N の値が 10 の場合、m01 が一致すると、m02 は m01 の一致の末尾の 10 バイト後に出現します
  • Ipopts- リストされているすべてのipoptsには、セキュリティパッケージで定義された対応する異常があり、デバイスまたはIDPエンジンで設定することで検出できます。

    • rr - ルートの記録

    • eol - リストの終わり

    • nop - 操作なし

    • ts - タイムスタンプ

    • sec - IP セキュリティ

    • esec - IP 拡張セキュリティ

    • lsrr - ルーズソースルーティング

    • ssrr - ストリクト ソース ルーティング

    • satid - ストリーム識別子

  • Byte extractByte extract キーワードは、長さエンコードされたプロトコルに対するシグネチャの書き込みに役立ち、パケットペイロードをバイト単位で読み取り、後で使用するために変数として保存します。バイト抽出は、相対的および非相対的の両方にすることができます。チェーン攻撃ごとに任意の数のバイト抽出を使用できます例えば:

    表 1 は、 Byte extract 構成のフィールドをリストしています。

    表 1: バイト抽出出力フィールド

    フィールドの説明

    align

    バイトアライメントを指定します。

    bitmask

    AND演算のビットマスク(1〜4バイト)を16進形式で指定します。

    bytes

    パケットから抽出するバイト数を指定します(1-10)。

    endianness

    IDPエンジンによって読み取られたバイトを処理するエンディアンを指定します。

    multiplier

    読み取ったバイトに対して乗算する値を指定します。

    offset

    IDPエンジンが処理を開始するペイロードのオフセットバイト数を指定します。

    relative

    最後のパターンマッチを基準にしたオフセットを使用するかどうかを指定します。

    string

    文字列データを解析するデータ型を指定します。

    var-name

    他のルール・オプションで参照する変数の名前を指定します。

  • Byte test-Byte test キーワードを使用すると、運用値でバイト フィールドをテストできます。バイト テストは、相対テストと非相対テストの両方を行うことができます。サポートされている演算子は > , < , =, &, ^ ,<=,>= で、抽出される最大バイト数は 4. です。例えば:

    表 2 は、 Byte test 構成のフィールドをリストしています。

    表 2: バイト テスト出力フィールド

    フィールドの説明

    bitmask

    AND演算のビットマスク(1〜4バイト)を16進形式で指定します。

    bytes

    パケットから抽出するバイト数を指定します(1-10)。

    endianness

    IDPエンジンによって読み取られたバイトを処理するエンディアンを指定します。

    negate

    演算子が真でないかどうかを確認します。

    offset

    オフセット変数名またはオフセット値を記載します

    operator

    抽出された値に対して実行する操作を指定します。

    relative

    最後のパターンマッチを基準にしたオフセットを使用するかどうかを指定します。

    rvalue

    変換された値は 右辺値でテストされます。.

    string

    文字列データを解析するデータ型を指定します。

  • Byte jumpバイト ジャンプ キーワードは、ペイロードの特定の部分をスキップし、非常に特定の場所で検出を実行するために、長さエンコード プロトコル用に記述されたシグネチャに使用されます。バイト ジャンプ値は、相対値と非相対値の両方にすることができます例えば:

    表 3 は、 Byte jump コンストラクトのフィールドの一覧です。

    表 3: バイト ジャンプ出力フィールド

    フィールドの説明

    align

    IDP エンジンによって読み取られたバイトを処理するエンディアンを指定します。

    bitmask

    AND演算のビットマスク(1〜4バイト)を16進形式で指定します。

    bytes

    パケットから抽出するバイト数を指定します(1-10)。

    endianness

    IDP エンジンによって読み取られたバイトを処理するエンディアンを指定します。

    from-beginning

    ペイロードの先頭からのジャンプを有効にします。

    from-end

    ペイロードの末尾からのジャンプを有効にします。

    multiplier

    読み取ったバイトに対して乗算する値を指定します。

    offset

    使用するオフセット変数名またはオフセット値を指定します。

    post-offset

    前後にスキップするバイト数を指定します (-65535..65535)。

    relative

    最後のパターンマッチを基準にしたオフセットを使用するかどうかを指定します。

    string

    文字列データを解析するデータ型を指定します。

  • Byte math- Byte math キーワードを使用すると、抽出された値、指定した値、または既存の変数に対して算術演算を実行できます。バイト数学値は、結果を新しい結果の変数に格納します。 1) '+' | '-' | '*' | '/' | '<<' | '>>' などの操作がサポートされています。これは、相対的および非相対的の両方になります例えば:

    表 4 は、 Byte math 構成のフィールドの一覧です。

    表 4: バイト演算出力フィールド

    フィールドの説明

    bitmask

    AND演算のビットマスク(1〜4バイト)を16進形式で指定します。

    bytes

    パケットから抽出するバイト数を指定します(1-10)。

    endianness

    読み取られたバイトを処理するエンディアンを指定します。

    offset

    処理を開始するペイロードのバイト数を指定します(0..65535)。

    operator

    抽出された値に対して実行する操作を指定します。

    relative

    最後のパターンマッチを基準にしたオフセットを使用するかどうかを指定します。

    result

    結果を格納する変数名を指定します。

    rvalue

    特定の算術演算に使用する値を指定します。

    string

    文字列データを解析するデータ型を指定します。

  • Is-data-at— is-data-atキーワードを使用すると、ペイロードに指定された場所に必要なデータが含まれていることを確認できます。例えば:

    表 5 は、 Is-data-at コンストラクトのフィールドをリストしています。

    表 5: Isdataat 出力フィールド

    フィールドの説明

    negate

    is-data-at テストの結果を否定します。

    offset

    オフセット変数名またはオフセット値を指定します。

    relative

    最後のパターンマッチを基準にしたオフセットを使用するかどうかを指定します

  • Detection Filter— 検出フィルターは、攻撃が一致するレートを定義します。送信元または宛先のカウントは、シグネチャで指定されたオプション値に従って維持されます。検出フィルターは <SLE_Constructs> 外であり、攻撃のメンバーごとではなく、攻撃ごとに指定されます。同じ送信元IPから10秒の間隔で5回攻撃が検出された場合、攻撃としてフラグが立てられます。 次に例を示します。