將自訂特徵碼服務包上傳至 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 內容。