应用识别 统一策略支持
了解安全设备上的统一策略
随着 Web 应用程序的日益普及,并且由于从传统的、完全基于客户端的应用程序到 Web 的转变,越来越多的流量通过 HTTP 传输。即时消息、对等文件共享、Web 邮件、社交网络以及 IP 语音和视频协作等应用通过更改通信端口和协议来规避安全机制。管理应用行为的变化需要不断修改安全规则,而安全策略规则的维护是一项重大挑战。若要处理应用程序行为中的此类更改,需要通过安全策略来管理动态应用程序。
为了应对这一挑战,从 Junos OS 18.2R1 版开始,瞻博网络 SRX 系列防火墙和 vSRX 虚拟防火墙支持 统一策略,从而可以在安全策略中精细控制和实施动态第 7 层应用。统一策略是一种安全策略,使您能够将动态应用程序用作现有 5 元组或 6 元组(带用户防火墙的 5 元组)匹配条件的一部分,以检测应用程序随时间的变化。
统一策略利用从应用程序标识 (AppID) 模块确定的应用程序标识信息。识别特定应用后,根据设备上配置的策略,对流量应用允许、拒绝、拒绝或重定向等操作。
任何被安全策略基于第 3 层或第 4 层标准拒绝或拒绝的流量都会立即被丢弃。安全策略允许的流量会根据第 7 层的 AppID 信息进一步评估。
当您使用动态应用程序配置安全策略时,或者当您在安全策略中启用任何服务,例如基于应用程序策略的路由 (APBR)、应用程序跟踪 (Apptrack)、应用程序服务质量 (AppQoS)、应用程序防火墙 (AppFW)、IDP 或瞻博网络 ATP 云等服务时,将启用 AppID。
好处
简化第 7 层基于应用的安全策略管理。
使您的设备能够适应网络中的动态流量变化。
与传统安全策略相比,可提供更强的控制力和可扩展性来管理动态应用流量。
了解统一策略如何使用 AppID 信息
准确的流量分类对于云和数据中心架构的网络安全至关重要。识别和分类不同类型的应用程序流量(在 HTTP 上交易)也是一项挑战,因为 Web 应用程序包括文档、数据、图像以及音频和视频文件。
无论使用何种端口、协议和加密(TLS/SSL 或 SSH)或其他隐匿策略,AppID 都会检测到您网络上的应用。它使用深度包检测 (DPI) 技术、签名数据库以及众所周知的地址和端口来识别应用。AppID 提供动态应用分类、默认协议、应用端口等信息。对于包含在其他应用程序的依赖列表中的任何应用程序,AppID 提供依赖应用程序的信息。
统一策略利用来自 AppID 的信息来匹配应用,并按照策略中指定的方式执行操作。在统一策略配置中,可以使用预定义的动态应用(来自应用标识签名包)或用户定义的自定义应用作为匹配条件。
了解依赖式动态应用识别
从属应用程序列表包括可识别动态应用程序的应用程序。例如,Facebook 的依赖应用程序列表包括 HTTP2 和 SSL。
动态应用程序的默认协议和端口包括为该应用程序定义的协议和端口。如果未定义该应用程序的协议和端口,则考虑其相关应用程序的默认协议和端口列表。
例如,Facebook-Access 应用程序依赖于 HTTP、SSL 和 HTTP2 等应用程序。因此,Facebook-Access 应用程序考虑了这些依赖应用程序的默认协议和端口。
每当安装新的应用程序签名包或自定义应用程序配置更改时,应用程序的依赖应用程序列表以及应用程序的协议和端口映射都可能会更改。AppID 向安全策略提供这些详细信息。
动态应用分类状态
在应用识别过程中,DPI 会处理每个数据包,并将其分类为以下状态之一,直到最终识别出应用:
预匹配 - 在 DPI 识别应用程序之前。
事务最终 - 对于动态应用程序,一个事务已完成,但应用程序的标识不是最终的。第 7 层上的应用程序可以随着每个事务而不断变化,因为它们具有依赖应用程序。例如,Facebook 应用程序具有 HTTP、SSL 等相关应用程序。
最终匹配 — 根据配置的最大事务数,第 7 层上的匹配应用被视为最终匹配。也就是说,只有在最大交易数完成后,匹配才会被视为最终匹配。
在确定最终应用之前,无法精确匹配策略。将提供潜在策略列表,并使用列表中的潜在策略允许流量。识别应用程序后,最终策略将应用于会话。允许、拒绝、拒绝或重定向等策略操作将应用于策略规则中指定的流量。
DPI 可能会在最终匹配期间切换匹配的应用程序;但各自的政策保持不变。这就是您可能会注意到系统日志中提到的不同应用程序创建和关闭同一策略的会话的原因。
对于基于事务的应用程序(如 Facebook),应用程序分类不会终止。要终止此类应用程序的分类,您可以选择将多个事务的结果视为最终分类。
配置应用程序标识的事务限制
在得出最终结果之前,您可以配置最大事务数, set services application-identification maximum-transactions transactions-number 以便使用语句识别应用程序。配置最大事务数时,在完成配置的事务数之前,DPI 不会终止。
例:
user@host#
set services application-identification maximum-transactions 5
您可以配置从 0 到 25 的交易编号。默认情况下,会考虑五个事务。
如果将事务计数设置为 0,则事务不会终止 DPI。应用程序的最终匹配可能不可用;并且不会应用最终安全策略。
表 1 显示了将最大事务设置为 5 时应用程序识别分类的不同状态。请注意,表中的值例如,不是实际值。确切的交易可能因流量模式而异。
场景 |
已识别的应用 |
应用识别状态 |
交易 |
---|---|---|---|
会话的第一个数据包 |
没有 |
赛前 |
0 |
中间应用程序 |
SSL |
赛前 |
1 |
在解密的有效负载中识别的中间应用 |
HTTP |
赛前 |
2 |
已识别中间应用 |
FACEBOOK 访问 |
赛前 |
3 |
已识别中间应用 |
FACEBOOK 聊天 |
最终交易(交易 = 1) |
4 |
确定最终应用 |
FACEBOOK-邮件 |
最终匹配(交易 = 2) |
4 |
在统一策略中,不支持配置可基于第 3 层或第 4 层信息识别的动态应用(基于 ICMP 的应用除外)。相反,您可以使用包含基于第 3 层和第 4 层的应用程序的预定义值的 junos-defaults 组。
高可用性支持统一策略的应用识别
识别应用程序时,其分类信息将保存在应用程序系统缓存 (ASC) 中。
当安全设备(例如:SRX 系列防火墙)在机箱群集模式下运行时,保存在 ASC 中的信息将在主节点和辅助节点之间同步。
在动态应用程序分类的情况下,当应用程序分类最终确定时,来自 DPI 的每个会话应用程序分类信息将与辅助节点同步。
在故障转移期间,辅助节点上的应用程序分类信息处于以下任一状态:
未识别应用
确定最终应用
故障转移后,新主节点中可用的应用程序分类信息将被视为最终匹配项。相同的信息将与新的辅助节点同步,因为在故障转移后分类不会继续。表 2 中的示例 表 2 显示了机箱群集设置中的应用分类状态。
应用识别状态 |
机箱群集节点 |
故障切换前 |
故障切换后 |
详 |
---|---|---|---|---|
确定最终应用。 识别的应用程序:SSL:Facebook |
主节点 |
识别的应用程序:SSL:Facebook |
识别的应用程序:SSL:Facebook |
故障切换后没有变化,因为完整的应用程序分类已同步到辅助节点。 |
辅助节点 |
识别的应用程序:SSL:Facebook |
识别的应用程序:SSL:Facebook |
||
最终申请未确定。(已确定部分应用。 识别的应用程序:SSL |
主节点 |
识别的应用程序:SSL |
识别的应用程序:APP-INVALID |
故障转移后,应用程序识别不会继续。 |
辅助节点 |
已识别的应用:不可用 |
识别的应用程序:APP-INVALID |
||
最终申请未确定。(部分申请已确定) |
主节点 |
已识别的应用:不可用 |
识别的应用程序:APP-INVALID |
在这种情况下,在第一次数据包检测之后发生故障切换,并且未识别到任何应用程序。 故障转移后,应用程序识别不会继续。 |
辅助节点 |
已识别的应用:不可用 |
识别的应用程序:APP-INVALID |
为应用程序服务启用或禁用应用程序系统缓存
从 Junos OS 18.2R1 版开始,ASC 的默认行为更改如下:
- Junos OS 18.2R1 之前 - 默认情况下为所有服务(包括安全服务)启用 ASC。
-
从 Junos OS 18.2R1 版开始 — 默认情况下启用 ASC;请注意安全服务查找中的区别:
-
默认情况下,不启用安全服务的 ASC 查找。也就是说,安全服务(包括安全策略、应用防火墙 (AppFW)、应用跟踪 (AppTrack)、应用服务质量 (AppQoS)、瞻博网络 ATP 云、IDP 和内容安全在默认情况下不使用 ASC。
-
默认情况下,其他服务的 ASC 查找处于启用状态。也就是说,包括基于策略的高级路由 (APBR) 在内的其他服务在默认情况下使用 ASC 进行应用识别。
-
ASC 默认行为的更改会影响旧版 AppFW 功能。从 Junos OS 18.2 版开始,安全服务默认禁用 ASC,AppFW 将不使用 ASC 中存在的条目。
您可以使用 set services application-identification application-system-cache security-services
命令恢复到 Junos OS 18.2 版之前的 ASC 行为。
如果为安全服务启用了 ASC,安全设备可能会容易受到应用程序规避技术的攻击。建议仅当设备在其默认配置(对安全服务禁用)下的性能不足以满足您的特定用例时,才启用 ASC。
使用以下命令启用或禁用 ASC:
为安全服务启用 ASC:
user@host#
set services application-identification application-system-cache security-services禁用其他服务的 ASC:
user@host#
set services application-identification application-system-cache no-miscellaneous-services为安全服务禁用已启用的 ASC:
user@host#
delete services application-identification application-system-cache security-services为其他服务启用禁用的 ASC:
user@host#
delete services application-identification application-system-cache no-miscellaneous-services
您可以使用 show services application-identification application-system-cache
命令验证 ASC 的状态。
以下示例输出提供 ASC 的状态:
user@host>
show services application-identification application-system-cache
Application System Cache Configurations:
application-cache: on
Cache lookup for security-services: off
Cache lookup for miscellaneous-services: on
cache-entry-timeout: 3600 seconds
在 Junos OS 18.2R1 版之前的版本中,默认情况下会启用应用程序缓存。您可以使用命令手动禁用它 set services application-identification no-application-system-cache
。
user@host# set services application-identification no-application-system-cache
另见
隧道应用支持
从 Junos OS 20.4R1 版开始,我们增强了安全设备上的统一策略查找功能,用于管理隧道应用。您现在可以使用统一策略阻止特定的隧道应用程序。
当您想要阻止某些隧道应用程序(如 QUIC 或 SOCK)时,可以将这些隧道应用程序配置为具有拒绝或拒绝操作的统一策略。
微应用的应用识别支持
从 Junos OS 19.2R1 版开始,您可以使用应用程序识别功能在子功能级别管理应用程序。在本文档中,我们将应用程序子功能称为微应用程序。
微应用是应用签名包的一部分。您必须在应用识别中启用微应用检测,然后将其用作安全策略中的匹配条件。
AppID 在网络上的子功能级别检测应用程序,安全策略利用从应用程序标识 (AppID) 模块确定的应用程序标识信息。识别特定应用后,根据设备上配置的策略,对流量应用允许、拒绝、拒绝或重定向等操作。
微应用程序的概念类似于基于事务的应用程序,其中基本应用程序上的嵌套应用程序在同一会话中不断更改。
例:
考虑一个动态应用程序MODBUS。READ 和 WRITE 是 MODBUS 应用程序的子功能或操作。对于这些子功能,我们必须定义微应用,例如 MODBUS-READ 和 MODBUS-WRITE。应用程序分类路径可以在 MODBUS:MODBUS-READ 和 MODBUS:MODBUS-WRITE 之间不断更改。在这种情况下,MODBUS是基础应用程序,MODBUS-READ和MODBUS-WRITE是嵌套应用程序,即微应用程序。
您可以在与安全策略中的预定义动态应用相同的层次结构下配置微应用,并根据策略规则进行操作。
通过在安全策略中配置这些微应用,您可以允许或拒绝MODBUS子功能,而不是阻止或允许整个MODBUS应用。
微应用分类
微应用程序的应用程序分类无法到达最终匹配项,因为微应用程序在会话中不断变化。只有在完成最大事务数后,匹配的应用程序才会被视为最终匹配。
AppID 的最大事务限制为 25,但每个服务模块都有自己的限制,具体取决于自己的要求。如果在最大事务限制 (25) 之前达到特定于服务的限制,则服务模块会将其策略标记为最终策略。但是,AppID 会继续应用分类,并在达到 25 个限制时卸载会话。
set services application-identification max-transactions
您可以使用命令配置事务限制。
依赖的应用程序列表以及默认协议和端口
从属应用程序列表包括可识别动态应用程序的应用程序。动态应用程序的默认协议和端口包括为该应用程序定义的协议和端口。
统一策略使用依赖应用列表以及默认协议和端口来实施安全策略。微应用的依赖应用列表、默认协议和端口与基础应用相同。
示例:微应用MODBUS-READ的依赖应用列表和默认端口与MODBUS的依赖应用列表和默认端口相同。
微应用的策略实施
安全策略会针对传输流量强制实施规则,包括哪些流量可以通过设备,以及流量通过设备时需要对其执行的操作。如果配置了以微应用为匹配条件的安全策略,则策略模块需要 AppID 中的微应用标识信息。
使用微应用程序的应用程序分类无法达到最终匹配,因为微应用程序在会话中不断变化。但是,需要对应用程序进行最终匹配才能查找策略并处理策略。您可以使用 [edit security policies unified-policy-max-lookups
] 命令限制策略查找的次数。
识别应用程序后,最终策略将应用于会话。允许、拒绝、拒绝或重定向等策略操作将应用于策略规则中指定的流量。
安装微应用程序
微型应用程序是应用程序签名包的一部分。当您下载应用签名包并安装时,微应用也会安装在安全策略中,并可供配置。您可以使用 show services application-identification status
命令查看微应用程序的详细信息。
如果从 Junos OS 19.2 版开始在安全策略中配置微应用,则无法降级到前一个版本的 Junos OS 版本。要降级至前一个版本的 Junos OS 版本,必须移除在安全策略中配置的微型应用。
管理 DNS-over-HTTP 和 DNS-over-TLS 应用程序流量
在 Junos OS 20.4R1 版中,我们引入了一个新的微型应用 DNS-ENCRYPTED,以增强应用签名包。通过在安全策略中配置此微应用,您可以对 DNS-over-HTTP 和 DNS-over-TLS 应用流量进行精细控制。
默认情况下,DNS 加密应用程序处于启用状态。您可以使用 request services application-identification application disable DNS-ENCRYPTED
命令禁用它。
您可以使用命令查看微应用程序 show services application-identification application
的详细信息。
启用和禁用微应用检测
您可以启用或禁用微应用检测。默认情况下,微应用程序检测处于禁用状态。您必须启用微应用程序才能在安全策略中使用它们。
您可以使用以下命令启用或禁用微应用程序:
启用微应用检测(从配置模式)。
user@host# set services application-identification micro-apps
禁用特定的微应用程序(从操作模式)。
user@host> request services application-identification application disable application-name
例:
user@host>request services application-identification application disable junos:MODBUS
示例:配置微应用
此示例说明如何在安全策略中配置微应用程序,以便在子功能级别实施策略。
要求
此示例使用以下硬件和软件组件:
SRX 系列防火墙,Junos OS 19.2R1 或更高版本。此配置示例在 Junos OS 19.2R1 版上进行了测试。
安装在 SRX 系列防火墙上的有效应用识别功能许可证。
开始之前,请从 IDP 或应用程序标识安全包安装整个签名数据库。请参阅 手动下载并安装 Junos OS 应用程序签名包 或下载 并安装 Junos OS 应用程序签名包作为 IDP 安全包的一部分。
概述
在此示例中,您将使用微应用程序 MODBUS-READ-COILS 和 MODBUS-WRITE-SINGLE-COILS、MODBUS-READ-COILS、MODBUS-WRITE-MULTIPLE-COILS 创建安全策略。允许与这些微应用匹配的应用流量。
配置
使用微应用配置安全策略
CLI 快速配置
要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit]
级的 CLI 中,然后从配置模式进入 commit
。
set services application-identification micro-apps set security policies from-zone untrust to-zone trust policy P1 match source-address any set security policies from-zone untrust to-zone trust policy P1 match destination-address any set security policies from-zone untrust to-zone trust policy P1 match application any set security policies from-zone untrust to-zone trust policy P1 match dynamic-application junos:MODBUS-READ-COILS set security policies from-zone untrust to-zone trust policy P1 match dynamic-application junos:MODBUS-WRITE-SINGLE-COIL set security policies from-zone untrust to-zone trust policy P1 match dynamic-application junos:MODBUS-WRITE-MULTIPLE-COILS set security policies from-zone untrust to-zone trust policy P1 then permit
分步过程
下面的示例要求您在各个配置层级中进行导航。
要为应用程序标识配置自定义应用程序组,请执行以下操作:
启用微应用检测。
[edit] user@host# set services application-identification micro-apps
使用其他策略匹配标准定义安全策略。
[edit] user@host# set security policies from-zone untrust to-zone trust policy P1 match source-address any user@host# set security policies from-zone untrust to-zone trust policy P1 match destination-address any user@host# set security policies from-zone untrust to-zone trust policy P1 match application any
将应用和微应用定义为匹配标准。
[edit] user@host# set security policies from-zone untrust to-zone trust policy P1 match dynamic-application junos:MODBUS-READ-COILS user@host# set security policies from-zone untrust to-zone trust policy P1 match dynamic-application junos:MODBUS-WRITE-SINGLE-COIL user@host# set security policies from-zone untrust to-zone trust policy P1 match dynamic-application junos:MODBUS-WRITE-MULTIPLE-COILS
定义策略操作。
[edit] user@host# set security policies from-zone untrust to-zone trust policy P1 then permit
结果
在配置模式下,输入 show security policies
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
[edit] user@host# show security policies from-zone untrust to-zone trust from-zone untrust to-zone trust { policy P1 { match { source-address any; destination-address any; application any; dynamic-application [ junos:MODBUS-READ-COILS junos:MODBUS-WRITE-SINGLE-COIL junos:MODBUS-WRITE-MULTIPLE-COILS ]; } then { permit; } } }
如果完成设备配置,请从配置模式输入 commit
。
使用微应用配置应用服务质量
分步过程
下面的示例要求您在各个配置层级中进行导航。
要为应用程序标识配置自定义应用程序组,请执行以下操作:
使用微应用 junos:MODBUS-READ-COILS 定义 AppQoS 配置参数。
[edit] user@host# set class-of-service application-traffic-control rate-limiters RL1 bandwidth-limit 1000 user@host# set class-of-service application-traffic-control rule-sets RS1 rule 1 match application junos:MODBUS-READ-COILS user@host# set class-of-service application-traffic-control rule-sets RS1 rule 1 then dscp-code-point 111110 user@host# set class-of-service application-traffic-control rule-sets RS1 rule 1 then loss-priority high user@host# set class-of-service application-traffic-control rule-sets RS1 rule 1 then rate-limit client-to-server RL1 user@host# set class-of-service application-traffic-control rule-sets RS1 rule 1 then log
创建安全策略。
[edit security] 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
定义策略操作。
[edit security] user@host# set security policies from-zone untrust to-zone trust policy 1 then permit application-services application-traffic-control rule-set RS1
结果
在配置模式下,输入 how class-of-service
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
[edit] user@host# show class-of-service application-traffic-control { rate-limiters RL1 { bandwidth-limit 1000; } rule-sets RS1 { rule 1 { match { application junos:MODBUS-READ-COILS; } then { dscp-code-point 111110; loss-priority high; rate-limit { client-to-server RL1; } log; } } } }
在配置模式下,输入 show security policies
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
[edit] user@host# show security policies from-zone untrust to-zone trust from-zone untrust to-zone trust { policy 1 { match { source-address any; destination-address any; application any; dynamic-application [ junos:MODBUS-READ-COILS]; } then { permit { application-services { application-traffic-control { rule-set RS1; } } } } } }
如果完成设备配置,请从配置模式输入 commit
。
验证
验证微应用状态
目的
验证微应用是否已启用。
行动
show services application-identification status
使用命令获取微应用版本,使用show services application-identification application micro-applications
命令获取微应用的详细信息。
Application Identification Status Enabled Sessions under app detection 0 Max TCP session packet memory 0 Force packet plugin Disabled Force stream plugin Disabled Statistics collection interval 1440 (in minutes) Application System Cache Status Enabled Cache lookup security-services Disabled Cache lookup miscellaneous-services Disabled Max Number of entries in cache 0 Cache timeout 3600 (in seconds) Protocol Bundle Download Server https://signatures.juniper.net/cgi-bin/index.cgi AutoUpdate Disabled Proxy Details Proxy Profile Not Configured Slot 1: Application package version 3172 Status Active PB Version 1.380.0-64.005 (build date May 13 2019) Engine version 5.3.0-56 (build date May 13 2019) Micro-App Version 1.0.0-0 Sessions 0
示例输出
显示服务 应用程序识别 应用程序微应用程序
user@host> show services application-identification application micro-applications Micro Applications junos:BACNET-GET-EVENT-INFORMATION junos:BACNET-SUBSCRIBE-COV-PROPERTY junos:BACNET-LIFE-SAFETY-OPERATION junos:BACNET-READ-RANGE junos:BACNET-REQUEST-KEY junos:BACNET-AUTHENTICATE junos:BACNET-VT-DATA junos:BACNET-VT-CLOSE junos:BACNET-VT-OPEN junos:BACNET-REINITIALIZE-DEVICE junos:BACNET-CONFIRMED-TEXT-MESSAGE junos:BACNET-CONFIRMED-PRIVATE-XFER junos:BACNET-DEVICE-COMM-CONTROL junos:BACNET-WRITE-PROP-MULTIPLE junos:BACNET-WRITE-PROPERTY junos:BACNET-READ-PROP-MULTIPLE junos:BACNET-READ-PROP-CONDITIONAL junos:BACNET-READ-PROPERTY junos:BACNET-DELETE-OBJECT junos:BACNET-CREATE-OBJECT junos:BACNET-REMOVE-LIST-ELEMENT junos:BACNET-ADD-LIST-ELEMENT junos:BACNET-ATOMIC-WRITE-FILE junos:BACNET-ATOMIC-READ-FILE junos:BACNET-SUBSCRIBE-COV junos:SIEMENS-S7-SETUP-COMM junos:SIEMENS-S7-UPLOAD-START ......
有关详细信息,请参阅 show services application-identification application micro-applications 。
验证微应用统计信息
目的
验证是否应用了微应用程序。
行动
使用以下命令获取微应用程序的详细信息。
示例输出
命令-名称
user@host> show services application-identification statistics applications Last Reset: 2018-12-16 01:45:47 PST Application Sessions Bytes Encrypted MODBUS-READ-COILS 1 1026 No MODBUS-WRITE-SINGLE-COIL 1 1254 No
user@host> show services application-identification statistics applications details (Junos OS Release 20.3) Logical System: root-logical-system Last Reset: 2020-05-08 08:55:31 PDT Application Enc DPI final-match Pre-match Limits final-match NTP No 1 0 0 SYSLOG No 5 0 0
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能浏览器 查看您使用的平台是否支持某项功能。
set services application-identification no-application-system-cache
。