为七层CLB(HTTP/HTTPS)开启WAF防护

如果您已创建阿里云传统型负载均衡(Classic Load Balancer,简称CLB)实例,且已为端口添加HTTPHTTPS监听,您可以将该端口添加到Web应用防火墙(Web Application Firewall,简称WAF),将Web业务引流到WAF防护。本文介绍如何为七层CLB(HTTP/HTTPS)开启WAF防护。

背景信息

CLB通过设置虚拟服务地址,将添加的同一地域的多台云服务器虚拟成一个高性能和高可用的后端服务池,并根据转发规则,将来自客户端的请求分发给后端服务器池中的云服务器。更多信息,请参见什么是传统型负载均衡CLB

WAF支持为七层CLB实例开启安全防护。将七层CLB实例接入WAF后,实例所有的Web业务流量将被指定网关牵引到WAF进行检测。WAF过滤Web应用攻击后,将正常的业务流量转发回CLB服务器。具体网络架构如下图所示:

image

使用限制

云产品接入适用于快速将阿里云ALB、MSE、FC、CLB、ECS、NLB、SAE 2.0APIG资源接入WAF防护。如需防护非阿里云资源的Web应用,请通过CNAME接入方式将域名下业务接入WAF,具体操作请参见添加域名

限制项类型

描述

支持的实例

同时满足:

  • 公网实例

  • IPv6版本实例

  • 实例未开启双向认证

支持的地域

  • 中国内地:西南1(成都)、华北2(北京)、华北3(张家口)、华东1(杭州)、华东2(上海)、华南1(深圳)、华北1(青岛)。

  • 非中国内地:中国(香港)、马来西亚(吉隆坡)、印度尼西亚(雅加达)。

引流端口配置的数量

与防护对象数量保持一致:

  • WAF包年包月实例:基础版最多300个;高级版最多600个;企业版最多2,500个;旗舰版最多10,000个。

  • WAF按量付费实例:最多10,000个。

TLS安全策略

配置HTTPS监听的引流端口仅支持CLB内置的TLS安全策略。如果该端口配置了内置TLS安全策略以外的其他自定义TLS安全策略,会导致接入失败。更多信息,请参见TLS安全策略有哪些

业务同时接入DDoS高防和WAF

如果您的业务需要同时接入DDoS高防和WAF,则只有在业务通过域名接入(即七层接入模式)接入DDoS高防时,该业务才支持通过透明接入模式接入WAF。

前提条件

  • 已开通WAF 3.0服务。具体操作,请参见开通包年包月WAF 3.0开通按量付费WAF 3.0

  • 已创建满足使用限制的CLB实例,且已为CLB实例添加HTTPHTTPS监听。关于使用限制描述,请参见使用限制。关于为CLB实例添加HTTPHTTPS监听的具体操作,请参见添加HTTP监听添加HTTPS监听

  • 如果您开通的是包年包月实例,请确认您的实例还可以添加防护对象。否则,将无法进行云产品接入。

    您可以访问防护对象页面,查看实例还可以添加的防护对象数。image.png

添加引流端口

