ADC

使用 NetScaler Web App Firewall 保护 AWS API 网关

您可以在 AWS API 网关前部署 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置于高可用性状态。您还可以使用或配置具有 AutoScale 功能的群集。

早些时候,AWS API Gateway 不支持保护其背后的应用程序所需的保护。如果没有 Web App Firewall (WAF) 保护,API 很容易受到安全威胁。

在 AWS API 网关前部署 NetScaler 设备

在以下示例中,NetScaler 设备部署在 AWS API 网关的前面。

在 AWS API 网关前部署 ADC

让我们假设有一个对 AWS Lambda 服务的真正的 API 请求。此请求可以针对 亚马逊 API 网关文档中提到的任何 API服务。如上图所示,流量流量如下:

  1. 客户端向 AWS Lambda 函数 (XYZ) 发送请求。此客户端请求将发送到 NetScaler 虚拟服务器 (192.168.1.1)。
  2. 虚拟服务器会检查数据包并检查是否存在任何恶意内容。
  3. NetScaler 设备会触发重写策略以更改客户端请求中的主机名和 URL。例如,您要将 https://restapi.citrix.com/default/LamdaFunctionXYZ 更改为 https://citrix.execute-api.<region>.amazonaws.com/default/LambdaFunctionXYZ
  4. NetScaler 设备将此请求转发到 AWS API 网关。
  5. AWS API 网关进一步将请求发送到 Lambda 服务并调用 Lambda 函数“XYZ”。
  6. 同时,如果攻击者发送包含恶意内容的 API 请求,则该恶意请求将登陆到 NetScaler 设备上。
  7. NetScaler 设备将检查数据包并根据配置的操作丢弃数据包。

配置启用 WAF 的 NetScaler 设备

要在 NetScaler 设备上启用 WAF,请执行以下步骤:

  1. 添加内容交换或负载平衡虚拟服务器。假设虚拟服务器的 IP 地址是 192.168.1.1,它解析为域名 (restapi.citrix.com)。
  2. 在 NetScaler 虚拟服务器上启用 WAF 策略。有关详细信息,请参阅 配置 Web App Firewall
  3. 启用重写策略以更改域名。比方说,您想将通过“restapi.citrix.com”域名向负载均衡器发送的传入请求更改为后端 AWS API 网关“citrix.execute-api”。<region>.amazonaws”域名。
  4. 在 NetScaler 设备上启用 L3 模式以使其充当代理。使用以下命令:

    enable ns mode L3
    <!--NeedCopy-->
    

在上述示例的步骤 3 中,假设网站管理员希望 NetScaler 设备将“restapi.citrix.com”域名替换为“citrix.execute-api”。<region>.amazonaws.com”和带有“default/lambda/XYZ”的 URL。

以下过程介绍如何使用重写功能更改客户端请求中的主机名和 URL:

  1. 使用 SSH 登录 NetScaler 设备。
  2. 添加重写操作。

    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-->
    
  3. 为重写操作添加重写策略。

    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-->
    
  4. 将重写策略绑定到虚拟服务器。

    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 Gateway 限制过载,自定义加载方法在特定 API 网关上维护特定负载,依此类推。有关更多信息,请参阅 负载平衡算法

    • SSL 卸载配置时不会中断流量。
    • 启用使用源 IP (USIP) 模式以保留客户端 IP 地址。
    • 用户定义的 SSL 设置:您可以使用自己签名的证书和算法拥有自己的 SSL 虚拟服务器。
    • 备份虚拟服务器:如果无法访问API网关,则可以将请求发送到备份虚拟服务器以执行进一步操作。
    • 还有许多其他负载平衡功能可用。有关更多信息,请参阅在 NetScaler 设备上对流量进行负载平衡
  • 身份验证、授权和审核: 您可以定义自己的身份验证方法(如 LDAP、SAML、RADIUS),并授权和审核 API 请求。

  • 响应者: 您可以在关闭期间将 API 请求重定向到其他 API Gateway。

  • 速率限制: 您可以配置速率限制功能,以避免API网关过载。

  • 更好的可用性: 您可以在高可用性设置或群集设置中配置 NetScaler 设备,以便为 AWS API 流量提供更好的可用性。

  • REST API: 支持 REST API,可用于在云生产环境中自动执行工作。

  • 监视数据: 监视和记录数据以供参考。

NetScaler 设备提供了更多功能,这些功能可以与 AWS API 网关集成。有关更多信息,请参阅 NetScaler 文档

使用 NetScaler Web App Firewall 保护 AWS API 网关