本节介绍了 WAF 的应用程序学习。
应用程序学习在 NSX Advanced Load Balancer 上启用 WAF 功能,以便分析由 WAF 策略处理的一组入站流量。
如果在虚拟服务上启用了应用程序学习,服务引擎会收集数据并将其发送到控制器以进行分析。因此,所有学习都是在控制器上进行的。为应用程序学习选择何种流量取决于所配置的 WAF 策略。
它分析包含 HTTP 请求的 URI 或 BODY 参数的所有路径。该收集在指定的持续时间或时间间隔内持续进行。在定时器到时后,服务引擎会将数据发送到 NSX Advanced Load Balancer 控制器 以进行分析。这些 WAF 配置参数分布在多个 WAF 策略中。
发现选项
要启用学习选项,请执行以下操作:
导航到
。选择必须将应用程序学习设置为已启用的策略。
以下屏幕截图显示了用于启用应用程序学习的选项。
![](images/GUID-49EC09D7-B5A1-437E-8770-1E16986A9E1F-low.png)
为选定的 WAF 策略启用应用程序学习。在启用该选项后,可以编辑额外的配置选项,如下所示:
字段 |
描述 |
附加信息 |
---|---|---|
仅从经过身份验证的客户端中学习 |
选择此选项可为此 WAF 策略启用应用程序学习。 |
|
受信任的 IP |
如果已配置,将仅对来自已配置 IP 地址组内的客户端 IP 的请求执行学习。 |
|
采样 |
进行应用程序学习的请求百分比。 |
范围(1 到 100%)。 |
启用自动规则更新 |
在 WAF 配置文件上启用基于应用程序学习的规则更新。将在专用 WAF 学习组中编写规则。 |
选中或取消选中该复选框。 |
具有置信度的自动升级规则 |
自动规则更新所需的最低置信度标签。 |
|
学习间隔 |
SE 向控制器发布应用程序学习数据的频率。 |
范围(1 到 60 分钟)。示例 - 30 分钟 |
最大参数个数 |
要为应用程序学习的最大参数数量。 |
范围(10 到 1000)。示例 - 100 |
要学习的最小命中数 |
某个参数符合学习条件所需的最小出现次数。 |
范围(10 到 1000)。示例 - 100 |
按 URI 学习 |
学习每个 URI 路径的参数。 |
选中或取消选中该复选框。 |
最大 URI |
要为应用程序学习的最大 URI 路径数。对于更复杂的应用程序,可以为其设置更高的值。 |
范围 (10 - 10000)。 |
如果按 URI 学习处于已启用状态,学习算法将在 URI 和参数组合达到置信度分数时执行它们。如果处于已禁用状态,学习算法将独立于 URI 执行参数。在为每个会话生成 URI 时,这可能是非常有用的。
仅从经过身份验证的客户端中进行应用程序学习
应用程序学习参数下提供了仅从经过身份验证的客户端中学习的选项。此参数的默认值为 false
。如果将 learn_from_authenticated_clients_only 设置为 true
,将仅对来自以下客户端的请求执行学习:客户端已通过虚拟服务的身份验证配置文件中配置的身份验证过程。如果将值设置为 true
,但客户端未通过身份验证,则不会发送请求学习数据。
通过启用从经过身份验证的客户端中进行应用程序学习的标记,您可以将学习限制为已通过虚拟服务授权策略中配置的身份验证的客户端。
登录 CLI,然后选择 learning_params 选项,以便将 learn_from_authenticated_clients_only 设置为 true
。
[admin:ctr]: > configure wafpolicy Demo-WAF-Policy [admin:ctr]: wafpolicy> learning_params [admin:ctr]: wafpolicy:learning_params> learn_from_authenticated_clients_only Overwriting the previously entered value for learn_from_authenticated_clients_only [admin:ctr]: wafpolicy:learning_params> where Tenant: admin Cloud: Default-Cloud +---------------------------------------+-----------+ | Field | Value | +---------------------------------------+-----------+ | sampling_percent | 1 percent | | update_interval | 30 min | | max_uris | 500 | | max_params | 100 | | enable_per_uri_learning | True | | min_hits_to_learn | 10000 | | learn_from_authenticated_clients_only | True | +---------------------------------------+-----------+
通过受信任的 IP 进行应用程序学习
使用 trusted_ipgroup_ref 选项将受信任的 IP 组设置为现有 IP 组。
[admin:ctr]: wafpolicy:learning_params> trusted_ipgroup_ref Internal [admin:ctr]: wafpolicy:learning_params> where Tenant: admin Cloud: Default-Cloud +---------------------------------------+-----------+ | Field | Value | +---------------------------------------+-----------+ | sampling_percent | 1 percent | | update_interval | 30 min | | max_uris | 500 | | max_params | 100 | | enable_per_uri_learning | True | | min_hits_to_learn | 10000 | | learn_from_authenticated_clients_only | True | | trusted_ipgroup_ref | Internal | +---------------------------------------+-----------+
保存配置。
[admin:ctrl]: wafpolicy:learning_params> save [admin:ctr]: wafpolicy> save +-----------------------------------------+------------------------------------------------+ | Field | Value | +-----------------------------------------+------------------------------------------------+ | uuid | wafpolicy-e3bcd2bd-afcf-43ec-97cc-c33a978b3ebf | | name | Demo-WAF-Policy | | tenant_ref | admin | | mode | WAF_MODE_DETECTION_ONLY | | waf_profile_ref | System-WAF-Profile | | paranoia_level | WAF_PARANOIA_LEVEL_LOW | | waf_crs_ref | CRS-2021-2 | | failure_mode | WAF_FAILURE_MODE_OPEN | | allow_mode_delegation | True | | positive_security_model | | | group_refs[1] | Demo-WAF-Policy-PSM-Learning-Group | | enable_app_learning | True | | application_signatures | | | provider_ref | System-WafApplicationSignatures-Trustwave | | learning_params | | | sampling_percent | 1 percent | | update_interval | 30 min | | max_uris | 500 | | max_params | 100 | | enable_per_uri_learning | True | | min_hits_to_learn | 10000 | | learn_from_authenticated_clients_only | True | | trusted_ipgroup_ref | Internal | | min_confidence | CONFIDENCE_VERY_HIGH | | confidence_override | | | confid_very_high_value | 9999 | | confid_high_value | 9500 | | confid_probable_value | 9000 | | confid_low_value | 7500 | | enable_auto_rule_updates | True | | enable_regex_learning | False | | bypass_static_extensions | True | +-----------------------------------------+------------------------------------------------+
如果配置了受信任的 IP 组,但客户端 IP 地址与该组不匹配,则不会发送请求学习数据。
如果同时配置了仅经过身份验证的客户端和受信任的 IP,则当其中任一参数的值设置为
true
时,将启用学习。如果同时配置了 learn_from_authenticated_clients_only 和受信任的 IP,但客户端既未通过身份验证,也不位于受信任的 IP 组中,则不会发送请求学习数据。