重要
  • 实例接入WAF时,Web业务可能会出现秒级闪断。在客户端可自动重连的情况下该闪断会自动恢复,不会对您的业务造成影响,请您关注业务并根据业务系统评估准备重连或回源等相关容灾机制。

  • CLB(HTTP/HTTPS)实例接入WAF后,如果进行如下操作,引流端口会自动取消接入。您需要重新添加端口,否则,业务流量将不会经过WAF防护。

    • 更换实例上绑定的公网IP

    • 引流端口的证书更换为非数字证书管理服务(原 SSL 证书)下发的证书

    • 开启双向认证

    • 接入WAF防护的监听端口被删除

    • CLB实例被删除

  1. 登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地

  2. 在左侧导航栏,单击接入管理

  3. 选择云产品接入页签,在左侧云产品类型列表,选择CLB(HTTP/HTTPS),单击接入

  4. 根据页面提示,单击立即授权,完成云产品授权。

    完成后,阿里云将自动为您创建WAF服务关联角色AliyunServiceRoleForWAF。您可以在RAM控制台身份管理 > 角色页面,查看阿里云为WAF自动创建的服务关联角色。

    说明

    如果您已经完成云产品授权,则授权页面不会出现,您可以直接执行后续步骤。

  5. 接入资产- 七层CLB面板,完成如下配置。

    image.png

    配置项

    相关操作

    选择需要添加的实例&端口

    1. 同步最新资产

      如果要添加的实例未同步到实例列表,单击同步最新资产,更新实例列表。

    2. 添加端口

      1. 定位到要添加的实例,单击操作列的添加端口

      2. 选择要添加的HTTPHTTPS端口,单击确定

        重要
        • 如果要添加HTTPS端口,请确认该端口配置的证书是通过阿里云数字证书管理服务(原 SSL 证书)购买的,或已上传到数字证书管理服务(原 SSL 证书)。否则会因为WAF证书来源校验失败,而造成实例接入失败。更多信息,请参见添加HTTPS引流端口时,显示CLB证书不全,该如何处理?

        • 七层CLB(HTTP/HTTPS)实例存在过期证书或来源为手动上传证书,无法同步CLB实例证书。您需要替换过期证书或把来源为手动上传的证书更换为数字证书管理服务(原SSL)的证书,登录SSL证书控制台

    WAF前是否有七层代理(高防/CDN等)

    如果网站在接入WAF前启用了其他七层代理服务(例如DDoS高防、CDN等),配置该功能。

    • 选择(默认),表示WAF收到客户端直接发起的业务请求(不是从其他代理服务转发的请求)。

      说明

      WAF直接取与WAF建立连接的IP(来自请求的REMOTE_ADDR字段)作为客户端IP。

    • 选择,表示WAF收到的业务请求来自其他七层代理服务转发(不是客户端直接发起的请求)。为保证WAF可以获取真实的客户端IP进行安全分析,您需要进一步设置客户端IP判定方式

      • X-Forwarded-For中的第一个IP作为客户端源IP(默认)

        WAF默认读取请求Header字段X-Forwarded-For(XFF)中的第一个IP地址作为客户端IP。

      • 【推荐】取指定Header字段中的第一个IP作为客户端源IP,避免XFF伪造

        如果您的网站业务已通过其他代理服务的设置,规定将客户端源IP放置在某个自定义的Header字段(例如,X-Client-IP、X-Real-IP),则您需要选择该选项,并在指定Header字段框中输入对应的Header字段。

        说明

        推荐您在业务中使用自定义Header存放客户端IP,并在WAF中配置对应Header字段。该方式可以避免攻击者伪造XFF字段,躲避WAF的检测规则,提高业务的安全性。

        支持输入多个Header字段。每输入完一个Header字段,按回车进行确认。如果设置了多个Header,WAF将按顺序尝试读取客户端IP。如果第一个Header不存在,则读取第二个,以此类推。如果所有指定Header都不存在,则读取XFF中第一个IP地址作为客户端IP。

    资源组

    从资源组列表中选择该域名所属资源组。如果不选择,则默认加入默认资源组

    说明

    您可以使用资源管理服务创建资源组,根据业务部门、项目等维度对云资源进行分组管理。更多信息,请参见创建资源组

    高级设置

    • 通过X-Forwarded-Proto头字段获取WAF的监听协议

      WAF 3.0 会默认为经过的 HTTP 请求自动插入 X-Forwarded-Proto 头部,用于标识与 WAF 之间的通信协议使用的是HTTP还是HTTPS协议访问代理服务器。如果您的网站应用程序无法正确处理该头部,可能会导致一些兼容性问题,影响业务正常运行。您可以选择关闭 WAF 自动插入该头部的功能,避免此类问题发生。

    • 启用流量标记

      启用流量标记可以帮助源站区分经过WAF的请求,获取客户真实源IP或源端口。

      例如,如果攻击者在域名接入WAF前,已获取源站IP信息,并通过购买其他WAF实例,将请求回源到目标源站时,您可以在源站对启用流量标记的字段进行校验。如果请求中存在指定标记字段,则为WAF检测后的正常请求,放行该请求;如果请求中不存在指定标记字段,则为攻击者请求,拦截该请求。

      您可以配置如下类型的标记字段:

      • 自定义Header

        通过配置HeaderHeader,使WAF在回源请求中添加该Header信息,标记经过WAF的请求(区分没有经过WAF的请求,便于您的后端服务统计分析)。

        例如,您可以使用ALIWAF-TAG: Yes标记经过WAF的请求,其中,ALIWAF-TAGHeader名,YesHeader值。

      • 客户端真实源IP

        通过配置真实客户端源IP所在的头部字段名,WAF可记录该头部字段并将该头部字段传递回源站。关于WAF判定客户端真实源IP的具体规则,请参见WAF前是否有七层代理(高防/CDN等)参数的描述。

      • 客户端真实源端口

        通过配置真实客户端源端口所在的头部字段名,WAF可记录该头部字段并将该头部字段传递回源站。

      重要

      请不要填写标准的HTTP头部字段(例如User-Agent等),否则会导致标准头部字段内容被自定义的字段值覆盖。

      单击新增标记,可以增加标记字段。最多支持设置5个标记字段。

    • 配置回源长连接

      如果WAF与您的源站之间出现长连接超时响应问题时,您可以根据实际业务情况,调节长连接超时时间、复用次数、空闲长连接超时时间。

      • 设置读连接超时时间:WAF等待源站响应的时间。超过该时间,则WAF断开该连接。默认值为120s,可配置范围为1s~3600s。

      • 设置写连接超时时间:WAF向源站发送请求的时间。超过该时间,则源站断开该连接。默认值为120s,可配置范围为1s~3600s。

      • 回源长连接:如果您需要配置长连接的复用次数或空闲长连接超时间,您可以开启该功能,并设置以下参数。

        • 复用长连接的请求个数:WAF可以向源站同时发送的请求或接收的响应的个数。默认值为1000个,可配置范围为60个~1000个。

        • 空闲长连接超时时间:空闲长连接的关闭时间。默认值为3600s,可配置范围为10s~3600s。

  6. 确认并选中要添加的实例后,单击确定

    完成接入后,WAF会自动生成一个命名为“实例id-端口-资产类型”的防护对象,并为该防护对象默认开启基础防护规则。您可以在接入列表,单击已接入的实例ID,在防护对象页面,查看自动添加的防护对象,并为其配置防护规则。具体操作,请参见防护配置概述防护对象

