將自訂特徵碼服務包上傳至 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 會顯示以下錯誤訊息:「僅允許覆寫有效/警告特徵碼。」此外,任何先前已更新為使用舊服務包中特徵碼的 IDPS 設定檔將變為無效,因為新服務包中不再包含這些特徵碼。如果新服務包中也包含與舊服務包相同的自訂特徵碼,這些特徵碼將被視為現有特徵碼,並且這些特徵碼仍是現有設定檔中的有效特徵碼。

  • 確保所有自訂特徵碼都使用受支援的關鍵字。下面是受支援的關鍵字清單:

    sid

    設定規則識別碼。

    priority

    首先會檢查優先順序較高的規則。

    rev

    設定規則的版本。

    classtype

    規則和警示分類的相關資訊。

    app-layer-protocol

    比對偵測到的應用程式層通訊協定。

    tcp.ack

    檢查特定的 TCP 確認號碼。

    tcp.seq

    檢查特定的 TCP 序號。

    tcp.window

    檢查特定的 TCP 視窗大小。

    ipopts

    檢查是否設定了特定的 IP 選項。

    tcp.flags

    偵測在 TCP 標頭中設定的旗標。

    fragbits

    檢查是否在 IP 標頭中設定了分段和保留位元。

    fragoffset

    比對 IP 分段偏移欄位的特定十進位值。

    ttl

    檢查特定的 IP 存留時間值。

    tos

    比對 IP 標頭 TOS 欄位的特定十進位值。

    itype

    比對特定的 ICMP 類型。

    icode

    比對特定的 ICMP 識別碼值。

    icmp_id

    檢查 ICMP 識別碼。

    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

    擷取 <位元組數>,並在特定 <偏移量> 上與 <測試值> 中的值執行 <運算子> 所選的作業。

    byte_jump

    允許從 <偏移量> 中選取 <位元組數>,並將偵測指標移至該位置。

    sameip

    檢查來源 IP 位址是否與目的地 IP 位址相同。

    geoip

    比對網路流量的來源、目的地或來源與目的地 IP 位址,並確認 IP 位址所屬的國家/地區。

    ip_proto

    比對封包標頭中的 IP 通訊協定。

    ftpbounce

    偵測 FTP 彈回攻擊。

    isdataat

    檢查裝載的特定部分中是否仍有資料。

    id

    比對特定的 IP 識別碼值。

    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

    為不同的特徵碼群組指定不同的識別碼值。

    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 緩衝區的內容修飾詞。

    http.cookie

    用於比對 HTTP Cookie/Set-Cookie 緩衝區的黏性緩衝區。

    http_method

    僅用於比對 HTTP 方法緩衝區的內容修飾詞。

    http.method

    專門且僅用於比對 HTTP 方法緩衝區的黏性緩衝區。

    http.protocol

    定義 http_protocol 黏性緩衝區。

    http.start

    定義 http_start 黏性緩衝區。

    urilen

    比對 HTTP URI 的長度。

    http_client_body

    僅用於比對 HTTP 要求本文的內容修飾詞。

    http.request_body

    用於比對 HTTP 要求本文緩衝區的黏性緩衝區。

    http_server_body

    用於比對 HTTP 回應本文的內容修飾詞。

    http.response_body

    用於比對 HTTP 回應本文緩衝區的黏性緩衝區。

    http_header

    僅用於比對 HTTP 標頭緩衝區的內容修飾詞。

    http.header

    用於比對標準化 HTTP 標頭緩衝區的黏性緩衝區。

    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

    用於比對原始 HTTP 標頭緩衝區的內容修飾詞。

    http.header.raw

    用於比對原始 HTTP 標頭緩衝區的黏性緩衝區。

    http_uri

    專門且僅用於比對 HTTP URI 緩衝區的內容修飾詞。

    http.uri

    專門且僅用於比對標準化 HTTP URI 緩衝區的黏性緩衝區。

    http.uri.raw

    專門且僅用於比對原始 HTTP URI 緩衝區的黏性緩衝區。

    http_raw_uri

    用於比對原始 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 使用者代理程式標頭的內容修飾詞。

    http.user_agent

    專門且僅用於比對 HTTP 使用者代理程式衝區的黏性緩衝區。

    http_host

    用於比對 HTTP 主機名稱的內容修飾詞。

    http.host

    用於比對 HTTP 主機緩衝區的黏性緩衝區。

    http_raw_host

    用於比對 HTTP 主機標頭或來自 HTTP URI 的原始主機名稱的內容修飾詞。

    http.host.raw

    用於比對 HTTP 主機標頭或來自 HTTP URI 的原始主機名稱的黏性緩衝區。

    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

    擷取特定 <偏移量> 上的 <位元組數>,並將其儲存至 <變數名稱> 中。

    file.data

    使內容關鍵字與檔案資料相符。

    pkt_data

    將偵測指標重設為封包裝載的開頭。

    app-layer-event

    比對由應用程式層剖析器和通訊協定偵測引擎產生的事件。

    dcerpc.iface

    比對 DCERPC 標頭中的介面 UUID 值。

    dcerpc.opnum

    比對 DCERPC 標頭的介面中的一或多個作業編號和/或作業編號範圍。

    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 查詢緩衝區的黏性緩衝區。

    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

    用於偵測乙太網路/IP 命令的規則。

    dnp3.data

    使以下內容選項與重新組合的應用程式緩衝區相符。

    dnp3_func

    比對 DNP3 要求和回應中找到的應用程式功能代碼。

    dnp3_ind

    比對 response application 標頭中的 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

    修改緩衝區以在檢查之前將連續的空白字元壓縮為一個空白字元。

    strip_whitespace

    修改緩衝區以在檢查之前移除空白字元。

    to_md5

    轉換為緩衝區的 md5 雜湊值。

    to_sha1

    轉換為緩衝區的 sha1 雜湊值。

    to_sha256

    轉換為緩衝區的 sha256 雜湊值。

    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 UI 還原未發佈的特徵碼。