用于应用识别的自定义应用签名
用户定义的自定义应用签名也可用于识别应用,而不受使用何种协议和端口的影响。您可以使用主机名、IP 地址范围和端口创建自定义签名,从而跟踪流向特定目标的流量。有关更多信息,请参阅以下主题:
了解 Junos OS 应用识别自定义应用签名
本主题包含以下部分:
自定义应用程序签名概述
借助 Junos OS 应用识别功能,您可以灵活地创建自定义签名来识别任何应用,无论是基于 Web 的应用还是客户端-服务器应用。您可以根据 ICMP、IP 协议、IP 地址、第 7 层为应用创建自定义应用签名。
通常,自定义应用程序签名对于您的环境是唯一的,主要用于检查内部或自定义应用程序。创建自定义应用程序签名后,AppID 会以与标准应用程序相同的方式进行分类和检查。由于自定义应用程序签名不是预定义应用程序包的一部分,因此它们保存在配置层次结构中,而不是预定义的应用程序签名数据库中。
您必须在设备上下载安装应用程序签名包才能配置自定义签名。配置自定义签名后,将无法卸载应用签名包。当您将系统升级到新的软件版本时,所有自定义应用程序签名都将按原样转发。
自定义应用程序签名的增强功能
从 Junos OS 20.1R1 版开始,我们通过提供一组新的应用程序和上下文来增强自定义应用程序签名功能。
自定义应用程序签名上下文现在是应用程序签名包的一部分。如果要使用新引入的应用程序和上下文进行自定义应用程序签名,则必须下载并安装最新的应用程序签名包版本 3248 或更高版本。您可以单独升级应用程序签名包,而无需升级 Junos OS。
支持的自定义应用程序签名类型
安全设备支持以下类型的自定义签名:
基于 ICMP 的映射
基于地址的映射
基于 IP 协议的映射
基于第 7 层和 TCP/UDP 流的映射
在所有受支持的自定义应用签名中,基于 ICMP、基于 IP 协议和基于地址的自定义应用的优先级高于基于第 7 层和基于 TCP/UDP 流的自定义应用。自定义应用签名的优先级顺序为:基于 ICMP、基于 IP 协议、基于地址以及基于第 7 层或基于 TCP/UDP 流的自定义应用。
基于 ICMP 的映射
ICMP 映射技术将标准 ICMP 消息类型和可选代码映射到唯一的应用程序名称。此映射技术可用于区分各种类型的 ICMP 消息。ICMP 映射技术不支持 ICMPv6 流量。
IDP 仅适用于 TCP 或 UDP 流量。因此,ICMP 映射不适用于 IDP,并且无法支持 IDP 功能,例如自定义攻击。
基于地址的映射
第 3 层和第 4 层地址映射通过流量的 IP 地址和可选端口范围来定义应用。
要配置第 3 层和第 4 层基于地址的自定义应用程序,您必须将 IP 地址和端口范围与目标 IP 地址和端口相匹配。同时配置 IP 地址和端口时,这两个条件必须与数据包的目标 IP 地址和端口范围匹配。
考虑一个会话初始化协议 (SIP) 服务器,该服务器从其已知端口 5060 启动会话。由于来自此 IP 地址和端口的所有流量仅由 SIP 应用程序生成,因此可以将 SIP 应用程序映射到服务器的 IP 地址和端口 5060 以进行应用程序标识。这样,具有此 IP 地址和端口的所有流量都将标识为 SIP 应用程序流量。
配置基于地址的应用程序和基于 TCP/UDP 流的应用程序时,如果会话与这两个应用程序匹配,则基于 TCP/UDP 流的应用程序报告为应用程序,基于地址的应用程序报告为扩展应用程序。
为了确保足够的安全性,当专用网络的配置预测受信任服务器的应用程序流量时,请使用地址映射。地址映射可提高处理来自已知应用的流量的效率和准确性。
基于 IP 协议的映射
标准 IP 协议编号将应用映射到 IP 流量。与地址映射一样,为确保足够的安全性,请仅在受信任服务器的专用网络中使用 IP 协议映射。
IDP 仅适用于 TCP 或 UDP 流量。因此,IP 协议映射不适用于 IDP,也不支持 IDP 功能,例如自定义攻击。
在 Junos OS 19.2 到 Junos OS 19.4 版中,基于 IP 协议的自定义应用程序签名无法按预期工作。从 Junos OS 20.1R1 版开始,您可以使用基于 IP 协议的自定义应用签名。
建议的解决方法:
如果要配置统一策略,请使用基于服务的应用程序配置。例:
user@host#
set applications application application-name protocol IP-proto-number例:
user@host#
set applications application A1 protocol 2如果您使用的是旧版应用防火墙,请使用预定义的 IP 协议应用程序。例
user@host#
set security application-firewall rule-sets rule-set-name rule rule-name match dynamic-application application-name例:
user@host#
set security application-firewall rule-sets RS-1 rule R1 match dynamic-application junos:IPP-IGMP
基于第 7 层和 TCP/UDP 流的签名
第 7 层自定义签名定义在 TCP 或 UDP 或第 7 层应用程序上运行的应用程序。
需要基于第 7 层的自定义应用签名来识别运行在同一第 7 层协议上的多个应用。例如,Facebook 和 Yahoo Messenger 等应用都可以通过 HTTP 运行,但需要将它们识别为运行在同一第 7 层协议上的两个不同应用。
基于第 7 层的自定义应用签名根据 HTTP 上下文中的模式检测应用。但是,某些 HTTP 会话是使用 SSL 加密的。应用程序标识还可以从 TLS 或 SSL 会话中提取服务器名称信息或服务器认证。它还可以检测第 7 层应用的 TCP 或 UDP 有效负载模式。
使用自定义应用签名的好处
基于特定应用,为您的网络环境实施独有的安全策略
为未知或未分类的应用提供可见性
识别第 7 层以上的应用以及过渡或临时应用,并进一步实现已知应用的粒度
为任何特定应用执行服务质量 (QoS)
局限性
不支持以下功能:
一些基于 PCRE 的表达式和基于 Unicode 的字符(如果在 Hyperscan 中不受支持)
在基于第 7 层的签名中在成员之间强制执行顺序
基于地址的签名(第 3 层和第 4 层)的通配符地址
自定义应用程序签名的其他配置选项
从 Junos OS 20.1R1 版开始,如果您使用的是应用程序签名包版本 3248 或更高版本,则可以为自定义应用程序签名配置以下选项:
自定义应用程序模式深度
您可以指定 AppID 的字节限制,以便识别通过 TCP 或 UDP 或第 7 层应用程序运行的应用程序的自定义应用程序模式。
要配置限制,请使用层次结构中的 [edit]
以下配置语句:
user@host#
set services application-identification application application-name over application signature signature-name member number depth
例:
user@host#
set services application-identification application my_custom_address over HTTP signature my_addr_sig1 member m01 depth 256
对于第 7 层自定义应用程序,深度从第 7 层上下文的开头开始考虑。对于基于 TCP/UDP 流的自定义应用程序,从 TCP/UDP 有效负载的开头开始考虑深度。
自定义应用程序检查字节限制
您可以设置 AppID 的检测字节限制,以结束分类并在会话中识别自定义应用程序。超出限制时,AppID 将终止应用程序分类。您可以使用此选项提高应用程序流量吞吐量。
要配置应用程序字节限制,请使用 [edit] 层次结构中的以下配置语句:
user@host#
set services application-identification custom-application-byte-limit byte-number
例:
user@host#
set services application-identification custom-application-byte-limit 400
如果已通过预定义应用程序配置自定义应用程序签名,并且 AppID 已识别预定义应用程序,则 DPI 将继续使用自定义签名标识。当自定义签名标识正在进行中时,分类将被标记为非最终分类。如果在自定义应用程序字节限制内未识别自定义应用程序,并且已识别预定义应用程序,则 AppID 会将预定义应用程序结束为最终应用程序并卸载会话。
自定义应用程序的优先级
在 Junos OS 20.1R1 之前的版本中,自定义应用签名的默认优先级较高,允许自定义签名优先于预定义的应用。从 Junos OS 20.1R1 版开始,自定义应用程序签名的默认优先级较低。
当 AppID 在识别预定义应用程序之前识别优先级较低的自定义应用程序时,它会等到预定义应用程序分类最终确定。如果没有可用的预定义应用程序匹配,并且已识别自定义应用程序,则 AppID 将终止与已识别的自定义应用程序的分类。
如果要使用自定义应用程序签名覆盖预定义的应用程序优先级,则必须将自定义应用程序签名的优先级显式设置为高。
要为自定义应用程序配置高优先级,请使用 [edit] 层次结构中的以下配置语句:
user@host#
set services application-identification application application-name priority high
例:
user@host#
set services application-identification application my_custom_address priority high
请注意以下有关自定义应用程序优先级的信息:
对于 20.1R1 之前的 Junos OS 版本:
自定义应用程序的默认优先级为高。
当多个应用在同一数据包中匹配时,将考虑应用的优先级。
为自定义应用程序配置高优先级时 - 自定义应用程序始终优先于预定义应用程序。
为自定义应用程序配置低优先级时 - 自定义应用程序相对于基于模式的类似预定义签名的优先级较低,而相对于其他应用程序的优先级较高。在这些版本中,没有可用于更改行为的选项。
对于 Junos OS 20.1R1 及更高版本:
自定义应用程序的默认优先级较低。
优先级不取决于同一数据包中的匹配项。
第 7 层和基于 TCP/UDP 流的自定义应用程序的优先级可与所有预定义应用程序一起配置(高或低)。
基于第 3 层和第 4 层的自定义应用程序始终保持高优先级。在这种情况下,配置的优先级将被忽略。基于第 3 层和第 4 层的自定义应用程序将覆盖所有预定义的应用程序;因为这些应用是在会话的第一个数据包上触发的。
使用者备用名称
从 Junos OS 23.4R1 版开始,您可以使用用于 SSL 签名的 SAN(使用者备用名称)证书属性创建 AppID 自定义签名。具有 SAN 属性的 SSL 证书允许在单个证书中指定多个主机名或 IP 地址。借助此增强功能,自定义应用程序签名可以根据 SSL 证书的 SAN 字段中列出的应用程序主机名检测应用程序。
您可以使用 ssl-subject-alt-name
[edit services application-identification application name over SSL signature name member name context
] 层次结构下的选项配置 SAN。
示例:配置 Junos OS 应用标识自定义应用签名
此示例说明如何为 Junos OS 应用程序标识配置自定义应用程序签名。
建议只有高级 Junos OS 用户才能尝试自定义应用签名。
开始之前:
在 SRX 系列防火墙上安装有效的应用识别功能许可证。请参阅 管理 Junos OS 许可证
此配置示例使用 Junos OS 20.1R1 版进行测试。
确保您的安全设备安装了应用程序签名包。请参阅 手动下载和安装 Junos OS 应用程序签名包。
若要使用增强的自定义应用程序签名,请升级最新的应用程序签名包版本 3284 或更高版本。使用以下命令检查应用程序签名版本:
user@host> show services application-identification version
Application package version: 3248
建议只有高级 Junos OS 用户才能尝试自定义应用签名。
概述
应用识别支持自定义应用签名,以便在应用通过设备时检测应用。配置自定义签名时,请确保签名是唯一的。
使用以下步骤配置自定义应用程序签名:
为您的安全设备定义上下文、模式、方向、端口范围等属性,以便与应用流量匹配。
配置检测限制、图案深度和优先级(可选配置),以增强自定义应用应用识别过程。
将自定义应用附加到允许或拒绝应用流量的安全策略。
使用
show services application-identification application
和show services application-identification group
命令查看应用程序签名和应用程序签名组。
自定义应用程序配置示例
程序
分步过程
为自定义应用程序设置检查限制。
[edit ] user@host# set services application-identification custom-application-byte-limit 400
为自定义应用程序设置优先级。
[edit ] user@host# set services application-identification application test cacheable user@host# set services application-identification application test priority high
配置基于 TCP 流的自定义签名:
[edit ] user@host# set services application-identification application my_custom_tcp over TCP signature s1 member m01 context stream user@host# set services application-identification application my_custom_tcp over TCP signature s1 member m01 pattern .*install.* user@host# set services application-identification application my_custom_tcp over TCP signature s1 member m01 direction any user@host# set services application-identification application my_custom_tcp over TCP signature s1 member m01 depth 100
配置 FTP 基于上下文的自定义签名:
[edit ] user@host# set services application-identification application my_custom_ftp over FTP signature sig1 member m01 depth 60 user@host# set services application-identification application my_custom_ftp over FTP signature sig1 member m01 context ftp-file-name user@host# set services application-identification application my_custom_ftp over FTP signature sig1 member m01 pattern .*install.* user@host# set services application-identification application my_custom_ftp over FTP signature sig1 member m01 direction client-to-server
配置基于上下文的 HTTP 自定义签名。
[edit ] user@host# set services application-identification application my_custom_http over HTTP signature s1 member m01 context http-header-host user@host# set services application-identification application my_custom_http over HTTP signature s1 member m01 pattern .*agent1.* user@host# set services application-identification application my_custom_http over HTTP signature s1 member m01 direction client-to-server user@host# set services application-identification application my_custom_http over HTTP signature s1 member m01 depth 100
配置 SSL 基于上下文的自定义签名:
[edit] user@host# set services application-identification application my_custom_ssl over SSL signature s1 member m01 context ssl-server-name user@host# set services application-identification application my_custom_ssl over SSL signature s1 member m01 pattern "example\.com" user@host# set services application-identification application my_custom_ssl over SSL signature s1 member m01 direction client-to-server user@host# set services application-identification application my_custom_ssl over SSL signature s1 member m01 depth 100
ssl-version
在应用程序签名包版本 3796 及更高版本中,不推荐使用 SSL 中基于上下文的自定义签名。使用选项ssl-protocol-version
。要检查安全设备上安装的应用程序签名包版本,请参阅显示服务应用程序标识版本。使用以下值指定 ssl-protocol-version 的模式选项:
- SSLv2 (0x0002) : 2
- SSLv3 (0x0300) : 768
- TLS 1.0 (0x0301) : 769
- TLS 1.1 (0x0302) : 770
- TLS 1.2 (0x0303) : 771
- TLS 1.3 (0x0304) : 772
- TLS 1.4 (0x0305) : 773
配置基于 ICMP 的自定义应用程序签名:
[edit ] user@host# set services application-identification application my_custom_icmp icmp-mapping type 100 user@host# set services application-identification application my_custom_icmp icmp-mapping code 1
配置第 3 层或第 4 层基于地址的自定义应用程序签名:
[edit ] user@host# set services application-identification application my_custom_address address-mapping ADDR-SAMPLE filter ip 192.0.2.1/24 user@host# set services application-identification application my_custom_address address-mapping ADDR-SAMPLE filter port-range udp 5000-6000
注意:您必须提供适当的端口范围和指定的 IP 地址,以配置基于地址的自定义应用程序签名。
配置基于 IP 协议映射的自定义应用签名。
[edit] user@host# set services application-identification application my_custom_ip_proto ip-protocol-mapping protocol 2
创建将自定义应用程序作为匹配标准的安全策略。
user@host# set security policies from-zone untrust to-zone trust policy 1 match source-address any user@host# set security policies from-zone untrust to-zone trust policy 1 match destination-address any user@host# set security policies from-zone untrust to-zone trust policy 1 match application any user@host# set security policies from-zone untrust to-zone trust policy 1 match dynamic-application my_custom_http user@host# set security policies from-zone untrust to-zone trust policy 1 then permit
在本例中,我们使用 my_custom_http同样,您可以创建不同的安全策略,并根据需要指定其他自定义应用程序(如 my_custom_ftp、my_custom_tcp、my_custom_ssl、my_custom_address、my_custom_icmp my_custom_ip_proto 等作为动态应用程序的匹配条件。
启用应用跟踪。
user@host# set security zones security-zone trust application-tracking
结果
在配置模式下,输入 show services application-identification
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
[edit]
user@host# show services application-identification
custom-application-byte-limit 100; application my_custom_address { address-mapping ADDR-SAMPLE { filter { ip 192.0.2.1/24; port-range { udp 5000-6000; } } } } application my_custom_ftp { over FTP { signature sig1 { member m01 { depth 60; context ftp-file-name; pattern .*install.*; direction client-to-server; } } } } application my_custom_http { over HTTP { signature s1 { member m01 { depth 100; context http-header-host; pattern .*agent1.*; direction client-to-server; } } } } application my_custom_icmp { icmp-mapping { type 100; code 1; } } application my_custom_ip_proto { ip-protocol-mapping { protocol 2; } } application my_custom_ssl { over SSL { signature s1 { member m01 { depth 100; context ssl-server-name; pattern "example\.com"; direction client-to-server; } } } } application my_custom_tcp { over TCP { signature s1 { member m01 { depth 100; context stream; pattern .*install.*; direction any; } } } } application test { cacheable; priority high; }
[edit security policies] user@host# show from-zone untrust to-zone trust { policy 1 { match { source-address any; destination-address any; application any; dynamic-application [my_custom_http]; } then { permit; } } }
如果完成设备配置,请从配置模式输入 commit
。
验证
验证自定义应用程序定义
目的
显示设备上配置的自定义应用程序签名。请注意,预定义的应用程序签名名称使用前缀“junos:”
行动
从配置模式,输入 show services application-identification application detail name
命令。
user@host> show services application-identification application detail test Application Name: test Application type: TEST Description: N/A Application ID: 16777219 Priority: high