文档首页/ Web应用防火墙 WAF/ 最佳实践/ 使用WAF阻止爬虫攻击
更新时间:2024-10-23 GMT+08:00

使用WAF阻止爬虫攻击

应用场景

网络爬虫为网络信息收集与查询提供了极大的便利,但同时也对网络安全产生以下负面影响:

  • 网络爬虫会根据特定策略尽可能多地“爬过”网站中的高价值信息,占用服务器带宽,增加服务器的负载
  • 恶意用户利用网络爬虫对Web服务发动DoS攻击,可能使Web服务资源耗尽而不能提供正常服务
  • 恶意用户利用网络爬虫抓取各种敏感信息,造成网站的核心数据被窃取,损害企业经济利益

Web应用防火墙可以通过常规检测和Webshell检测(识别User-Agent)、网站反爬虫(检查浏览器合法性)和CC攻击防护(限制访问频率)三个反爬虫策略,全方位帮您解决业务网站遭受的爬虫问题。

方案概述

爬虫检测流程如图1所示,其中,①和②称为“js挑战”,③称为“js验证”。

图1 JS脚本检测流程说明
开启JS脚本反爬虫后,当客户端发送请求时,WAF会返回一段JavaScript代码到客户端。
  • 如果客户端是正常浏览器访问,就可以触发这段JavaScript代码再发送一次请求到WAF,即WAF完成js验证,并将该请求转发给源站。
  • 如果客户端是爬虫访问,就无法触发这段JavaScript代码再发送一次请求到WAF,即WAF无法完成js验证。
  • 如果客户端爬虫伪造了WAF的认证请求,发送到WAF时,WAF将拦截该请求,js验证失败。

通过统计“js挑战”和“js验证”,就可以汇总出JS脚本反爬虫防御的请求次数。例如,图2中JS脚本反爬虫共记录了18次事件,其中,“js挑战”(WAF返回JS代码)为16次,“js验证”(WAF完成JS验证)为2次,“其他”(即爬虫伪造WAF认证请求)为0次。

图2 JS脚本反爬虫防护数据

约束与限制

  • 云模式标准版本不支持网站反爬虫功能。
  • JS脚本反爬虫依赖浏览器的Cookie机制、JavaScript解析能力,如果客户端浏览器不支持Cookie,此功能无法使用,开启后会造成永远无法访问源站。
  • 如果您的业务接入了CDN服务,请谨慎使用JS脚本反爬虫。

    由于CDN缓存机制的影响,JS脚本反爬虫特性将无法达到预期效果,并且有可能造成页面访问异常。

资源与成本规划

表1 资源和成本规划

资源

资源说明

每月费用

Web应用防火墙

云模式-专业版:
  • 计费模式:包年/包月
  • 域名数量:50个防护域名(最多支持5个一级域名)
  • QPS配额:5,000QPS业务请求
  • 支持带宽峰值:云内200Mbps/云外50Mbps

具体的计费方式及标准请参考计费说明

步骤一:购买云模式专业版

以购买WAF云模式标准版为例进行介绍。

  1. 登录华为云管理控制台
  2. 在控制台页面中选择安全与合规 > Web应用防火墙 WAF,进入Web应用防火墙控制台。
  3. 在页面右上角,单击“购买WAF实例”,进入购买页面,“WAF模式”选择“云模式”

    • “区域”:根据防护业务的所在区域就近选择购买的WAF区域。
    • “版本规格”:选择“专业版”
    • “扩展包”“购买时长”:根据具体情况进行选择。

  4. 确认参数配置无误后,在页面右下角单击“立即购买”
  5. 确认订单详情无误后,阅读并勾选《Web应用防火墙免责声明》,单击“去支付”,完成购买操作。
  6. 进入“付款”页面,选择付款方式进行付款。

步骤二:将网站信息添加到WAF

此处以云模式-CNAME接入为例进行介绍。

  1. 在左侧导航树中,选择“网站设置”,进入网站设置列表。
  2. 在网站列表的左上角,单击“添加防护网站”
  3. 选择“云模式-CNAME接入”并单击“开始配置”
  4. 根据界面提示,配置网站信息,如表2所示。

    图3 基础信息配置
    表2 重点参数说明

    参数

    参数说明

    取值样例

    防护域名

    需要添加到WAF中防护的域名。

    • 域名已完成备案
    • 支持单域名(例如,一级域名example.com,二级域名www.example.com等)和泛域名(例如,*.example.com)。

    www.example.com

    防护端口

    需要防护的域名对应的业务端口。

    标准端口

    服务器配置

    网站服务器地址的配置。包括对外协议、源站协议、源站地址、源站端口和权重。

    • 对外协议:客户端请求访问服务器的协议类型。包括“HTTP”“HTTPS”两种协议类型。
    • 源站协议:Web应用防火墙转发客户端请求的协议类型。包括“HTTP”“HTTPS”两种协议类型。
    • 源站地址:客户端访问的网站服务器的公网IP地址(一般对应该域名在DNS服务商处配置的A记录)或者域名(一般对应该域名在DNS服务商处配置的CNAME)。
    • 源站端口:WAF转发客户端请求到服务器的业务端口。
    • 权重:负载均衡算法将按权重将请求分配给源站。

    对外协议:HTTP

    源站协议:HTTP

    源站地址:IPv4 XXX .XXX.1.1

    源站端口:80

    是否使用七层代理

    在WAF前是否使用了七层代理产品。

    根据实际情况进行选择。

  5. 单击“下一步”,根据界面提示,完成WAF回源IP加白本地验证修改域名DNS解析设置的操作。

    图4 添加域名完成

