为CLB实例开启WAF防护

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

背景信息

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

WAF支持为CLB实例开启安全防护,将CLB实例的端口接入WAF后,端口承载的所有的Web业务流量将被指定网关牵引到WAF进行检测。WAF过滤Web应用攻击后,将正常的业务流量转发回CLB服务器。

说明

WAF支持防护七层与四层的CLB实例,对于四层CLB(TCP)实例,可以为其端口监听的HTTPHTTPS协议流量开启WAF防护,不支持转发防护其他非HTTPHTTPS协议的端口流量。

使用限制

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

限制项类型

描述

支持的CLB实例

同时满足:

  • 公网实例

  • IPv4版本实例

  • 非共享型CLB

支持的地域

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

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

引流端口配置的数量

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

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

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

TLS安全策略

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

端口配置

  • CLB实例端口不能开启双向认证

  • 只支持接入监听协议为TCPHTTP/HTTPS的端口

前提条件

添加引流端口

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

  • CLB实例接入WAF后,如果CLB实例被删除,接入WAF防护的监听端口被删除或更换实例上绑定的EIP时,引流端口会自动取消接入;如果配置了HTTP/HTTPS监听的CLB实例引流端口存在过期证书或使用了非数字证书管理服务(原 SSL 证书)下发的证书,或开启双向认证后,对应实例在WAF控制台会显示防护异常

    出现上述情况时,您需要先修正CLB实例配置后,再在WAF控制台重新接入,否则,业务流量将不会经过WAF防护。

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

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

  3. 选择云产品接入页签,在左侧云产品类型列表,选择传统型负载均衡CLB

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

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

    说明

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

  5. 在右侧列表,查看您的CLB实例及其WAF防护状态,如果找不到目标实例,请点击页面右上角同步资产。找到您希望接入WAFCLB实例,点击image.png展开详情,选择需要配置接入的端口,在操作列点击立即接入image

  6. 在弹出的对话框面板,完成如下配置。

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

    • 计划开启引流的7CLB实例端口若存在过期证书或来源为手动上传的证书,开启引流时WAF会因无法同步证书导致接入失败。您需要登录CLB控制台替换过期证书或把来源为手动上传的证书更换为数字证书管理服务(原SSL)的证书。

    配置项

    相关操作

    选择端口的协议类型(仅针对接入协议为TCPCLB端口)

    选择端口对应的协议类型。可选项:HTTPHTTPS

    选择HTTPS后,需要上传证书。

    说明
    • 云产品接入方式不支持上传国密证书。

    • 上传的默认证书和扩展证书的总数不能超过25个,如果需要上传更多证书请联系商务经理或者架构师。

    • 默认证书

      • 手动上传

        选中手动上传,并填写证书名称证书文件(格式示例:-----BEGIN CERTIFICATE-----......-----END CERTIFICATE-----)、私钥文件(格式示例:-----BEGIN RSA PRIVATE KEY-----......-----END RSA PRIVATE KEY-----)。

        重要
        • 如果证书是PEM、CER、CRT格式,您可以使用文本编辑器直接打开证书文件,并复制其中的文本内容;如果是其他格式(例如PFX、P7B等),您必须将证书文件转换成PEM格式后,才可以使用文本编辑器获取其中的文本内容。您可以登录数字证书管理服务控制台,使用证书格式转换工具进行转换。具体操作,请参见证书格式转换

        • 如果域名关联了多个SSL证书(例如,存在证书链),您必须将证书文件中的文本内容拼接后,再上传到WAF。

      • 选择已有证书

        如果您的证书为如下两种情况,您可以选中选择已有证书,从证书下拉列表中选择要上传到WAF的证书。

        • 证书已通过阿里云数字证书管理服务签发。

        • 证书为第三方证书,且已上传到数字证书管理服务

          重要

          选择上传到数字证书管理服务的第三方证书时,WAF控制台提示证书链完整性校验失败,使用该证书可能会影响您的业务访问,可能是选择的证书存在问题。您可以单击云盾-证书服务,在数字证书管理服务控制台重新上传新的证书。具体操作,请参见上传和共享SSL证书

    • 扩展证书

      如果您的实例配置了多个域名的HTTPS网站,可通过扩展证书导入多个不同域名对应的证书。扩展证书的上传方式与默认证书相同,具体操作,请参见默认证书

      说明

      在添加多个扩展证书时,请确保您选择的每一个证书都是有效的,如果存在过期的证书会导致添加失败。

    • 选中HTTPS后,还支持启用以下高级配置

      • 如果您的网站支持HTTP 2.0协议,您可以选中HTTP2,开启HTTP 2.0业务防护。

        说明

        HTTP 2.0协议的端口与HTTPS协议端口一致。

      • TLS协议版本

        自定义HTTPS通信中允许使用的TLS协议版本。如果客户端使用不符合要求的协议版本,WAF会丢弃其请求流量。此处设置的协议版本越高,通信安全性越好,但兼容性会有所降低。

        建议您根据网站本身的HTTPS配置,选择允许WAF监听的TLS协议版本。如果您不清楚网站的HTTPS配置,建议使用默认选项。

        可选项:

        • 支持TLS1.0及以上版本,兼容性最高,安全性较低(默认)

        • 支持TLS1.1及以上版本,兼容性较好,安全性较好

          使用该选项后,如果客户端使用TLS 1.0版本,将无法访问网站。

        • 支持TLS1.2及以上版本,兼容性较好,安全性最高

          使用该选项后,如果客户端使用TLS 1.01.1版本,将无法访问网站。

        如果您的网站支持TLS 1.3协议,请选中开启支持TLS1.3。WAF默认不监听TLS 1.3协议的客户端请求。

      • 加密套件

        自定义HTTPS通信中允许使用的加密套件。如果客户端使用不符合要求的加密套件,WAF会丢弃其请求流量。

        默认已选择WAF支持的全部加密套件。建议您只在网站只支持特定加密套件的前提下,再修改该配置。

        可选项:

        • 全部加密套件,兼容性较高,安全性较低(默认)

        • 协议版本的自定义加密套件、请谨慎选择,避免影响业务:如果您的网站本身只支持特定的加密套件,请选择该选项,并从WAF支持的加密套件中选择网站支持的加密套件。

          如果客户端使用其他加密套件,将无法访问网站。

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

    • 无其他代理服务,选择(默认)

      表示WAF收到的业务请求由客户端直接发起,而非通过其他代理服务转发。该场景下,WAF会直接获取与WAF建立连接的IP(来自请求的REMOTE_ADDR字段)作为客户端IP。

    • 有其他代理服务,选择

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

      可选项:

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

        WAF默认优先读取请求Header字段X-Real-IP作为客户端IP,如果X-Real-IP不存在,则读取字段X-Forwarded-For(XFF)中的第一个IP地址作为客户端IP。

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

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

        说明

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

        支持输入多个Header字段。每输入完一个Header字段,按回车进行确认。如果设置了多个Header,WAF将按顺序尝试读取客户端IP。如果第一个Header不存在,则读取第二个,以此类推。如果所有指定Header都不存在,优先尝试读取X-Real-IP字段,若仍无结果则采用X-Forwarded-For(XFF)头部中的首个IP地址作为客户端IP。

    资源组

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

    说明

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

    高级设置

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

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

    • 启用流量标记

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

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

      • 自定义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向源站发送请求的时间。超过该时间,则WAF断开该连接。默认值为120s,可配置范围为1s~3600s。

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

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

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

  7. 单击确定完成。

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

    说明

    您也可以勾选多个CLB实例批量接入,默认选中该实例下的所有HTTPHTTPS端口,TCP端口需要您添加成HTTP或者HTTPS端口后再进行添加。或点击一键全量接入,一键为所有实例的HTTPHTTPS端口接入WAF。

