使用 NetScaler Web 应用防火墙来保护 AWS API 网关
您可以在 AWS API Gateway 前部署 NetScaler 设备,并保护 API 网关免受外部威胁。NetScaler Web App Firewall (WAF) 可以防御您的 API 免受 OWASP 十大威胁和零日攻击。NetScaler Web App Firewall 在所有 ADC 外形规格上使用单一代码库。因此,您可以在任何环境中一致地应用和实施安全策略。NetScaler Web App Firewall 易于部署,并以单一许可证形式提供。NetScaler Web App Firewall 为您提供以下功能:
- 简化配置过程
- 机器人管理
- 全面可见性
- 整理来自多个来源的数据并在统一屏幕中显示
除了 API 网关保护之外,您还可以使用其他 NetScaler 功能。有关更多信息,请参阅 NetScaler 文档。此外,为了避免数据中心故障转移并最大限度地减少停机时间,您可以将 ADC 部署在可用区内或跨可用区的高可用性配置中。您还可以使用或配置具有自动缩放功能的集群。
以前,AWS API Gateway 不支持保护其背后应用程序所需的防护措施。如果没有 Web Application Firewall (WAF) 保护,API 容易受到安全威胁。
在 AWS API 网关前部署 NetScaler 硬件设备
在以下示例中,NetScaler 设备部署在 AWS API 网关前。

假设有一个针对 AWS Lambda 服务的真实 API 请求。此请求可以是 Amazon API Gateway 文档 中提到的任何 API 服务。如上图所示,流量流如下:
- 客户端向 AWS Lambda 函数 (XYZ) 发送请求。此客户端请求被发送到 NetScaler 虚拟服务器 (192.168.1.1)。
- 虚拟服务器检查数据包并查找任何恶意内容。
- NetScaler 设备触发重写策略以更改客户端请求中的主机名和 URL。例如,您想将
https://restapi.citrix.com/default/LamdaFunctionXYZ更改为https://citrix.execute-api.<region>.amazonaws.com/default/LambdaFunctionXYZ。 - NetScaler 设备将此请求转发到 AWS API 网关。
- AWS API 网关进一步将请求发送到 Lambda 服务并调用 Lambda 函数“XYZ”。
- 同时,如果攻击者发送包含恶意内容的 API 请求,则恶意请求将到达 NetScaler 设备。
- NetScaler 设备检查数据包并根据配置的操作丢弃数据包。
配置启用 WAF 功能的 NetScaler 设备
要在 NetScaler 设备上启用 WAF,请执行以下步骤:
- 添加内容交换或负载平衡虚拟服务器。假设虚拟服务器的 IP 地址是 192.168.1.1,它解析为域名 (restapi.citrix.com)。
- 在 NetScaler 虚拟服务器上启用 WAF 策略。有关更多信息,请参阅配置 Web App Firewall。
- 启用重写策略以更改域名。假设您希望将传入的对“restapi.citrix.com”域名的负载均衡器请求重写为后端 AWS API 网关的“citrix.execute-api.
<region>.amazonaws”域名。 -
在 NetScaler 设备上启用 L3 模式,使其充当代理。使用以下命令:
enable ns mode L3 <!--NeedCopy-->
In Step 3 of the preceding example, let’s say the website administrator wants the NetScaler appliance to replace the “restapi.citrix.com” domain name with “citrix.execute-api.<region>.amazonaws.com” and the URL with “default/lambda/XYZ”.
以下过程描述了如何使用重写功能更改客户端请求中的主机名和 URL:
- 使用 SSH 协议登录到 NetScaler 设备。
-
添加重写操作。
add rewrite action rewrite_host_hdr_act replace "HTTP.REQ.HEADER(\"Host\")" "\"citrix.execute-api.<region>.amazonaws.com\"" add rewrite action rewrite_url_act replace HTTP.REQ.URL.PATH_AND_QUERY "\"/default/lambda/XYZ\"" <!--NeedCopy--> -
为重写操作添加重写策略。
add rewrite policy rewrite_host_hdr_pol "HTTP.REQ.HEADER(\"Host\").CONTAINS(\"restapi.citrix.com\") "rewrite_host_hdr_act add rewrite policy rewrite_url_pol "HTTP.REQ.HEADER(\"Host\").CONTAINS(\"restapi.citrix.com\") "rewrite_url_act <!--NeedCopy--> -
将重写策略绑定到虚拟服务器。
bind lb vserver LB_API_Gateway -policyName rewrite_host_hdr_pol -priority 10 -gotoPriorityExpression 20 -type REQUEST bind lb vserver LB_API_Gateway -policyName rewrite_url_pol -priority 20 -gotoPriorityExpression END -type REQUEST <!--NeedCopy-->
有关详细信息,请参阅配置重写以更改 NetScaler 设备上客户端请求中的主机名和 URL。
NetScaler 的功能和特性
NetScaler 设备除了保护部署外,还可以根据用户要求增强请求。NetScaler 设备提供以下主要功能。
-
负载均衡 API 网关: 如果您有多个 API 网关,您可以使用 NetScaler 设备对多个 API 网关进行负载均衡,并定义 API 请求的行为。
-
有多种负载均衡方法可用。例如,最少连接方法可避免 API 网关限制过载,自定义负载方法可在特定 API 网关上保持特定负载,等等。有关详细信息,请参阅负载均衡算法。
- SSL 卸载在不中断流量的情况下进行配置。
- 启用使用源 IP (USIP) 模式以保留客户端 IP 地址。
- 用户定义的 SSL 设置:您可以拥有自己的 SSL 虚拟服务器,并使用自己的签名证书和算法。
- 备份虚拟服务器:如果 API 网关无法访问,您可以将请求发送到备份虚拟服务器以进行进一步操作。
- 还有许多其他负载均衡功能可用。有关详细信息,请参阅在 NetScaler 设备上均衡流量。
-
-
身份验证、授权和审计: 您可以定义自己的身份验证方法,如 LDAP、SAML、RADIUS,并授权和审计 API 请求。
-
响应程序: 您可以在关机期间将 API 请求重定向到其他 API 网关。
-
速率限制: 您可以配置速率限制功能,以避免 API 网关过载。
-
更高的可用性: 您可以在高可用性设置或集群设置中配置 NetScaler 设备,为您的 AWS API 流量提供更高的可用性。
-
REST API: 支持 REST API,可用于自动化云生产环境中的工作。
-
监控数据: 监控并记录数据以供参考。
NetScaler 设备提供了更多功能,可以与 AWS API 网关集成。有关详细信息,请参阅 NetScaler 文档。