为 VPN 虚拟服务器和身份验证虚拟服务器提供的 Web Application Firewall 保护
从 NetScaler 版本 13.1 Build 53.x 开始,您可以通过应用 Web 应用程序防火墙保护,保护 NetScaler Gateway 虚拟服务器、流量管理虚拟服务器和身份验证虚拟服务器免受恶意攻击。此功能为您的部署提供了额外的安全层,因为它通过使用 API 架构验证传入的请求来过滤这些请求,然后对用户进行身份验证以访问应用程序。
注意:
基于 Linux 的 CPX 和 BLX 部署不支持用于身份验证和网关端点的 Web App Firewall 保护。
启用 Web Application Firewall 保护后,NetScaler 会利用内置的 Web Application Firewall 配置文件 ns-aaatm-default-appfw-profile
、ns-aaa-default-appfw-profile
和 ns-vpn-default-appfw-profile
。这些配置文件包含相关的内置 API 规范文件 ns-aaatm-spec
、ns-aaa-spec
、ns-vpn-spec
用于确保网络流量安全且符合 API 规范。
注意:
我们建议您始终升级到最新的软件版本,因为它包含最新的安全修补程序。
许可要求
此功能适用于所有许可证(标准版、企业版和高级版)。
配置 Web Application Firewall 保护
在 GUI 上
要为虚拟服务器配置 Web Application Firewall 保护,请执行以下操作:
- 导航到“安全”>“AAA - 应用程序流量”>“更改身份验证设置”。
-
在配置 AAA 参数页面上,配置 WAF 保护。
支持以下选项:
-
已禁用 - 选中后,Web Application Firewall 保护不应用到任何虚拟服务器。默认情况下,Web Application Firewall 保护未设置为任何值。
-
AUTH — 保护身份验证虚拟服务器。
-
VPN — 保护 VPN 虚拟服务器。
-
身份验证和 VPN — 保护身份验证、流量管理和 VPN 虚拟服务器。
-
- 单击确定。
在 CLI 上
请运行以下命令为虚拟服务器启用 Web Application Firewall 保护:
set aaa parameter -wafProtection <DISABLED/AUTH/VPN>
示例:
下面是身份验证虚拟服务器的 Web Application Firewall 保护示例:
-
set aaa parameter -wafProtection AUTH
命令保护身份验证虚拟服务器。 -
set aaa parameter -wafProtection VPN
命令保护 VPN 虚拟服务器。 -
set aaa parameter -wafProtection AUTH VPN
命令保护身份验证、VPN 和流量管理虚拟服务器。
配置 Security Insight
要查看内置的 Web Application Firewall 配置文件检测到的违规行为,请配置 Security Insight。配置完成后,每当向虚拟服务器发送请求时,NetScaler 都会将见解记录发送到 AppFlow 收集器(在分析配置文件中配置)。Security Insight 记录将发送到 AppFlow 收集器。
备注:
在配置 Security Insight 之前,请确保启用 ULFD 模式和 AppFlow 功能,这是前提条件。在 GUI 上,您可以通过导航到“系统”>“设置”>“模式和功能”来执行此步骤。在 CLI 上,您可以使用命令
en ns mode ULFD
和en ns feature appflow
。确保将您的 NetScaler 实例添加到 NetScaler 控制台中。有关详细信息,请参阅实例管理。
在 GUI 上
在“配置 AAA 参数”页面上,启用“Security Insight”选项。默认情况下,此参数处于禁用状态。
在 CLI 上
运行以下命令为调试日志记录启用 Security Insight。默认情况下,此参数处于禁用状态。
set aaa parameter -securityInsights <ENABLED/DISABLED>
在 GUI 上配置 AppFlow 收集器和分析配置文件
-
导航到 System(系统)> Settings(设置)。在“模式和功能”部分,启用 ULFD 模式和 AppFlow 功能。
-
配置 AppFlow 收集器。
- 导航到配置 > 系统 > AppFlow > AppFlow 收集器。配置所需的参数,然后单击“创建”。
-
将配置的 AppFlow 收集器设置为分析配置文件。在此示例中,AppFlow 收集器设置为内置分析配置文件
ns-aaa-vpn-appfw-analytics-profile
。- 导航到配置 > 系统 > 配置文件 > 分析配置文件。在“基本详细信息”部分,在“收集器”字段中选择 AppFlow 收集器。
在 CLI 上配置 AppFlow 收集器和分析配置文件
- add appflow collector col2 -IPAddress 10.146.77.19 -port 5557 -Transport logstream
- set analytics profile ns-aaa-vpn-appfw-analytics-profile -collectors col2 -type securityinsight
<!--NeedCopy-->
有关 AppFlow 配置的更多信息,请参阅配置 AppFlow 功能。
注意:
此功能的 Security Insight 仅适用于 Logstream 消息。它们不适用于 IPFIX 消息。
在 NetScaler 控制台上查看 AppFlow 记录
-
在 NetScaler 控制台本地 GUI 上,导航到安全 > 安全违规。在 WAF 部分中,选择 VPN 或身份验证虚拟服务器。有关更多详细信息,请参阅查看应用程序安全违规详细信息。
要查看详细视图,请在“请求 URL”字段中选择 URL。
-
将相应的许可证应用到您的 VPN 或身份验证虚拟服务器。
-
验证您的虚拟服务器是否已获得许可。
-
在 NetScaler 控制台 GUI 的“设置”>“分析配置”部分,选择您的虚拟服务器并应用许可。有关更多详细信息,请参阅在虚拟服务器上管理许可和启用分析。
-
配置放松规则
您可以在端点 URL 或虚拟服务器 IP 地址上配置放松规则,以绕过某些流量根据 API 规范文件中指定的架构进行验证。
在 GUI 上
下面是可以应用到 "GET:/oauth/idp/login"
身份验证端点 URL 的 REST 验证放松示例:
-
导航到安全 > NetScaler Web App Firewall > 配置文件。
-
选择配置文件
ns-aaa-default-appfw-profile
。 -
在“高级设置”下,单击“放松规则”。
-
选中 REST API 架构验证复选框。
-
导航到“放松规则”部分的开头,然后单击“编辑”。
-
单击添加。
-
在 REST API 架构验证放宽规则页面上,更新必填字段,然后单击“创建”。
下面是可以应用到虚拟服务器 IP 地址的放松措施的示例:
-
在“高级设置”下,选择“配置文件设置”。
-
在“常用设置”部分,选中“启用绕过列表”复选框。
-
返回“高级设置”部分,选择“全局绕过/拒绝列表”。
-
在“全局绕过列表”部分,单击“添加”。
-
在“创建 AppFirewall 绕过列表绑定”页面上,更新必填字段,然后单击“创建”。
在 CLI 上
下面是可以应用到 "GET:/oauth/idp/login"
身份验证端点 URL 的 REST 验证放松示例:
bind appfwprofile ns-aaa-default-appfw-profile -restValidation "GET:/oauth/idp/login"
<!--NeedCopy-->
下面是可以应用到虚拟服务器 IP 地址的放松措施的示例:
set appfwprofile ns-aaa-default-appfw-profile -bypasslist on
bind appfwprofile ns-aaa-default-appfw-profile -bypasslist "CLIENT.IP.DST.EQ(192.0.2.255)" -valueType expression
<!--NeedCopy-->
调试日志记录
下面是 ns.log 文件中出现的针对 NetScaler Web Application Firewall 阻止的用户请求的错误消息示例:
Mar 22 07:04:26 <local0.info> 192.0.2.4 03/22/2024:07:04:26 GMT 0-PPE-0 : default APPFW APPFW_SCHEMA_VALUE_INCORRECT 864 0 : 10.106.31.93 107-PPE0 - ns-aaa-default-appfw-profile Parameter value incorrect as per API Spec: (ns-aaa-spec) for Endpoint: (GET https://192.0.2.5/oauth/idp/login?client_id=test&response_type=code&scope=openid%20profile&redirect_uri=https%3A%2F%2Foauthrp.aaa.local%2Foauth%2Flogin&state=Y3R4PU9tNzJ5WkNlTGJaSVhBb1lXM21ZVm40N0ZfQ1JzNjM1OGhvWEpRWkpDVFV1ZkY5U1hoOV9Edndfa282bHZ1ejBqQUFRU0hsbnBJTzF5U0NjbThQdVlqbm1Lb01ESHk5aFVVS19WR0xiaTgtVE9GaHRZZVBYWWJ3Q2F6d2JoZk5QX3hlY09BY2t1NHJUYlFqODZiaHhaZkU3RVdzJTNEA) <blocked>
在前面的示例中,指定了配置文件名称和端点 URL 以帮助用户进行分析和配置放宽规则。
以下 stat
命令显示被流量管理和身份验证虚拟服务器阻止的用户请求的计数器:
stat aaa | grep -i blocked
Total AAA Waf blocked hits 0 15
Total AAATM Waf blocked hits 0 1
<!--NeedCopy-->
以下 stat
命令显示 API 规范文件的计数器:
stat apispec
API spec(s) Summary hits validate unmatched
ns-a...-spec 0 0 0
ns-aaa-spec 15 12 0
ns-vpn-spec 4 4 0
aaa 0 0 0
<!--NeedCopy-->
动态更新 NetScaler 提供的新 API 规范文件
启用 Web Application Firewall 参数后,NetScaler 使用以下内置 API 规范文件进行 API 架构验证。
- ns-aaatm-spec:此文件对流量管理虚拟服务器的传入请求执行 API 架构验证。
- ns-aaa-spec:此文件对传入到身份验证虚拟服务器的请求执行 API 架构验证。
- ns-vpn-spec:此文件对传入 VPN 虚拟服务器的请求执行 API 架构验证。
在 GUI 上,您可以通过导航到安全 > NetScaler Web App Firewall > 导入 > API 规范导入来找到这些文件。
您可以使用 NetScaler 提供的 API 规范文件动态更新内置 API 规范文件。在 GUI 上执行以下步骤:
-
导航到安全 > NetScaler Web App Firewall > 导入 > API 规范导入。
-
选择 API 规范文件,然后单击“编辑”。
-
在 API 规范导入对象页面上,单击“文件”。
-
上载新的 API 架构文件,然后单击“继续”。
备注:
- 不要重命名 NetScaler 提供的 API 规范文件。
- 确保选中“加密”复选框。
-
单击 Done(完成)。
有关导入文件的更多详细信息,请参阅导入。
限制
此功能目前适用于默认分区中的流量。
引用
-
有关 NetScaler Web Application Firewall 功能的详细信息,请参阅 NetScaler Web Application Firewall 简介。
-
有关 AppFlow 功能的更多信息,请参阅 AppFlow。
-
有关常见问题解答的详细信息,请参阅身份验证、授权和审核。