通过联合部署DDoS高防和WAF提升网站防护能力

如果您的网站遭受的攻击既有流量型攻击,又混杂精巧的Web应用层攻击时(例如SQL注入、跨站脚本攻击、命令注入等)时,推荐您组合使用阿里云DDoS高防和Web 应用防火墙 WAF(Web Application Firewall),通过多层次的安全防护对抗多种潜在威胁。本文介绍如何同时部署DDoS高防和WAF。

网络架构

DDoS高防和WAF同时部署时采用以下网络架构:DDoS高防(入口层,防御DDoS攻击)->WAF(中间层,防御Web应用攻击)->源站服务器(ECS、SLB、VPC、IDC等)。网站业务流量会先经过DDoS高防清洗,然后转发到WAF过滤Web攻击,最后只有正常的业务流量被转发到源站服务器,保障网站的业务安全和数据安全。业务流量的转发过程如下图所示。

image

注意事项

访问请求将经过多层中间代理才到达源站,源站不能直接获取请求的真实来源IP。如果您需要获取访问请求的真实来源IP,请参见配置DDoS高防后获取真实的请求来源IP

前提条件

步骤一:网站业务接入WAF

支持CNAME接入和云产品接入两种方式,接入前请您详细了解各接入方式的推荐场景。详细信息,请参见接入管理概述

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

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

  3. 通过CNAME接入云产品接入,将业务接入WAF。

    1. CNAME接入

      1. CNAME接入页签,单击接入

      2. 配置监听向导页,完成如下配置后,单击下一步

        仅简要介绍各配置项,更详细的配置项介绍,请参见域名接入

        配置项

        配置说明

        域名

        填写您的网站域名。

        协议类型

        选择网站使用的协议类型并填写对应端口。每输入一个端口,按回车确认。

        说明
        • 选中HTTPS后,您还需要将网站域名关联的证书上传到WAF。如果您的网站要同时支持国密SM2算法,您需要上传国密证书。

        • 选中HTTPS并配置证书后,您也可以根据业务需要,设置是否开启HTTP2、是否开启HTTPS的强制跳转、选择TLS协议版本、选择HTTPS加密套件。

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

        选择,并设置客户端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的检测规则,提高业务的安全性。

        更多配置

        根据您的业务,设置是否开启IPv6、是否开启独享IP,选择要使用的防护资源类型。

        资源组

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

      3. 配置转发向导页,完成如下配置后,单击提交

      4. 配置项

        说明

        负载均衡算法

        源站有多个服务器地址时,根据业务需要设置,以实现负载均衡。

        服务器地址

        填写网站对应的源站服务器的公网IP地址或源站域名,用于接收WAF转发回源的正常业务请求(回源请求)。

        HTTPS高级设置

        根据业务需要,设置是否开启HTTP回源、是否启用回源SNI。

        其它高级设置

        根据业务需要,设置是否启用流量标记、WAF回源到源站的超时时间、回源重试、回源长连接。

      5. 接入完成向导页,获取WAF提供的CNAME地址。

    2. 云产品接入

      具体操作,请参见云产品接入

      如果Web业务已启用阿里云应用型负载均衡(Application Load Balancer,简称ALB)、微服务引擎(Microservices Engine,简称MSE)、函数计算(Function Compute,简称FC)Serverless 应用引擎 SAE(Serverless App Engine,简称SAE),建议您选择SDK插件接入。如果Web业务已启用阿里云传统型负载均衡(Classic Load Balancer,简称CLB)上、云服务器(Elastic Compute Service,简称ECS),建议您通过反向代理集群接入

