为ECS实例开启WAF防护

为保护暴露在公网的云服务器ECS实例免受Web攻击,可以为其开启Web应用防火墙(WAF 3.0)防护。该模式无需更改现有网络架构或DNS配置,仅需配置引流端口,系统自动将ECS实例指定引流端口上的公网流量引导至WAF,进行安全检测与过滤,从而实现高效且透明的防护。

接入原理

image

WAF通过透明代理方式接入ECS实例。仅需配置ECS实例的引流端口,系统即自动调整底层网络路由策略,将该端口上的全部HTTP/HTTPS流量引导至WAF进行安全检测。WAF在拦截恶意请求后,将正常请求转发到源ECS实例。此模式的防护范围覆盖指定端口上的所有域名,并支持仅使用公网IP(无域名)的业务。

适用范围

ECS 实例不满足以下要求,请使用CNAME接入

  • 实例公网要求:必须拥有公网IP地址(固定公网IP 或 EIP),不支持实例无公网IP但通过 NAT 网关提供公网访问的场景。

  • 账号要求:ECS实例与WAF实例必须属于同一阿里云账号(已配置企业多账号统一管理除外)。

  • 实例地域要求

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

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

重要

接入WAF时,Web业务可能出现短暂的秒级连接中断。建议选择业务低峰期进行操作,并在接入完成后关注业务状态。若客户端或服务具备有效的重连机制,此中断将自动恢复,不会对业务运行造成影响。

基础配置