管理WAF

WAF侧管理WAF防护

  1. 登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地

  2. 在左侧导航栏,单击接入管理

  3. 管理WAF防护

    • 云产品接入页签,从左侧云产品类型列表中选择CLB(HTTP/HTTPS),查看已接入的CLB实例。

    • 设置防护对象和防护规则

      开启WAF防护后,WAF会自动生成一个后缀为-clb7的防护对象,并为该防护对象默认开启基础防护规则。您可以在接入列表,单击已接入的实例ID,在防护对象页面,查看自动添加的防护对象,并为其配置防护规则。具体操作,请参见防护配置概述image

    • 查看源站服务器和取消接入

      实例接入WAF后,您可以查看源站服务器的详细防护信息,以及在需要紧急容灾的情况下强制关闭引流或删除引流端口。

      • CLB(HTTP/HTTPS)分页,单击目标实例前的image.png图标,展开查看该实例下已添加到WAF防护的端口。image.png

      • 查看端口详情:单击端口详情,查看端口、协议、配置的证书信息,设置WAF前是否有七层代理(高防/CDN等)启用流量标记(高级设置)、配置回源长连接(高级设置)。

      • 取消接入:单击目标实例名称操作列的取消接入,在取消接入对话框,单击确定

        重要
        • 取消接入WAF时,Web业务可能会出现秒级闪断。在客户端可自动重连的情况下该闪断会自动恢复,不会对您的业务造成影响,请您关注业务并根据业务系统评估准备重连或回源等相关容灾机制。

        • 取消接入后,您资产上的流量将不再受到WAF保护,您可以单击接入,重新添加端口。具体操作,请参见添加引流端口

更新引流端口绑定的证书

如果证书即将到期或其他原因导致证书发生变更(例如证书被吊销)时,您需要更新引流端口绑定的证书。

说明
  • 证书的剩余有效期不足30个自然日时,WAF会在接入列表的证书信息处,通过image.png图标,提示您的证书即将过期,请尽快更新证书。

  • 如果您希望在证书即将到期时,收到邮件、短信等提醒,您可以设置SSL证书消息提醒,具体操作,请参见设置SSL证书消息提醒

  • 为避免您的业务因证书到期无法正常使用,您可以开通阿里云数字证书管理服务(原 SSL 证书)的证书托管服务,在证书即将到期时帮您自动申请并更新证书。更多信息,请参见什么是托管服务

具体操作如下所示:

  1. 续费证书或将证书上传到数字证书管理服务(原 SSL 证书)。具体操作,请参见SSL证书续费上传和共享SSL证书

  2. 同步证书到七层CLB实例。

    • 数字证书管理服务(原 SSL 证书)控制台部署证书到七层CLB实例。具体操作,请参见部署SSL证书到阿里云产品

    • 负载均衡控制台更新证书。具体操作,请参见替换证书

    如果在 CLB 控制台直接更换证书,WAF 会自动同步。如果从数字证书管理服务(原 SSL 证书)控制台更新 CLB 上的证书,您需要在 WAF 控制台执行如下操作:

    1. 接入管理 > 云产品接入 > CLB(HTTP/HTTPS)页签,单击接入

    2. 接入资产- 七层CLB面板,单击同步最新资产,手动同步更新。

  3. 如果引流端口更换的证书为非数字证书管理服务(原 SSL 证书)购买的证书,引流端口会自动取消接入。您需要在更换证书后重新添加端口,具体操作,请参见

重要

如果对应的七层CLB实例关联有过期证书,则WAF侧无法同步最新证书,需要将过期证书删除后再同步最新证书。

