全部产品
Search
文档中心

Web 应用防火墙:为ECS开启WAF防护

更新时间:Nov 06, 2024

如果您已创建云服务器ECS(Elastic Compute Service)实例,您可以将实例的引流端口添加到Web应用防火墙(Web Application Firewall,简称WAF),将Web业务引流到WAF防护。本文介绍如何将ECS实例接入WAF。

背景信息

ECS是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。更多信息,请参见什么是云服务器ECS

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

image

使用限制

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

限制项类型

描述

支持的实例

同时满足:

  • 公网实例

  • 非IPv6版本实例

  • 实例未开启双向认证

支持的地域

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

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

引流端口配置的数量

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

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

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

支持的端口范围

支持防护0~65535范围内的任意端口,包括标准端口和非标端口。更多信息,请参见WAF支持的端口范围

业务同时接入DDoS高防和WAF

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

前提条件

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

  • 已创建满足使用限制要求的ECS实例。关于使用限制描述,请参见使用限制。关于创建ECS实例的具体操作,请参见创建实例

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

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

添加引流端口

重要
  • 秒级闪断是将实例接入WAF时可能会遇到的短暂连接中断现象,主要由DNS解析更新、网络配置变更和WAF初始化等操作引起。

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

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

    • ECS创建迁移任务,变更可用区

    • 实例被释放

  • ECS引流是对EIP或公网IP进行的引流。

  • ECS解绑EIP后引流会被自动删除。

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

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

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

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

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

    说明

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

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

    image.png

    配置项

    相关操作

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

    1. 同步最新资产

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

    2. 添加端口

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

      2. 填写要添加的端口信息,按回车进行确认。

        您输入的端口必须在可选端口范围。您可以单击查看端口范围,查看WAF支持的HTTP及HTTPS端口。更多信息,请参见WAF支持的端口范围

      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.0和1.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

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

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

      • 客户端真实源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后,您可以查看源站服务器的详细防护信息,以及在需要紧急容灾的情况下强制关闭引流或删除引流端口。

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

  2. ECS分页,单击目标实例前的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. 云产品接入页签,选择ECS分页,定位到目标实例,单击image.png图标,选择目标端口操作列的编辑证书

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

常见问题

如果您在接入过程中找不到需要接入的CLB实例或ECS实例,请参见接入配置页面找不到需要接入的CLB实例或ECS实例的排查方法