步骤三:开启常规检测和Webshell检测(识别User-Agent)

开启常规检测和Webshell检测后,WAF可以检测和拦截恶意爬虫、网马等威胁。

  1. 在左侧导航树中,选择“网站设置”,进入“网站设置”页面。
  2. 在目标域名所在行的“防护策略”栏中,单击“已开启N项防护”,进入“防护策略”页面。
  3. 确认“Web基础防护”的状态为

    图5 Web基础防护配置框

  4. “防护配置”页面,开启“常规检测”“Webshell检测”开关。

    图6 防护配置

    当WAF检测到恶意爬虫对网站进行爬取时,将立即拦截并记录该事件,您可以在“防护事件”页面查看爬虫防护日志。

步骤四:开启网站反爬虫(检查浏览器合法性)

开启网站反爬虫,WAF可以动态分析网站业务模型,结合人机识别技术和数据风控手段,精准识别爬虫行为。

  1. 选择“网站反爬虫”配置框,开启网站反爬虫。

    • :开启状态。
    • :关闭状态。

  2. “特征反爬虫”页面,开启“扫描器”,其他选项根据业务需要进行选择。

    图7 特征反爬虫防护

  3. 选择“JS脚本反爬虫”页签,用户可根据业务需求更改JS脚本反爬虫的“状态”

    默认关闭JS脚本反爬虫,单击,在弹出的“警告”提示框中,单击“确定”,开启JS脚本反爬虫

    防护动作:拦截、仅记录、人机验证(JavaScript挑战失败,弹出验证码提示,输入正确的验证码,请求将不受访问限制)。

    • JS脚本反爬虫依赖浏览器的Cookie机制、JavaScript解析能力,如果客户端浏览器不支持Cookie,此功能无法使用,开启后会造成永远无法访问源站。
    • 如果您的业务接入了CDN服务,请谨慎使用JS脚本反爬虫。

      由于CDN缓存机制的影响,JS脚本反爬虫特性将无法达到预期效果,并且有可能造成页面访问异常。

  4. 根据业务配置JS脚本反爬虫规则,相关参数说明如表3所示。

    JS脚本反爬虫规则提供了“防护所有请求”“防护指定请求”两种防护动作。

    • 除了指定请求规则以外,防护其他所有请求
      “防护模式”选择“防护所有请求”,单击“添加排除请求规则”,配置排除请求规则后,单击“确认”
      图8 添加排除防护请求
    • 只防护指定请求时

      “防护模式”选择“防护指定请求”,单击“添加请求规则”,配置请求规则后,单击“确认”

      图9 添加请求规则
    表3 JS脚本反爬虫参数说明

    参数

    参数说明

    示例

    规则名称

    自定义规则名称。

    waf

    规则描述

    可选参数,设置该规则的备注信息。

    -

    生效时间

    立即生效。

    立即生效

    条件列表

    条件设置参数说明如下:

    • 字段:在下拉列表中选择需要防护的字段,当前仅支持“路径”“User Agent”
    • 子字段
    • 逻辑:在“逻辑”下拉列表中选择需要的逻辑关系。
      说明:

      “逻辑”关系选择“包含任意一个”“不包含任意一个”“等于任意一个”“不等于任意一个”“前缀为任意一个”“前缀不为任意一个”“后缀为任意一个”或者“后缀不为任意一个”时,需要选择引用表。

    • 内容:输入或者选择条件匹配的内容。
    • 区分大小写:“字段”选择“路径”时,可配置该参数。开启后,系统在检测配置的路径时,将区分大小写。

    “路径”包含“/admin/”

    优先级

    设置该条件规则检测的顺序值。如果您设置了多条规则,则多条规则间有先后匹配顺序,即访问请求将根据您设定的优先级依次进行匹配,优先级较小的规则优先匹配。

    5

开启该防护后,非浏览器的访问将不能获取业务页面。

步骤五:配置CC攻击防护(限制访问频率)

开启CC攻击防护,限制单个IP/Cookie/Referer访问者对您的网站上特定路径(URL)的访问频率,缓解CC攻击对业务的影响。

  1. 确认“CC攻击防护”“状态”“开启”

    图10 CC防护规则配置框

  2. “CC攻击防护”规则配置列表的左上方,单击“添加规则”。以IP限速和人机验证为例,添加IP限速规则,如图11所示。

    图11 IP限速

    设置成功后,当用户访问超过限制后需要输入验证码才能继续访问。