简介

关于 Snort 3 检测

Snort 入侵防御系统 (IPS) 实时分析网络流量以提供深度数据包检查。Snort 可以检测并阻止流量异常以及网络探测和攻击。Snort 3 是 Snort 的最新版本。有关详细信息,请参阅https://snort.org/snort3

Snort 是为高性能和可扩展性而设计的。Snort 包含一组称为 检查器的可配置插件。Snort 检查器可以检测和分析特定类型网络协议或探测的流量,规范化消息以增强数据包分析,并检查消息中嵌入的特定类型的文件。您可以在网络分析策略 (NAP) 中配置 Snort 检查器,并在入侵策略中启用入侵规则。

访问控制策略

访问控制策略在多个阶段处理流量。下图展示策略部署的示例。本文档中介绍的元素是入侵规则中使用的 Snort 3 检查器和规则选项(均以蓝色突出显示)。

访问控制策略

通过网络分析策略,您可以配置 Snort 3 检查器,以确定流量协议并提取和规范化数据。可以配置多个网络分析策略,每个策略都使用唯一配置的一组 Snort 3 检查器对数据进行规范化。检查器在检测到数据流中的异常情况时可以发出警报,但其主要用途是为入侵规则准备数据。入侵策略应用其配置的入侵规则来检查数据中是否存在逃逸、入侵或攻击迹象。

在网络分析策略中,您可以通过设置处理协议的检查器特定的配置参数使用给定协议自定义该数据的检测行为。例如,要配置 POP 数据的检测行为,请为 POP 检查器设置配置参数。

也可以通过使用某些协议特定的规则选项编写自定义入侵规则来自定义某些协议的入侵策略。

如果使用多个网络分析策略和多个入侵策略建立复杂配置,系统会首先选择网络分析策略来处理数据。在网络分析策略应用相应的检查器来执行其分析后,数据不会自动传递到该协议的相应入侵策略。访问控制策略执行其他测试,以确定哪个入侵策略可获取数据。因此,在配置访问控制、网络分析和入侵策略时,请确保使用正确的网络分析和入侵策略对分析数据。有关详细信息,请参阅《Cisco Secure Firewall Management Center Snort 3 配置指南》

入侵规则更新

思科定期以轻量级安全包 (LSP) 的形式发出入侵规则更新。这些更新可能会更改 Snort 3 检查器的配置参数和入侵规则选项的默认值。

检查器配置

您可以通过 Cisco Secure Firewall Management Center Web 界面启用和禁用 Snort 检查器,以及查看和更改其配置。 Cisco Secure Firewall Management Center Web 界面使用 JSON 格式描述检查器配置。有关详细信息,请参阅《Cisco Secure Firewall Management Center Snort 3 配置指南》

要使用检查器,您必须通过 管理中心 Web 界面启用它。此外,对于服务检查器,您必须在 绑定程序 检查器中为服务检查器配置一个条目。有关详细信息,请参阅绑定程序检查器概述

Snort 3 检查器参考反映了 Snort 3 检查器参数和内置入侵规则选项的默认设置。您的系统可能使用不同的默认值,具体取决于 LSP 更新或系统随附的基本网络访问策略。要最准确地了解网络访问策略的检查器设置,请在 管理中心 Web 界面中查看设置。

Snort 3 检查器简介

Snort 3 检查器是分析和规范化数据包的插件(类似于 Snort 2 预处理器)。Snort 3 中的检查器和设置列表不直接对应于 Snort 2 中的预处理器和设置列表。

Snort 3 检查器

