NSX IDS/IPS エンジンにカスタム シグネチャ バンドルをアップロードします。

カスタム シグネチャをアップロードする際の考慮事項:

  • NSX IDS/IPS のカスタム シグネチャを展開する場合は、NSX と互換性のあるサポートされているキーワードのみが含まれるようにします。以下のサポートされているキーワード リストを参照してください。

  • サポートされているアドレス グループとポートのみがシグネチャで使用されていることを確認します。

    address-groups:
    HOME_NET: "any"    EXTERNAL_NET: "any"    HOME_NETWORK: "[10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,fd00::/8]"    HTTP_SERVERS: "$HOME_NET"    SMTP_SERVERS: "$HOME_NET"    SQL_SERVERS: "$HOME_NET"    DNS_SERVERS: "$HOME_NET"    TELNET_SERVERS: "$HOME_NET"    AIM_SERVERS: "$EXTERNAL_NET"    DC_SERVERS: "$HOME_NET"    DNP3_SERVER: "$HOME_NET"    DNP3_CLIENT: "$HOME_NET"    MODBUS_CLIENT: "$HOME_NET"    MODBUS_SERVER: "$HOME_NET"    ENIP_CLIENT: "$HOME_NET"    ENIP_SERVER: "$HOME_NET"
    
    port-groups:
    HTTP_PORTS: "any"    SHELLCODE_PORTS: "!80"    ORACLE_PORTS: 1521    SSH_PORTS: 22    DNP3_PORTS: 20000    MODBUS_PORTS: 502    FILE_DATA_PORTS: "[$HTTP_PORTS,110,143]"    FTP_PORTS: 21    VXLAN_PORTS: "4789"
  • アップロードするカスタム シグネチャ バンドルの形式が正しいことを確認します。.zip 拡張子が必要です(sample_rules.zip など)。NSX はカスタム シグネチャの依存関係を追跡しないため、依存するシグネチャが公開プロセスに含まれていることを確認してください。

  • 有効なカスタム シグネチャを公開し、その後、無効なカスタム シグネチャのみを含む新しいバンドルで上書きした場合、NSX では新しいバンドルを公開できません。NSX には、「シグネチャの上書きは、VALID/WARNING シグネチャに対してのみ許可されます」というエラー メッセージが表示されます。また、古いバンドルのシグネチャを使用するように以前に更新された IDPS プロファイルは、新しいバンドルにそれらのシグネチャがないため無効になります。新しいバンドルに古いバンドルの一部でもあるカスタム シグネチャが含まれている場合は、既存のシグネチャとして認識され、既存のプロファイルに対して有効なシグネチャのままになります。

  • すべてのカスタム シグネチャがサポートされているキーワードを使用していることを確認します。次に、サポートされているキーワードのリストを示します。

    sid

    ルール ID を設定します。

    priority

    優先順位の高いルールが最初に調査されます。

    rev

    ルールのバージョンを設定します。

    classtype

    ルールとアラートの分類に関する情報。

    app-layer-protocol

    検出された app-layer プロトコルで一致します。

    tcp.ack

    特定の TCP 確認番号を確認します。

    tcp.seq

    特定の TCP シーケンス番号を確認します。

    tcp.window

    特定の TCP ウィンドウ サイズを確認します。

    ipopts

    特定の IP オプションが設定されているかどうかを確認します。

    tcp.flags

    TCP ヘッダーに設定されているフラグを検出します。

    fragbits

    断片化と予約済みビットが IP ヘッダーに設定されているかどうかを確認します。

    fragoffset

    IP 断片化オフセット フィールドの特定の 10 進数の値で一致します。

    ttl

    特定の IP アドレスの存続時間の値を確認します。

    tos

    IP ヘッダー TOS フィールドの特定の 10 進数の値で一致します。

    itype

    特定の ICMP タイプで一致します。

    icode

    特定の ICMP id-value で一致します。

    icmp_id

    ICMP ID を確認します。

    icmp_seq

    ICMP シーケンス番号を確認します。

    dsize

    パケット ペイロードのサイズで一致します。

    flow

    フローの方向と状態で一致します。

    threshold

    ルールのアラート頻度を制御します。

    metadata

    ログの記録に使用されます。

    reference

    ルールに関する情報が見つかる場所に誘導します。

    tag

    タグを定義します。

    msg

    ルールと可能性のあるアラートに関する情報。

    content

    ペイロード コンテンツで一致します。

    uricontent

    要求 URI バッファで一致するレガシー キーワード。

    pcre

    正規表現で一致します。

    depth

    ペイロードの先頭からのチェックするバイト数を指定します。

    startswith

    パターンはバッファの先頭にある必要があります(「depth:<pattern len>」と同じ)。

    endswith

    前のコンテンツがバッファの最後で完全に一致していることを確認します。

    distance

    このコンテンツ キーワードとその前のコンテンツとの関係を示します。

    within

    このコンテンツの一致が前のコンテンツ キーワードの一致から一定の距離内にある必要があることを示します。

    abs_offset

    ストリーム内のどのバイトからチェックして一致を見つけるかを指定します。

    offset

    ペイロード内のどのバイトからチェックして一致を見つけるかを指定します。

    replace

    IPS モードでのみ使用されます。

    nocase

    大文字と小文字を区別しないようにコンテンツの一致を変更します。

    fast_pattern

    マルチパターン マッチャーで先行するコンテンツを強制的に使用します。

    rawbytes

    それを使用するシグネチャとの互換性を持つために含まれています。

    byte_test

    <num of bytes> を抽出し、特定の <offset> の <test value> の値に対して <operator> で選択された操作を実行します。

    byte_jump

    <offset> から <num of bytes> を選択し、検出ポインタをその位置に移動する機能を許可します。

    sameip

    送信元の IP アドレスが宛先の IP アドレスと同じであるかどうかを確認します。

    geoip

    ネットワーク トラフィックの送信元、宛先、または送信元と宛先の IP アドレスで一致し、IP アドレスが属する国を認識します。

    ip_proto

    packet-header の IP プロトコルで一致します。

    ftpbounce

    FTP バウンス攻撃を検出します。

    isdataat

    ペイロードの特定の部分にデータが残っているかどうかを確認します。

    id

    特定の IP アドレスの ID 値で一致します。

    rpc

    RPC プロシージャ番号と RPC バージョンを一致させます。

    flowvar

    フロー変数を設定します。

    flowint

    フローごとの整数で操作します。

    pktvar

    パケット変数を定義します。

    noalert

    ルールによってアラートは生成されません。

    flowbits

    フロー フラグで操作します。

    hostbits

    ホスト フラグで操作します。

    ipv4-csum

    IPv4 チェックサム エラーを確認します。

    tcpv4-csum

    TCPv4 チェックサム エラーを確認します。

    tcpv6-csum

    TCPv6 チェックサム エラーを確認します。

    udpv4-csum

    UDPv4 チェックサム エラーを確認します。

    udpv6-csum

    UDPv6 チェックサム エラーを確認します。

    icmpv4-csum

    ICMPv4 チェックサム エラーを確認します。

    icmpv6-csum

    ICMPv6 チェックサム エラーを確認します。

    stream_size

    ストリームのバイト数で一致します。

    detection_filter

    しきい値に達した後のすべての一致に対してアラートします。

    dataset

    スティッキー バッファをデータセットと照合します(試験的)。

    datarep

    データセットで操作します(試験的)。

    decode-event

    個々のパケットのデコード中に検出された値と条件。

    gid

    シグネチャの異なるグループに別の ID 値を指定します。

    nfq_set_mark

    iptables ルールで NFQUEUE を使用して、パケットを Suricata に送信します。

    bsize

    バッファの長さで一致します。

    tls.version

    TLS/SSL バージョンで一致します。

    tls.subject

    TLS/SSL 証明書のサブジェクト フィールドに一致します。

    tls.issuerdn

    TLS/SSL 証明書の IssuerDN フィールドに一致します。

    tls_cert_notbefore

    TLS 証明書の notBefore フィールドに一致します。

    tls_cert_notafter

    TLS 証明書の notAfter フィールドに一致します。

    tls_cert_expired

    期限切れの TLS 証明書に一致します。

    tls_cert_valid

    有効な TLS 証明書に一致します。

    tls.fingerprint

    TLS/SSL 証明書の SHA1 フィンガープリントに一致します。

    tls_store

    TLS/SSL 証明書をディスクに保存します。

    http_cookie

    HTTP cookie-buffer でのみ一致するコンテンツ修飾子。

    http.cookie

    HTTP Cookie/Set-Cookie バッファで一致するスティッキー バッファ。

    http_method

    HTTP method-buffer でのみ一致するコンテンツ修飾子。

    http.method

    特に HTTP メソッド バッファでのみ一致するスティッキー バッファ。

    http.protocol

    http_protocol スティッキー バッファを定義します。

    http.start

    http_start スティッキー バッファを定義します。

    urilen

    HTTP URI の長さで一致します。

    http_client_body

    HTTP request-body でのみ一致するコンテンツ修飾子。

    http.request_body

    HTTP 要求本文バッファで一致するスティッキー バッファ。

    http_server_body

    HTTP response-body で一致するコンテンツ修飾子。

    http.response_body

    HTTP 応答本文バッファで一致するスティッキー バッファ。

    http_header

    HTTP header-buffer でのみ一致するコンテンツ修飾子。

    http.header

    正規化された HTTP header-buffer で一致するスティッキー バッファ。

    http.header_names

    http_header_names スティッキー バッファを定義します。

    http.accept

    http accept ヘッダーの http.accept スティッキー バッファを定義します。

    http.accept_lang

    http accept language ヘッダーの http.accept_lang スティッキー バッファを定義します。

    http.accept_enc

    http accept encoding ヘッダーの http.accept_enc スティッキー バッファを定義します。

    http.connection

    http connection ヘッダーの http.connection スティッキー バッファを定義します。

    http.content_len

    http content length ヘッダーの http.content_len スティッキー バッファを定義します。

    http.content_type

    http content type ヘッダーの http.content_type スティッキー バッファを定義します。

    http.location

    http location ヘッダーの http.location スティッキー バッファを定義します。

    http.server

    http server ヘッダーの http.server スティッキー バッファを定義します。

    http.referer

    http referer ヘッダーの http.referer スティッキー バッファを定義します。

    http_raw_header

    Raw HTTP ヘッダー バッファで一致するコンテンツ修飾子。

    http.header.raw

    Raw HTTP ヘッダー バッファで一致するスティッキー バッファ。

    http_uri

    特に HTTP uri-buffer でのみ一致するコンテンツ修飾子。

    http.uri

    特に正規化された HTTP URI バッファでのみ一致するスティッキー バッファ。

    http.uri.raw

    特に Raw HTTP URI バッファでのみ一致するスティッキー バッファ。

    http_raw_uri

    Raw HTTP URI で一致するコンテンツ修飾子。

    http_stat_msg

    HTTP stat-msg-buffer で一致するコンテンツ修飾子。

    http.stat_msg

    HTTP 応答ステータス メッセージで一致するスティッキー バッファ。

    http_stat_code

    HTTP stat-code-buffer でのみ一致するコンテンツ修飾子。

    http.stat_code

    HTTP stat-code-buffer でのみ一致するスティッキー バッファ。

    http_user_agent

    HTTP User-Agent ヘッダーでのみ一致するコンテンツ修飾子。

    http.user_agent

    特に HTTP ユーザー エージェント バッファでのみ一致するスティッキー バッファ。

    http_host

    HTTP ホスト名で一致するコンテンツ修飾子。

    http.host

    HTTP ホスト バッファで一致するスティッキー バッファ。

    http_raw_host

    HTTP ホスト ヘッダーまたは HTTP URI の Raw ホスト名で一致するコンテンツ修飾子。

    http.host.raw

    HTTP ホスト ヘッダーまたは HTTP URI の Raw ホスト名で一致するスティッキー バッファ。

    http.request_line

    HTTP 要求行で一致するスティッキー バッファ。

    http.response_line

    HTTP 応答行でのみ一致するコンテンツ修飾子。

    nfs_procedure

    NFS プロシージャに一致するスティッキー バッファ。

    nfs.version

    NFS バージョンに一致するスティッキー バッファ。

    ssh.proto

    SSH プロトコルに一致するスティッキー バッファ。

    ssh.protoversion

    SSH プロトコル バージョンに一致するスティッキー バッファ。

    ssh.software

    SSH ソフトウェアに一致するスティッキー バッファ。

    ssh.softwareversion

    SSH ソフトウェア文字列に一致するスティッキー バッファ。

    ssl_version

    SSL/TLS レコードのバージョンに一致するスティッキー バッファ。

    ssl_state

    SSL 接続の状態に一致するスティッキー バッファ。

    byte_extract

    特定の <offset> で <num of bytes> を抽出し、<var_name> に保存します。

    file.data

    ファイル データでコンテンツ キーワードを一致させます。

    pkt_data

    検出ポインタをパケット ペイロードの先頭にリセットします。

    app-layer-event

    App Layer Parsers およびプロトコル検出エンジンによって生成されたイベントで一致します。

    dcerpc.iface

    DCERPC ヘッダーのインターフェイス UUID の値で一致します。

    dcerpc.opnum

    DCERPC ヘッダーのインターフェイス内の 1 つまたは複数の操作番号または操作番号の範囲で一致します。

    dcerpc.stub_data

    指定された DCERPC パケット内のスタブ データで一致します。これは「スティッキー バッファ」です。

    smb.named_pipe

    ツリー接続の SMB 名前付きパイプで一致するスティッキー バッファ。

    smb.share

    ツリー接続の SMB 共有名で一致するスティッキー バッファ。

    asn1

    データを構造化および記述するための標準的な表記です。

    engine-event

    Suricata 侵入検知システム内の検出イベントの記録。

    stream-event

    TCP ストリーム エンジン イベントで一致するルール。

    filename

    ファイル名で一致します。

    file.name

    ファイル名で一致するスティッキー バッファ。

    fileext

    ファイル名の拡張子で一致します。

    filestore

    ルールが一致した場合は、ファイルをディスクに保存します。

    filemagic

    libmagic がファイルに関して返す情報で一致します。

    file.magic

    ファイル マジックで一致するスティッキー バッファ。

    filemd5

    ファイルの MD5 を MD5 チェックサムのリストと照合します。

    filesha1

    ファイルの SHA-1 を SHA-1 チェックサムのリストと照合します。

    filesha256

    ファイルの SHA-256 を SHA-256 チェックサムのリストと照合します。

    filesize

    転送中のファイルのサイズで一致します。

    l3_proto

    シグネチャを IPv4、IPv6、またはその両方のどれで一致させる必要があるかどうかを指定します。

    lua

    lua スクリプトを使用して照合します。

    iprep

    ホストの IP レピュテーション情報で一致します。

    dns.query

    DNS query-buffer に一致するスティッキー バッファ。

    dns.opcode

    DNS ヘッダーの opCode フラグに一致します。

    tls.sni

    特に TLS SNI バッファでのみ一致するコンテンツ修飾子。

    tls.certs

    TLS 証明書スティッキー バッファに一致するコンテンツ修飾子。

    tls.cert_issuer

    特に TLS 証明書の発行者バッファでのみ一致するコンテンツ修飾子。

    tls.cert_subject

    特に TLS 証明書のサブジェクト バッファでのみ一致するコンテンツ修飾子。

    tls.cert_serial

    TLS 証明書のシリアル バッファに一致するコンテンツ修飾子。

    tls.cert_fingerprint

    TLS 証明書のフィンガープリント バッファで一致します。

    ja3.hash

    JA3 ハッシュ バッファに一致するコンテンツ修飾子。

    ja3.string

    JA3 文字列バッファに一致するコンテンツ修飾子。

    ja3s.hash

    JA3S ハッシュ スティッキー バッファに一致するコンテンツ修飾子。

    ja3s.string

    JA3S 文字列スティッキー バッファに一致するコンテンツ修飾子。

    modbus

    Modbus 要求のさまざまなプロパティで一致します。

    cip_service

    CIP サービスで一致します。

    enip_command

    EtherNet/IP コマンドを検出するためのルール。

    dnp3.data

    再構築されたアプリケーション バッファで一致するように、次のコンテンツ オプションを作成します。

    dnp3_func

    DNP3 要求および応答で検出されたアプリケーション機能コードで一致します。

    dnp3_ind

    応答アプリケーション ヘッダーの DNP3 内部インジケータ フラグで一致します。

    dnp3_obj

    DNP3 アプリケーション データ オブジェクトで一致します。

    xbits

    ビットで操作します。

    base64_decode

    base64 でエンコードされたデータをデコードします。

    base64_data

    base64 でデコードされたデータに一致するコンテンツ。

    krb5_err_code

    Kerberos 5 エラー コードに一致します。

    krb5_msg_type

    Kerberos 5 メッセージ タイプに一致します。

    krb5.cname

    Kerberos 5 クライアント名に一致するスティッキー バッファ。

    krb5.sname

    Kerberos 5 サーバ名で一致するスティッキー バッファ。

    sip.method

    SIP メソッド バッファで一致するスティッキー バッファ。

    sip.uri

    SIP URI で一致するスティッキー バッファ。

    sip.protocol

    SIP プロトコルで一致するスティッキー バッファ。

    sip.stat_code

    SIP ステータス コードで一致するスティッキー バッファ。

    sip.stat_msg

    SIP ステータス メッセージで一致するスティッキー バッファ。

    sip.request_line

    SIP 要求行で一致するスティッキー バッファ。

    sip.response_line

    SIP 応答行で一致するスティッキー バッファ。

    template2

    テンプレート。

    ipv4.hdr

    IPv4 ヘッダーで一致するスティッキー バッファ。

    ipv6.hdr

    IPv6 ヘッダーで一致するスティッキー バッファ。

    tcp.hdr

    TCP ヘッダーで一致するスティッキー バッファ。

    udp.hdr

    UDP ヘッダーで一致するスティッキー バッファ。

    tcp.mss

    TCP MSS オプション フィールドで一致するスティッキー バッファ。

    ftpdata_command

    FTP データ チャネルをトリガする FTP コマンドに一致します。

    target

    出力モジュールに対して攻撃の対象となる側を示します。

    snmp.version

    SNMP バージョンに一致します。

    snmp.community

    SNMP コミュニティで一致する SNMP コンテンツ修飾子。

    snmp.pdu_type

    SNMP PDU タイプに一致します。

    bypass

    sig の一致が完了したら、バイパス コールバックを呼び出します。

    prefilter

    条件を強制的に事前フィルタとして使用します。

    compress_whitespace

    検査の前に、連続する空白文字を 1 つに圧縮するようにバッファを変更します。

    strip_whitespace

    検査の前に、空白を取り除くようにバッファを変更します。

    to_md5

    バッファの md5 ハッシュに変換します。

    to_sha1

    バッファの sha1 ハッシュに変換します。

    to_sha256

    バッファの sha256 ハッシュに変換します。

    dotprefix

    dotprefix を抽出するようにバッファを変更します。

    nopcap

    アラート時にフローから pcap コンテンツを切り取らないようにします。