其他操作

查看源站服务器和管理引流端口

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

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

  3. 云产品接入页签,从左侧云产品类型列表中选择传统型负载均衡CLB,查看已接入的CLB实例。image

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

    • 取消接入:单击取消接入,在取消接入对话框,单击确定

      重要

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

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

更新引流端口绑定的证书

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

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

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

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

具体操作如下所示:

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

  2. 根据CLB实例协议类型,执行以下对应的步骤,同步证书到WAF。

    CLB协议为HTTP/HTTPS(七层)

    同步证书到CLB实例。

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

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

    如果在 CLB 控制台直接更换证书,WAF 会自动同步。如果从数字证书管理服务(原 SSL 证书)控制台更新 CLB 上的证书,您需要在 WAF 控制台接入管理页面右上角,单击同步资产

    如果引流端口更换的证书为手动上传至CLB实例的证书,引流端口会自动取消接入。您需要在更换证书后重新添加端口,具体操作,请参见添加引流端口

    重要

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

    CLB协议为TCP(四层)

    1. 云产品接入页签,选择传统型负载均衡CLB分页,定位到目标实例,单击image.png图标,选择目标端口操作列的编辑证书

    2. 默认证书区域,选中选择已有证书,并重新选择更换后的证书。

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防护,安全报表中也不再包含相关业务流量的防护数据。

    重要

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

    方式一:

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

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

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

    方式二:

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

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

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

    方式三:

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

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

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

常见问题

  • 验证CLB实例是否成功接入WAF

    在浏览器中输入域名进行访问测试,请确保网站可以正常访问,然后在域名后输入SQL恶意攻击代码验证防护效果,例如xxx.xxxx.com?id=1 and 1=1,返回如下 405 拦截提示页面,则表示攻击被拦截,WAF接入成功。

    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证书

相关文档