在确认满足以上适用范围后,可以开始进行基础配置。同时,也可以参考高级配置,进行关于TLS版本、多证书、长连接、流量识别(WAF前有七层代理时获取真实IP)等配置。

  1. 进入控制台

    登录Web应用防火墙3.0控制台,在顶部菜单栏选择资源组和地域(中国内地非中国内地),然后在左侧导航栏单击接入管理选择云产品接入页签,在左侧云产品类型列表,选择云服务器ECS

  2. 云产品授权(首次配置)

    根据页面提示,单击立即授权,完成云产品授权。可以在RAM控制台身份管理 > 角色页面,查看创建的服务关联角色AliyunServiceRoleForWAF

  3. 接入ECS实例:

    1. 在右侧列表,查看ECS实例及其WAF防护状态,找到目标ECS实例,在操作列单击立即接入。如果找不到目标实例,请单击页面右上角同步资产,若仍无法找到,说明实例不满足适用范围image

    2. 选择需要添加的实例&端口区域,单击操作列的添加端口。在弹出的添加端口页面,根据网站的协议类型进行配置。

      说明

      每次仅能添加一个端口。如需添加多个端口,请重复该步骤逐一添加。

      如何确定网站使用的端口

      • 标准端口 (默认):Web 服务默认使用标准端口,访问时无需在域名后指定。

        • HTTP: 例如 http://yourdomain.com表示使用 80 端口。

        • HTTPS:例如 https://yourdomain.com表示使用 443 端口。

      • 非标准端口:若网站使用非标准端口,访问时端口号会直接显示在域名之后,格式为 域名:端口号

        • HTTP:例如http://yourdomain.com:8080表示使用 8080 端口。

        • HTTPS:例如https://yourdomain.com:8443表示使用 8443 端口。

        说明

        为确保准确,建议检查 Web 服务器(如 Nginx、Apache 等)的配置文件(如 nginx.conf),以获取最准确的端口信息。

      HTTP网站

      1. 端口区域,填写网站使用的端口。

      2. 协议类型区域,选择HTTP

      HTTPS网站

      1. 端口区域,填写网站使用的端口。

      2. 协议类型区域,选择HTTPS

      3. 如需自定义配置HTTP/2TLS协议版本加密套件扩展证书(多个证书),请参见高级配置;否则,请保持其他配置项为默认设置。

      4. 默认证书区域,选择证书上传方式:

        • 手动上传:适用于证书未上传至阿里云数字证书管理服务(原 SSL 证书)的场景。

        • 选择已有证书:从阿里云数字证书管理服务(原 SSL 证书)中选择已签发或已上传的证书。

          手动上传

          • 证书名称:为证书设置一个唯一的名称,不能与已上传的证书名称重复。

          • 证书文件:请使用文本编辑器打开并粘贴 PEM、CER、CRT 格式的证书文本内容。

            格式示例:-----BEGIN CERTIFICATE-----......-----END CERTIFICATE-----

            • 格式转换:若证书是 PFX、P7B 等格式,请使用证书工具将其转换为 PEM 格式。

            • 证书链:若包含中间证书,请按照 “服务器证书、中间证书” 的顺序拼接后粘贴。

          • 私钥文件:请使用文本编辑器打开并粘贴 PEM 格式的私钥文本内容。

            格式示例:-----BEGIN RSA PRIVATE KEY-----......-----END RSA PRIVATE KEY-----

          选择已有证书

          从证书下拉列表中选择要上传到WAF的证书。

          说明

          WAF控制台提示“证书链完整性校验失败,使用该证书可能会影响您的业务访问”,表示证书链存在完整性问题。请检查证书内容的正确性与完整性后,在数字证书管理服务控制台重新上传。具体操作,请参见上传、同步和共享SSL证书

    3. 如需自定义配置WAF前有七层代理(如CDN)资源组X-Forwarded-Proto头字段控制流量标记回源超时时间回源长连接,请参见高级配置。否则,请单击确定应用默认配置。

  4. 验证防护效果

    接入完成后,通过以下方式验证防护效果:在浏览器访问ECS实例上托管的网站,并在其URL后附加Web攻击测试代码(例如http://yourdomain.com/alert(xss)),如果返回WAF405拦截提示页面,表示攻击被拦截,WAF防护成功。

重要

完成接入后,需要确保证书处于有效期内且实例状态正常。在证书过期,实例的公网IP变更等情况下,WAF的防护将失效。更多信息,请参见更新引流端口绑定的证书实例变更后重新接入WAF

高级配置

增强安全防护等级(HTTPS)

说明

HTTPS相关配置必须在添加端口页选择协议类型HTTPS后才支持配置。

  • HTTP/2 支持

    • 配置说明:HTTP/2 是 HTTP/1.1 的主要升级版本,可提升网页加载速度并降低延迟。若网站支持 HTTP/2,可启用该功能。启用后,HTTP/2 使用的端口与 HTTPS 一致。

    • 操作步骤:在添加端口页选中HTTP2启用。

  • TLS协议版本控制

    • 配置说明:定义允许的 TLS 协议版本。版本越高,安全性越强,但对旧客户端的兼容性越低。若客户端使用未被允许的协议版本,WAF会丢弃其请求。

    • 操作步骤:在添加端口页的TLS协议版本处进行选择。

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

      • 支持TLS1.1及以上版本,兼容性较好,安全性较好:将导致使用TLS 1.0协议的老旧客户端无法访问网站。

      • 支持TLS1.2及以上版本,兼容性较好,安全性最高:满足最新的安全合规要求,但将导致使用TLS 1.01.1协议的老旧客户端无法访问网站。

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

  • 加密套件选择

    • 配置说明:定义允许的加密套件。若客户端使用未被允许的加密套件,WAF会丢弃其请求。

    • 操作步骤:在添加端口页的加密套件处进行选择。

      • 全部加密套件,兼容性较高,安全性较低

      • 协议版本的自定义加密套件、请谨慎选择,避免影响业务:如果网站仅支持特定的加密套件,请选择此项,并从支持的加密套件列表中进行选择。

        支持的加密套件

        • 强加密套件

          • ECDHE-ECDSA-AES128-GCM-SHA256

          • ECDHE-ECDSA-AES256-GCM-SHA384

          • ECDHE-ECDSA-AES128-SHA256

          • ECDHE-ECDSA-AES256-SHA384

          • ECDHE-RSA-AES128-GCM-SHA256

          • ECDHE-RSA-AES256-GCM-SHA384

          • ECDHE-RSA-AES128-SHA256

          • ECDHE-RSA-AES256-SHA384

          • ECDHE-ECDSA-AES128-SHA

          • ECDHE-ECDSA-AES256-SHA

        • 弱加密套件

          • AES128-GCM-SHA256

          • AES256-GCM-SHA384

          • AES128-SHA256

          • AES256-SHA256

          • ECDHE-RSA-AES128-SHA

          • ECDHE-RSA-AES256-SHA

          • AES128-SHA

          • AES256-SHA

          • DES-CBC3-SHA

        说明

        ECDHE-RSA-AES128-SHA256 和 ECDHE-RSA-AES256-SHA384 加密套件使用 ECDHE 进行密钥交换,RSA 用于身份认证,采用 AES-CBC 加密模式。相比采用 AES-GCM 模式或 ECDSA 证书的加密套件,这类套件在安全性和性能上略逊一筹,部分安全扫描工具可能将其识别为弱加密套件。

  • 多个证书扩展

    • 配置说明:当ECS实例托管多个域名的HTTPS网站,且单张证书无法覆盖所有域名时,需为每个域名上传对应的证书。

    • 操作步骤:在添加端口页的扩展证书区域上传证书。上传方式与默认证书相同,具体操作,请参见默认证书

      说明

      添加多个扩展证书时,所有证书必须有效。任一证书过期将导致添加操作失败。

获取真实客户端信息

  • 代理场景下真实IP设定

    • 配置说明:WAF前存在七层代理(如CDN)时,需要为WAF设置客户端IP判定方式,确保WAF能够获取真实的客户端IP信息,以便进行安全分析(例如:安全报表攻击源IP)。

    • 操作步骤:在立即接入页的WAF前是否有七层代理(高防/CDN等)区域进行配置。

      否,无其他代理

      表示WAF收到的业务请求由客户端直接发起。

      是,有其他代理

      表示WAF收到的业务请求来自其他七层代理服务转发,需要进一步设置客户端IP判定方式

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

        选择此项后,WAF将按照以下顺序获取客户端IP:

        1. 从请求头部读取 X-Real-IP 作为客户端 IP。

        2. 若 X-Real-IP 不存在,则使用 X-Forwarded-For(XFF)中的首个 IP 地址作为客户端 IP。

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

        建议网站业务通过其他代理服务配置,将客户端源 IP 地址写入指定的自定义 Header 字段(例如X-Real-IP、X-Client-IP),并选择此配置,以防止攻击者通过伪造XFF字段绕过WAF的检测规则。

        指定Header字段框中填写对应的字段。支持输入多个Header字段。逐项输入后回车确认。如果设置了多个Header,WAF将按照以下顺序获取客户端IP:

        1. 按序匹配配置的指定Header字段

        2. 若所有指定Header都不存在,尝试读取X-Real-IP字段。

        3. 若仍无结果,则采用XFF中的首个IP地址作为客户端IP。

  • 流量标记启用

    • 配置说明:启用流量标记可使源站服务器区分经过WAF的请求,获取客户端真实源IP或源端口。

    • 操作步骤:在立即接入页展开高级设置,勾选启用流量标记后配置如下类型的标记字段。

      • 自定义Header:通过配置HeaderHeader,使WAF在回源请求中添加该Header信息,标识经过WAF的请求。

        例如,可以配置WAF-TAG: Yes标记,其中WAF-TAGHeader名,YesHeader值。配置后,服务器可基于该字段建立校验或访问控制策略,增强安全防护与请求识别能力。

        重要

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

      • 客户端真实源IP:通过配置真实客户端源IP所在的Header字段名,WAF可记录该Header字段并将其传递至源站服务器。关于WAF判定客户端真实源IP的具体规则,请参见代理场景下真实IP设定的描述。

      • 客户端真实源端口:通过配置真实客户端源端口所在的Header字段名,WAF可记录该Header字段并将其传递至源站服务器。

  • X-Forwarded-Proto头字段控制

    • 配置说明:WAF 默认在转发的 HTTP 请求中插入 X-Forwarded-Proto 头部,用于标识客户端与最近一跳七层代理建立连接所使用的协议。若网站无法正确处理该头部,请按以下步骤关闭自动插入功能。

    • 操作步骤:在立即接入页展开高级设置,取消勾选通过X-Forwarded-Proto头字段获取WAF的监听协议

优化回源链路质量

  • 回源超时时间调整

    • 配置说明:当源站服务器处理请求的响应时间较长,可能导致超时问题时,可配置WAF与源站交互的读写超时时间。

    • 操作步骤:在立即接入页展开高级设置,设置以下项目。

      • 设置读连接超时时间:等待源站服务器响应的超时时间,默认值为120s,可配置范围为1s~3600s。

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

  • 回源长连接启用

    • 配置说明:当存在例如高并发、频繁请求的场景时,启用WAF与源站服务器之间的长连接功能。

    • 操作步骤:在立即接入页展开高级设置,在回源长连接区域启用该功能并进行如下设置。

      • 复用长连接的请求个数:默认值为1,000个,可配置范围为60个~1,000个。

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

规划实例资源组

  • 资源规划

    • 配置说明:资源组用于简化资源管理和权限配置,提升管理效率。未指定资源组时,实例将加入默认资源组。更多信息,请参见资源组

    • 操作步骤:在立即接入资源组区域,从资源组下拉列表中选择该实例所属资源组。

后续步骤

查看并配置防护规则

完成接入后,WAF将自动创建一个名为实例id-端口-资产类型的防护对象,并为该防护对象默认启用Web核心防护规则等模块的防护规则,可以在防护配置 > 防护对象页面查看。如果默认的防护规则不满足业务需求,可以新建或编辑防护规则。更多信息,请参见防护配置概述

说明

若多个域名解析指向了同一ECS实例,并且需要单独为这些域名配置不同的防护规则,须手动将各域名添加为防护对象,详细信息,请参见手动添加防护对象

image

相关操作

更新引流端口绑定的证书

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

在阿里云购买新证书

  1. 数字证书管理服务(原 SSL 证书)控制台续费SSL证书,具体操作,请参见续费SSL证书

  2. 云产品接入页签,选择云服务器ECS,定位到目标实例,单击image.png图标,选择目标端口操作列的编辑证书

  3. 默认证书区域,选中选择已有证书,并选择新的证书,单击确定

已在其他平台购买新证书

  1. 从原购买平台下载证书文件。

  2. 云产品接入页签,选择云服务器ECS,定位到目标实例,单击image.png图标,选择目标端口操作列的编辑证书

  3. 默认证书区域,选中手动上传,并选择新的证书,填写如下信息后,单击确定

    • 证书名称:为证书设置一个唯一的名称,不能与已上传的证书名称重复。

    • 证书文件:请使用文本编辑器打开并粘贴 PEM、CER、CRT 格式的证书文本内容。

      格式示例:-----BEGIN CERTIFICATE-----......-----END CERTIFICATE-----

      • 证书链:若包含中间证书,请按照 “服务器证书、中间证书” 的顺序拼接后粘贴。

      • 格式转换:若证书是 PFX、P7B 等格式,请使用证书工具将其转换为 PEM 格式。

    • 私钥文件:请使用文本编辑器打开并粘贴 PEM 格式的私钥文本内容。

      格式示例:-----BEGIN RSA PRIVATE KEY-----......-----END RSA PRIVATE KEY-----

说明
  • 证书剩余有效期不足30个自然日时,WAF会在接入列表中通过image.png图标,提示证书即将过期,建议及时更新,以免影响业务正常运行。

  • 可以设置SSL证书消息提醒,在证书到期前通过邮件、短信等方式接收通知。具体操作,请参见设置SSL证书消息提醒

  • 为避免因证书过期而导致业务中断,建议开通阿里云数字证书管理服务(原 SSL 证书)的证书托管服务,在证书即将过期时自动申请并更新证书。更多信息,请参见什么是托管服务

接入回滚(取消接入)

  • 临时关闭WAF防护:若在接入后出现问题,例如出现大量误拦截,需要临时关闭WAF防护时,可以在WAF控制台的防护对象页面中,关闭WAF防护状态开关。更多信息,请参见一键关闭WAF防护功能

  • 取消接入:若不再希望使用WAFECS实例进行防护,可以按照以下步骤取消接入。

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

    2. 选择云服务器ECS,单击目标实例前的image.png图标,展开查看该实例下已添加到WAF防护的端口。image

    3. 单击取消接入,在取消接入对话框,单击确定

重要
  • 业务影响:取消接入WAF时,Web业务可能出现短暂的秒级连接中断。建议选择业务低峰期执行取消接入操作,并在取消完成后关注业务状态。若客户端或服务具备有效的重连机制,此中断将自动恢复,不会对业务运行造成影响。

  • 重新接入:取消接入后,资产上的流量将不再受到WAF保护,可以单击立即接入,重新配置引流端口。

  • 计费提示:当 WAF 实例为按量付费时,除请求处理费用外,还收取功能费用(包括实例本身及防护规则等)。如需终止使用 WAF 并停止计费,请参见关闭WAF

实例变更后重新接入WAF

WAF 通过绑定 ECS 实例的公网 IP 来提供防护。当实例的公网 IP 因以下任一操作而发生变更时,原有的引流端口配置将会失效,导致业务流量绕过 WAF,直接暴露于公网风险之中:

  • 释放ECS实例。

  • 更换ECS实例绑定的公网 IP。

  • 通过迁移任务变更ECS实例的可用区。

为恢复安全防护,此时必须在 WAF 控制台为变更后的ECS实例重新执行接入操作。

应用于生产环境

为确保在生产环境中的安全性和稳定性,在接入生产环境ECS实例时,建议遵循以下最佳实践。

  • HTTPS配置:建议在ECS实例中部署证书,并关注以下配置,以便高效管理证书。

    • 将证书文件上传至数字证书管理服务(原 SSL 证书)

    • WAF侧接入ECS实例时配置HTTPS类型的引流端口,建议在TLS协议版本控制区域,配置TLS1.2及以上版本。

    • 设置SSL证书消息提醒,在证书即将过期时及时更新。

  • 灰度策略:优先在业务低峰期接入非生产环境的ECS实例,运行一段时间以确认业务正常后,再接入生产环境的ECS实例。

  • 检查业务:接入完成后,可以通过如下方式确认业务是否正常。

    • 查看日志:查看日志中状态码200的占比是否有明显波动、QPS是否有明显突增突降等。若已启用WAF日志服务,可以参考WAF日志进行检查。

    • 业务监控:检查业务侧功能是否正常,例如用户访问、交易等功能。

  • 后续运维:生产环境接入完成后,需进行持续的运维工作,监控攻击与误拦截事件。

    • 事件处置:建议关注安全报表,并配置云监控通知,及时了解攻击事件与安全事件。

    • 调整规则:持续关注攻击日志,分析是否存在业务请求被误拦截的情况,针对性优化防护规则。

配额与限制

  • 接入的端口数量:配置的引流端口总数未超过 WAF 实例规格的上限。

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

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

  • DDoS 结合使用:若同时使用 DDoS 高防,则流量必须先经过DDoS高防,再转发至WAF,且 DDoS 高防必须采用域名接入(七层)方式。

  • 不支持的场景

    • 防护ECS实例的 IPv6 网站。

    • WAF配置HTTPS强制跳转。

    • 上传国密证书。

常见问题

产品功能特性相关

为什么找不到需接入的ECS实例?

请优先单击接入管理页面右上角同步资产image

若仍无法找到,说明实例不满足适用范围。例如非中国内地地域的ECS实例需要通过购买非中国内地WAF进行云产品接入,或使用CNAME接入

image

WAF能否防护FTP、SSH等非Web流量?

不能,WAF作为Web应用防火墙,针对Web流量提供防护,即HTTPHTTPS流量。无法防护其他协议的流量,如FTPSSH等。

云产品接入支持哪些端口?

使用云产品接入WAF时,支持防护1~65535范围内的任意端口。更多信息,请参见WAF支持的端口范围

接入方式选择相关

ECS实例上的域名能否同时使用云产品接入和CNAME接入?

不推荐。每个域名只能使用云产品接入或CNAME接入两种模式之一,重复接入会导致转发冲突与策略混乱。若需要将CNAME接入的域名转换为云产品接入,必须先将DNS解析切换回源站,待DNS解析收敛后,删除该域名的CNAME接入配置,然后重新进行云产品接入。

同一个域名解析指向了多个ECS实例,该如何接入?

  • 使用云产品接入:需要逐一接入这些ECS实例,确保WAF将流量引导至所有目标实例。

  • 使用CNAME接入:CNAME接入此域名并配置源站地址为多个ECS实例的公网IP。

多个域名解析指向了同一个ECS实例,该如何接入?

  • 使用云产品接入:接入此ECS实例后,实例上的所有域名都将受到WAF默认防护策略的防护。但如果需要单独为这些域名配置不同的防护规则,须手动将各域名添加为防护对象,详细信息,请参见手动添加防护对象

  • 使用CNAME接入:逐一接入多个域名。