对于每个 Snort 3 检查器,本文档介绍了以下内容:

  • 有关检查器的用途和功能的一般信息。

  • 检查器的类型:

    • 服务:检查器分析互联网服务协议(HTTP、FTP、TCP 或 UDP)中使用的协议数据单元 (PDU)。示例包括: http_inspectftp_server

    • 被动:仅提供配置(ftp_clientftp_server)或促进其他处理(绑定程序)的检查器。

    • 数据包:在其他检查器进行处理之前对原始数据包执行处理的检查器。示例包括: 规范器

    • 探测:检查器在所有检测完成后对所有数据包执行处理。示例包括: port_scan

    • 流:执行流跟踪、互联网协议分片重组和 TCP 重组的检查器。示例包括: stream_tcpstream_ip

    • 基本模块:一个可配置的内置 Snort 3 组件,提供支持多种流量检测过程的功能。示例包括: rate_filter

  • 用法:

    • 检查器:在网络分析策略 (NAP) 中配置这些检查器。示例包括: imapssh

    • 全局、情景:配置这些检查器一次。示例包括: port_scan、rate_filter

  • 实例类型:

    • 单一实例:为网络访问策略中的单个实例配置这些检查器。有关详细信息,请参阅单例检查器

    • 多例:为网络访问策略 (NAP) 中的多个实例配置这些检查器。一个 NAP 可以包含多个以网络、端口或 VLAN 来区分的实例。每个实例都是唯一的,用于处理特定的流量分段。有关详细信息,请参阅多例检查器

  • 需要其他检查器:许多检查器依赖其他检查器才能完全处理数据流。当检查器要求配置其他检查器时,文档会指定这些额外的检查器。

  • 配置检查器的最佳实践:这些是针对每个检查器的最佳性能建议。

  • 检查器的配置参数:您可以在 管理中心 Web 界面中的 Policies>Access Control>Network Analysis Policy>Policy Name>Snort 3 Version>Inspector Name设置配置参数。



    在修改检查器参数之前,建议您了解检查器与已启用的入侵规则之间的交互。


  • 规则:Snort 3 检查器使用规则生成事件。内置规则可能包含类类型、引用和其他元数据。

  • 入侵规则选项:通过定义由检查器处理的数据类型的入侵规则选项来自定义入侵规则。有关管理自定义入侵规则的信息,请参阅 《Cisco Secure Firewall Management Center Snort 3 配置指南》



    编写自定义入侵规则是一项高级活动,必须谨慎执行。您可能需要使用本文档中未介绍的检查器和规则选项。使用本文档中介绍的某些检查器和入侵规则选项需要对 Snort 开源文档中记录的检查器和规则选项进行特定设置。某些规则选项会对 Snort 快速模式匹配器或检测光标的位置产生影响。有关详细信息,请参阅 https://www.snort.org/snort3处提供的 Snort 3 开源文档。


单例检查器

网络访问策略 (NAP) 只能使用单例检查器的一个实例。

  • 单一检查器不像多例检查器一样支持每个 NAP 多个实例。

  • 单一检查器可能不适用于某些特定流。

例如:

{
   "normalizer":{
      "enabled":true,
      "type":"singleton",
      "data":{
         "ip4":{
            "df":true
         }
      }
   }
}

多例检查器

网络访问策略可以使用一个或多个多例检查器实例,您可以根据需要进行配置。多实例检查器支持根据特定条件(例如网络、端口和 VLAN)配置设置。一组受支持的设置包含实例。多示例提供一个默认实例,您还可以根据特定条件添加其他实例。如果流量符合自定义实例中的条件,则应用自定义实例中的设置。否则,将应用默认实例中的设置。默认实例的名称与检查器的名称相同。

您还可以创建新实例,但请确保为您创建的每个新实例包含 绑定程序 条件,以避免错误。