手順

  1. NSX Manager から、[セキュリティ] > [IDS/IPS と Malware Prevention]([ポリシー管理] セクションの下)に移動します。
  2. [IDS/IPS と Malware Prevention] ページで、[シグネチャの管理] タブに移動し、[カスタム シグネチャ] を選択します。
  3. [追加] をクリックし、[ファイルから読み込み] オプションを選択します。
  4. 以前にシグネチャ バンドルをアップロードしたことがある場合は、すべてのシグネチャがアップロードしようとしている新しいバンドルに置き換えられることに注意してください。したがって、既存のバンドルをコンピュータにエクスポートし、新しいシグネチャで更新してから、変更したバンドルをアップロードします。
  5. カスタム シグネチャ バンドルを初めてアップロードする場合は、[新しいシグネチャ セットの定義] ウィンドウでシグネチャの名前を入力し、コンピュータ上の場所を参照してシグネチャ バンドルを選択します。[検証] をクリックします。
  6. シグネチャを公開する前に、有効で明示的に選択された「警告」シグネチャのみがトランスポート ノードおよび NSX Edge に公開されることに注意してください。
    注:

    「無効」シグネチャと選択解除された「警告」シグネチャはトランスポート ノードおよび NSX Edge に公開されません。

  7. [公開] をクリックします。まだ公開されていない新しいシグネチャ バンドルを元に戻し、既存のシグネチャを保持できます。未公開のシグネチャは、NSX Manager ユーザー インターフェイスから元に戻すことができます。