CLB侧管理WAF防护

  1. 登录传统型负载均衡CLB控制台

  2. 在顶部菜单栏,选择实例所属的地域。

  3. 管理WAF防护。

    操作

    步骤

    查看实例是否开启WAF防护

    选择以下任意一种方式查看实例是否开启WAF防护。显示防护中,表示已开启WAF防护。

    方式一:在实例管理页面,找到目标实例,将鼠标悬停在实例名称后的未开启图标,在气泡框的Web安全防护区域,查看防护状态。

    方式二

    1. 实例管理页面,找到目标实例,单击实例ID。

    2. 实例详情页签,在基本信息区域查看WAF安全防护的状态。

    方式三

    1. 实例管理页面,找到目标实例,单击实例ID。

    2. 实例详情页签,单击安全防护页签,在Web应用安全防护区域查看防护状态。

    查看WAF安全报表

    查看WAF安全报表,请确保您的CLB实例已开启WAF防护。

    方式一:在实例管理页面,找到目标实例,将鼠标悬停在实例名称后的未开启图标,在气泡框的Web安全防护区域,单击查看WAF安全报表进入WAF 3.0控制台的安全报表页面查看。

    方式二

    1. 实例管理页面,找到目标实例,单击实例ID。

    2. 实例详情页签,在基本信息区域单击WAF安全防护右侧的查看WAF安全报表进入WAF 3.0控制台的安全报表页面查看。

    方式三

    1. 在实例管理页面,找到目标实例,单击实例ID。

    2. 实例详情页签,单击安全防护页签,在Web应用安全防护区域单击防护配置管理,在Web应用安全防护管理页面进入WAF 3.0控制台的安全报表页面查看。

    更多信息,请参见安全报表

    关闭WAF防护

    关闭WAF防护后,CLB实例上的业务流量将不再受WAF防护,安全报表中也不再包含相关业务流量的防护数据。

    重要

    ALB实例上的业务流量不受WAF防护后,WAF侧不会产生请求处理费。但您已经配置的防护规则仍会产生对应的功能费。建议您在取消业务接入前,先删除已配置的防护规则,避免产生额外计费。更多信息,请参见计费说明防护配置概述

    方式一:

    1. 实例管理页面,找到目标实例,在操作列选择选择 > 管理

    2. 监听页面,找到目标实例,将鼠标悬停在目标实例名称后的未开启图标,在气泡框中单击关闭防护

    3. 关闭Web应用防火墙防护对话框中,选择确定

    方式二:

    1. 实例管理页面,找到目标实例,单击实例ID。

    2. 实例详情页签,单击监听页签,找到目标实例,将鼠标悬停在目标实例名称后的未开启图标,在气泡框中单击关闭防护

    3. 关闭Web应用防火墙防护对话框中,选择确定

    方式三:

    1. 实例管理页面,找到目标实例,单击实例ID。

    2. 实例详情页签,单击安全防护页签,在Web应用安全防护区域,单击防护配置管理

    3. Web应用安全防护管理页面,在Web应用安全防护列,点击image图标,在关闭成功对话框中,选择确定

常见问题

  • 验证七层CLB(HTTP/HTTPS)是否成功接入WAF

    1. 在浏览器中输入域名进行访问测试,如果网站可以正常访问,则表示WAF接入成功。

    2. 在域名后输入SQL恶意攻击代码验证防护效果,例如xxx.xxxx.com?id=1 and 1=1,返回如下 405 拦截提示页面,则表示攻击被拦截。

      image.png

  • CLB提供基于四层 (TCP协议和UDP协议)和七层(HTTP协议和HTTPS协议)的负载均衡:

    • 四层监听将请求直接转发给后端服务器。客户端请求到达CLB后,CLB根据监听中配置的后端口修改报文的目的IP和目的端口,并将流量转发给对应的后端服务器,客户端和后端服务器建立TCP连接。

    • 七层监听原理上是反向代理的一种实现。客户端请求到达CLB后,CLB与后端服务器建立TCP连接,即再次通过新TCP连接HTTP协议访问后端服务器,而不是直接转发报文到后端服务器。七层监听比四层监听在底层实现上多了一个Tengine处理环节。此外,客户端端口不足、后端服务器连接过多等场景可能导致七层服务性能不高,如果您对性能有很高的要求,建议您选择四层监听。

    更多详细信息,请参见CLB监听概述

  • 为七层CLB(HTTP/HTTPS)开启WAF防护 ,可以把HTTP、HTTPS 两个端口同时接入吗?

    可以。

  • CLB接入时报错提示“端口号为443CLB证书不全,请到CLB控制台重新选择来源是SSL证书服务的证书。”

    需要登录SSL证书控制台续费或者上传证书,在CLB重新选择这个证书,才可以在WAF中接入使用。具体操作,请参见SSL证书续费上传和共享SSL证书

相关文档