步骤二:网站业务接入DDoS高防

  1. 登录DDoS高防控制台

  2. 在顶部菜单栏左上角处,根据DDoS高防产品选择地域。

    • DDoS高防(中国内地):选择中国内地地域。

    • DDoS高防(非中国内地):选择非中国内地地域。

  3. 在左侧导航栏,选择接入管理 > 域名接入

  4. 域名接入页面,单击添加网站,填写网站接入信息,然后单击下一步

    配置项

    说明

    功能套餐

    选择要关联的DDoS高防实例的功能套餐。

    实例

    选择要关联的DDoS高防实例。

    一个网站域名最多可以关联8DDoS高防实例,且只能关联同一种功能套餐下的多个实例。

    网站

    填写您的网站域名。

    协议类型

    选择网站支持的协议类型。

    说明
    • 选择HTTPS协议时,完成网站配置后,请上传网站域名使用的证书。

    • 选中HTTPS协议后,可以根据需要开启HTTPS的强制跳转、是否开启HTTP回源、是否启用HTTP2。

    关于如何上传证书、自定义安全策略、启用OCSP Stapling,请参见添加网站配置

    服务器地址

    • 域名在WAF上的接入模式为CNAME接入时,选择源站域名并填写步骤一中获取的WAFCNAME地址。

    • 域名在WAF上的接入模式为云产品接入时,选择源站IP并填写源站服务器的公网IP。

    服务器端口

    根据协议类型,设置源站提供对应服务的端口。

    • HTTP协议、Websocket协议的端口默认为80。

    • HTTPS协议、HTTP2协议、Websockets协议的端口默认为443。

    您可以单击自定义,自定义服务器端口,多个端口间使用半角逗号(,)分隔。

    Cname Reuse

    DDoS高防(非中国内地)支持配置该参数。选择是否开启CNAME复用。更多信息,请参见CNAME复用

  5. 填写转发配置,然后单击下一步

    配置项

    说明

    回源负载算法

    有多个源站服务器地址(源站IP或源站域名)时需要配置。您可以修改回源负载均衡算法或者为不同服务器设置权重。

    • 轮询(默认):所有请求轮流分配给所有服务器地址,默认所有服务器地址具有相同权重。支持修改服务器权重,服务器权重越大,被分配到请求的可能性越高。适用于多源站且对源站负载均匀要求较高的场景。

    • IP hash:支持设置IP hash的同时为服务器设置权重。使用IP hash保证同一客户端的请求在一段时间内被分配到同一台服务器处理,确保会话的一致性。结合权重模式,根据服务器的处理能力进行权重分配,确保更高性能的服务器处理更多的请求,优化资源利用效率。适用于需要保持用户会话一致性的场景,极端情况下可能存在负载不均衡。

    • Least time:通过智能DNS解析能力和Least time回源算法,保证业务流量将从接入防护节点到转发回源站服务器整个链路的时延最短。

    流量标记

    • 客户端真实源端口

      HTTP Header中客户端真实源端口所在的头部字段名。

      一般情况下使用X-Forwarded-ClientSrcPort字段记录真实的客户端源端口,如果您的业务使用自定义的字段记录真实的客户端源端口,请将Header字段名称设置为您自定义的字段。您可以从高防转发到源站的请求中解析设置的字段,获取客户端使用的真实端口。具体操作与获取客户端真实请求IP类似,更多信息,请参见配置DDoS高防后获取真实的请求来源IP

    • 客户端真实源IP

      HTTP Header中客户端真实源IP所在的头部字段名。

      一般情况下使用X-Forwarded-For字段记录真实的客户端源IP,如果您的业务使用自定义的字段记录真实的客户端源IP,请将Header字段名称设置为您自定义的字段。您可以从高防转发到源站的请求中解析设置的字段,获取客户端使用的真实IP。

    • 自定义Header

      在请求中增加自定义HTTP Header(包含字段名称和字段值)来标记经过DDoS的请求。高防在代理网站流量时,会在转发到源站的请求中添加对应的字段值,方便您后端的服务进行统计分析。

      • 请不要使用以下默认字段作为自定义Header:

        • X-Forwarded-ClientSrcPort:默认被用于获取访问高防七层引擎的客户端端口。

        • X-Forwarded-ProxyPort:默认被用于获取访问高防七层引擎的监听端口。

        • X-Forwarded-For:默认被用于获取访问高防七层引擎的客户端IP。

      • 请不要使用标准HTTP头部字段(例如,host、user-agent、connection、upgrade等)或一些被广泛使用的自定义HTTP头部字段(x-real-ip、x-true-ip、x-client-ip、web-server-type、wl-proxy-client-ip、eagleeye-rpcid、eagleeye-traceid、x-forwarded-cluster、x-forwarded-proto等),否则会导致请求原始头部字段的内容被改写。

      • 除客户端真实源端口和客户端真实源IP外,您最多支持添加5个自定义Header标签。

    cookie设置

    • 下发状态

      默认开启。开启状态时DDoS高防将会在客户端(如浏览器)植入Cookie用于区分统计不同客户端或者获取客户端的指纹信息等。详细介绍,请参见设置CC安全防护

      重要

      如需停止DDoS高防向业务植入Cookie的行为,您可以将开关关闭,但同时DDoS高防也将无法通过CC安全防护策略模块对CC攻击进行主动判断和防护。

    • Secure属性

      默认关闭。如果开启,Cookie只会在HTTPS连接中被发送,而不会在HTTP连接中发送,有助于保护Cookie不被攻击窃取。当网站业务仅支持HTTPS链接时建议开启。

    其他设置

    • 设置新建连接超时时间:DDoS高防尝试建立到源站的连接时,超过该时间连接未建立完成,会被认定为失败。支持设置为1~10秒。

    • 设置读连接超时时间:DDoS高防成功建立连接并向源站发出读取数据请求之后,等待源站返回响应数据的最长时间。支持设置为10~300秒。

    • 设置写连接超时时间:数据从DDoS高防发送出去之后,并由源站开始处理之前,DDoS高防等待的时间长度。超过这段时间,如果DDoS高防还没有成功地将所有数据发送给源站,或者源站没有开始处理数据,会被认定为失败。支持设置为10~300秒。

    • 回源重试:当DDoS高防请求的资源在缓存服务器上没有命中时,缓存服务器将尝试从上一级缓存服务器或源站重新获取该资源。

    • 回源长连接:在缓存服务器与源站之间,使TCP连接在一段时间内保持活跃,而不是每完成一次请求就关闭。开启后可以减少建立连接的时间和资源消耗,提高请求处理的效率与速度。

    • 复用长连接的请求个数:在DDoS高防向源站建立的一个TCP连接中,支持发送的HTTP请求个数,可以减少因频繁建立和关闭连接所带来的延迟和资源消耗。支持设置为10~1000。建议小于等于后端源站(如:WAF、SLB)上配置的长连接请求复用个数,以免长连接关闭造成业务无法访问。

    • 空闲长连接超时时间:DDoS高防向源站建立的一个TCP长连接,在没有数据传输之后,在高防的连接池保持开启状态的最长时间。这个时间段内如果没有新的请求,该连接将被关闭,以释放系统资源。支持设置为10~30秒。建议小于等于后端源站(如:WAF、SLB)上配置的超时时长,以免长连接关闭造成业务无法访问。

    • 设置HTTP2.0 Stream数上限:仅当启用HTTP2时支持设置,表示客户端与DDoS高防间允许的最大并发流数量。支持设置为16~32,如果您有更高的配置诉求,请联系商务经理。

  6. 复制DDoS高防提供的CNAME地址。

步骤三:修改域名的DNS解析

请将域名解析指向DDoS高防提供的CNAME地址。以域名DNS托管在阿里云云解析DNS为例介绍,使用其他DNS服务商的域名解析服务时请参考配置。

  1. 登录阿里云云解析DNS控制台

  2. 域名解析页面,定位到目标域名,单击操作列的解析设置

  3. 解析设置页面,定位到目标解析记录,单击操作列的修改

    说明

    如果要操作的解析记录不在记录列表中,您可以单击添加记录

  4. 修改记录(或添加记录)页面,选择记录类型CNAME,并将记录值修改为域名对应的DDoS高防CNAME地址(即步骤二中获取到的DDoS高防CNAME地址)。

  5. 单击确认,等待修改后的解析设置生效。

  6. 使用浏览器测试网站访问是否正常。

相关文档