例如:

  • 修改了默认实例的多例检查器:

    {
       "http_inspect":{
          "instances":[
             {
                "name":"http_inspect",
                "data":{
                   "response_depth":5000
                }
             }
          ]
       }
    }
  • 修改默认实例和默认 绑定程序 的多例检查器:

    {
       "http_inspect":{
          "instances":[
             {
                "name":"http_inspect",
                "data":{
                   "response_depth":5000
                }
             }
          ]
       },
       "binder":{
          "rules":[
             {
                "use":{
                   "type":"http_inspect"
                },
                "when":{
                   "role":"any",
                   "ports":"8080",
                   "proto":"tcp",
                   "service":"http"
                }
             }
          ]
       }
    }
  • 多例检查器,其中添加了自定义实例和自定义 绑定程序:

    {
       "http_inspect":{
          "instances":[
             {
                "name":"http_inspect1",
                "data":{
                   "response_depth":5000
                }
             }
          ]
       },
       "binder":{
          "rules":[
             {
                "use":{
                   "type":"http_inspect",
                   "name":"http_inspect1"
                },
                "when":{
                   "role":"any",
                   "ports":"8080",
                   "proto":"tcp",
                   "service":"http"
                }
             }
          ]
       }
    }

Snort 3 中的协议和服务标识

绑定程序 检查器执行影响所有 Snort 服务检查器的独特功能。 绑定程序 与 Snort 向导 模块一起确定哪个流或服务检查器可以检查网络流量。绑定程序 检查器中的配置包括端口、主机、CIDR 以及定义相同网络分析策略中的另一个检查器何时需要检查流量的服务。

向导 支持与端口无关的服务配置,可以检测恶意软件命令和控制信道。



您无法通过 Cisco Secure Firewall Management Center Web 界面配置该 向导


当流量到达防火墙设备时, 绑定程序 检查器会搜索入侵策略并选择要应用的适当网络访问策略 (NAP)。在 NAP 中, 绑定程序 会确定用于数据流的相应流和服务检查器。稍后,如果与流关联的服务发生更改,NAP 将使用 绑定程序 选择不同的服务检查器。

绑定程序 检查器配置包括描述流量特征的 when 参数和 use 参数,这些参数用于指定要应用于匹配这些特征的流量的检查器。在确定哪个检查器应用于数据流时, 绑定 检查器会按从上到下的顺序将流量与其 when 子句进行比较,并应用与匹配流量的第一个 when 子句对应的 use 子句。

如果没有与数据流匹配的特定 绑定 程序条件, 向导 会分析数据流以确定服务。该 向导 调用绑定 程序 ,为该服务选择适当的检查器。如果无法识别任何服务, 绑定程序 通常会将流检查器绑定到流,并且系统会对数据包执行非协议特定的重组,而不考虑负载内容。

下图说明了检查器如何执行特定于协议或非特定于协议的检测。服务检测取决于 绑定程序检查器中配置 端口主机服务CIDR 参数的方式:

服务的绑定程序配置

您可以通过在 管理中心 Web 界面中为 NAP 定义 绑定 检查器中的 usewhen 参数,来自定义检查器选择条件。有关所 绑定程序 参数的详细信息,请参阅 绑定程序检查器概述。有关导航 管理中心 Web 接口以配置检查器的信息,请参阅 《Cisco Secure Firewall Management Center Snort 3 配置指南》

如果 绑定程序 配置不正确,它就无法检测流的服务,也无法与其绑定检查器。如果规则引擎和自动检测无法理解和识别流量,配置 何时 条件(例如 绑定程序 检查器中的端口)不会强制执行检查。例如,如果在 绑定程序 中将端口 88 配置为 HTTP 端口, 则绑定程序 会将 http_inspect 检查器绑定到该端口上的任意数据流。但是,如果数据流不是 HTTP,则规则引擎不会将数据作为 HTTP 进行检查,而是执行基于端口的检测。

网络分析策略中的自动检测以及启用或禁用检查器

自动检测的行为会发生变化,具体取决于在网络分析策略中启用还是禁用目标检查器。如果在网络分析策略中启用了目标检查器,则自动检测将按上述方式工作。

如果在网络分析策略中禁用目标检查器,通常情况下,自动检测仍会将流检查器(例如流 TCP 或流 UDP)绑定到流。但是,规则引擎不执行服务检测或检测。对于 TCP 流,流 TCP 检查器会执行重组。