nDPI #### 安装 ************ 在使用nDPI之前,必须编译支持nDPI的Suricata,例如: .. code-block:: console ./configure --enable-ndpi --with-ndpi=/home/user/src/nDPI 然后确保在 ``suricata.yaml`` 中加载了插件: .. code-block:: yaml plugins: - /usr/lib/suricata/ndpi.so 在编译支持nDPI的Suricata后,默认配置文件中应该已经包含此配置。 有关nDPI的更多信息,请参阅 https://www.ntop.org/products/deep-packet-inspection/ndpi/。 关键词 ******** 加载nDPI插件后,可以使用以下关键词: - ``ndpi-protocol`` - ``ndpi-risk`` ``ndpi-protocol`` ================= 匹配nDPI检测到的第7层协议。 注意,使用 ``ndpi-protocol`` 的规则应通过 ``requires`` 检查 ``ndpi-protocol`` 关键词是否存在,例如:: requires: keyword ndpi-protocol 语法:: ndpi-protocol:[!]; 其中 `` 是nDPI检测到的应用协议之一。请查看 `ndpiReader -H` 获取完整列表。可以指定传输协议、应用协议或两者(用点分隔)。 示例:: ndpi-protocol:HTTP; ndpi-protocol:!TLS; ndpi-protocol:TLS.YouTube; 以下是一个匹配端口53上的TLS流量的规则示例: .. container:: example-rule alert tcp any any -> any 53 (msg:"TLS traffic over DNS standard port"; :example-rule-emphasis:`requires:keyword ndpi-protocol; ndpi-protocol:TLS;` sid:1;) ``ndpi-risk`` ============= 匹配nDPI检测到的流风险。风险是nDPI在数据包解析过程中检测到的潜在问题,包括: - 非标准端口上的已知协议 - 二进制应用程序传输 - 自签名证书 - 可疑的DGA域名 - 恶意软件主机连接 - 以及其他许多风险... 此外,使用 ``ndpi-risk`` 关键词的规则应通过 ``requires`` 检查该关键词是否存在,例如:: requires: keyword ndpi-risk 语法:: ndpi-risk:[!]; 其中风险是nDPI支持的一个或多个(逗号分隔)风险代码(例如 NDPI_BINARY_APPLICATION_TRANSFER)。请查看 ``ndpiReader -H`` 获取完整列表。 示例:: ndpi-risk:NDPI_BINARY_APPLICATION_TRANSFER; ndpi-risk:NDPI_TLS_OBSOLETE_VERSION,NDPI_TLS_WEAK_CIPHER; 以下是一个匹配传输二进制应用程序的HTTP流量的规则示例: .. container:: example-rule alert tcp any any -> any any (msg:"Binary application transfer over HTTP"; :example-rule-emphasis:`requires:keyword ndpi-protocol, keyword ndpi-risk; ndpi-protocol:HTTP; ndpi-risk:NDPI_BINARY_APPLICATION_TRANSFER;` sid:1;)