为四层CLB(TCP)开启WAF防护

如果您已创建阿里云传统型负载均衡(Classic Load Balancer,简称CLB)实例,且已为端口添加TCP监听,您可以添加实例的引流端口到Web应用防火墙(Web Application Firewall,简称WAF),将Web业务引流到WAF防护。本文介绍如何将四层CLB(TCP)实例接入到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个。

业务同时接入DDoS高防和WAF

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

前提条件

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

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

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

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

添加引流端口

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

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

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

      说明

      NLB实例出现公网IP变化时,引流不会被取消

    • 开启双向认证

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

    • 实例被删除

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

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

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

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

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

    说明

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

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

    image.png

    配置项

    相关操作

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

    1. 可选:同步最新资产

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

    2. 添加端口

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

      2. 选择要添加端口

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

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

        说明

        上传的默认证书和扩展证书的总数不能超过10个。

        • 默认证书

          • 手动上传

            选中手动上传,并填写证书名称证书文件(格式示例:-----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后,还支持启用以下高级配置

          • 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前是否启用了其他七层代理服务(例如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后,您可以查看源站服务器的详细防护信息,以及在需要紧急容灾的情况下强制关闭引流或删除引流端口。

  1. 接入管理页面,单击云产品接入页签。

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

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

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

      重要

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

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

更新引流端口绑定的证书

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

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

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

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

具体操作如下所示:

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

  2. 同步证书到WAF。

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

    • WAF控制台更新证书。

      1. 云产品接入页签,选择CLB(TCP)分页,定位到目标实例,单击image.png图标,选择目标端口操作列的编辑证书

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

常见问题

接入配置页面找不到需要接入的CLB实例或ECS实例的排查方法