配置BOT管理防护规则防御机器行为
BOT管理设置三道防线:已知BOT检测、请求特征检测、BOT行为检测。通过层层检测,精准识别并管理网站流量中的机器行为,有效降低网站由于遭受BOT攻击,而导致的数据泄露、性能降低等风险。
功能介绍
按照检测执行顺序,WAF BOT管理支持以下功能。
“已知BOT检测”是BOT检测的第一环节,它根据用户请求中携带的UA关键字,与BOT管理中的UA特征库进行比对。如果请求来自某种已知BOT(已知客户端),则按照配置的防护动作处置该请求。
基于互联网开源的UA特征情报,结合WAF网站反爬虫的UA特征库,WAF支持10类已知BOT检测。
类型 |
说明 |
---|---|
搜索引擎机器人 |
搜索引擎利用网络爬虫聚合并索引在线内容(如网页、图像及其他类型的文件),为用户提供实时信息。 |
网络扫描机器人 |
网络扫描机器人,即病毒、漏洞扫描器,旨在评估和发现网络资产中是否存在病毒或因配置错误、编程缺陷而产生的漏洞,并进行攻击。比较典型的扫描器有Nmap、Sqlmap、WPSec等。 |
网页抓取工具 |
在网络上流行的爬虫工具或服务,常用于抓取任何网页并提取内容以满足使用者的需求。如Scrapy、pyspider、Prerender等。 |
网站开发和监控服务机器人 |
部分公司利用机器人提供服务,帮助Web开发人员监控站点,以确保它们正常运行。这些机器人可以检查链接和域名的可用性、来自不同地理位置的连接和网页加载时间、DNS解析问题及其他功能。 |
商业分析和营销机器人 |
提供商业分析和营销服务的公司,利用机器人为用户评估网站内容,提供受众和竞争分析,支撑在线广告的投放和市场营销,优化网站或网页在搜索引擎结果中的排序。 |
新闻和社交媒体机器人 |
新闻和社交媒体平台允许用户在线浏览热点资讯、分享想法和互动交流,许多企业的营销策略包括在这些网站上运营页面,与消费者就产品或服务进行互动。部分公司会利用机器人从这些平台中收集数据,用于媒体趋势和产品的洞察,丰富网络体验。 |
屏幕快照机器人 |
部分公司利用机器人对外提供网站截图服务。它可以对网站、社交网络上的帖子、新闻、论坛/博客上的帖子等在线内容进行完整的长屏幕截图。 |
学术和研究机器人 |
有些大学和公司会使用机器人从各种网站收集数据,用于学术或研究目的,包括参考文献搜索、语义分析、特定类型的搜索引擎等。 |
RSS提要阅读器 |
RSS使用标准的XML网络提要格式来发布内容。部分互联网服务利用机器人从RSS提要中聚合信息。 |
网络存档器 |
部分组织会使用机器人定期从网络中爬取并存档有价值的在线信息和内容副本,例如维基百科。这些网络存档服务与搜索引擎非常相似,但是提供的数据并不是最新的,它们的目的主要是用于研究。 |
“请求特征检测”是BOT检测的第二环节,它通过识别用户请求中的HTTP请求头域特征,匹配主流的开发框架和HTTP库、仿冒已知BOT、自动化程序来进行检测。如果请求符合某类BOT特征,则按照配置的防护动作处置该请求。
类型 |
说明 |
---|---|
异常的请求头 |
请求头不包含User-Agent或User-Agent为空。 |
仿冒已知BOT |
开启后,将检测已知Bot请求的源IP是否符合其对应的合法客户端IP,防止攻击者仿冒。 |
开发框架和HTTP库 |
主流的开发框架和HTTP库,包含的详细特征如下: aiohttp、Apache-HttpClient、Apache-HttpAsyncClient、Commons-HttpClient、HttpComponents、PhantomJS、CakePHP、curl、Jetty、wget、http-kit、python-requests、Ruby、WebClient、WinHttpRequest、HttpUrlConnection、OxfordCloudService、http_request2、PEAR HTTPRequest、Python-urllib、RestSharp、Mojolicious (Perl)、PHP、libwww-perl、okhttp、HTMLParser、Go-http-client、axios、Dispatch、LibVLC、node-superagent、curb、Needle、IPWorks、lwp-trivial、Custom-AsyncHttpClient、Convertify、AsyncHttpClient、Embed PHP Library、Apache Synapse、node-fetch、electron-fetch、asynchttp、Dolphin http client、EventMachine HttpClient、httpunit、Zend_Http_Client、Python-httplib2、spray-can、http_requester、AndroidDownloadManager、bluefish、Java、git、Prerender.cloud |
自动化程序 |
具有爬虫行为特征,但目的尚不明确的自动化程序。 |
“BOT行为检测”是BOT检测的第三环节,通过AI智能防护引擎对请求进行分析和自动学习,根据设置的行为检测评分和防护动作处置该攻击行为。
配置BOT管理防护规则
- 登录管理控制台。
- 在管理控制台左上角,单击
,选择区域或项目。
- 在页面左上方,单击
,选择 。
- 在左侧导航栏,单击“防护策略”。
- 如果您已开通企业项目,在左侧导航栏上方,单击“按企业项目筛选”下拉框,选择您所在的企业项目。完成后,页面将为您展示该企业项目下的相关数据。
- 单击目标策略名称,进入目标策略的防护配置页面。
- 在“防护配置”页签,单击“BOT管理”开关,开启BOT管理防护规则。
:开启状态。
- 在“已知BOT检测”、“请求特征检测”或“BOT行为检测”页签,配置相关规则。
- 单击“已知BOT检测”模块,打开“启用状态”开关。
- 开启后,默认配置如图1所示。
- 单击防护规则左侧
图标,可查看防护规则详细描述和包含的特征。
- 根据实际业务需要,启用或关闭对应规则,配置防护动作。
防护动作说明如下:
- “仅记录”:仅记录满足特征的请求。
- “JS挑战”:识别到特征后,WAF向客户端返回一段正常浏览器可以自动执行的JavaScript代码。如果客户端正常执行了JavaScript代码,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则阻断请求。
请求的Referer跟当前的Host不一致时,JS挑战不生效。
- “阻断”:识别到特征后,将直接被阻断。
- 高阶人机验证:表示请求满足特征后,弹出验证码,进行人机验证。如果验证通过,则在一段时间(默认30分钟)内放行该请求(不需要重复验证);如果验证不通过,则重新刷新验证码再次进行验证。
如果要为API接口配置高阶人机验证的防护动作,需要在HTML页面接入SDK,才能正常使用。具体操作,请参见验证码SDK集成说明。
- 集成SDK之后,高阶人机验证支持XHR、Fetch异步接口的防护。如果没有集成SDK,仅支持静态页面防护。
- “防护动作”设置为“高阶人机验证”前,请确认一个客户端IP的请求只会到达同一台引擎,否则会多次重复认证导致认证无法通过。
- 客户端完成一次验证之后会获取一个Token,在该Token有效期内的访问都会被允许。为避免攻击者使用该Token重复执行攻击,建议额外配置一条超过一定请求阈值则拦截的策略。
- 单击“请求特征检测”模块,打开“启用状态”开关。
- 开启后,默认配置如图2所示。
- 单击防护规则左侧
图标,可查看防护规则详细描述。
- 根据实际业务需要,启用或关闭对应规则,配置防护动作。
防护动作说明如下:
- “仅记录”:仅记录满足特征的请求。
- “JS挑战”:识别到特征后,WAF向客户端返回一段正常浏览器可以自动执行的JavaScript代码。如果客户端正常执行了JavaScript代码,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则阻断请求。
请求的Referer跟当前的Host不一致时,JS挑战不生效。
- “阻断”:识别到特征后,将直接被阻断。
- 高阶人机验证:表示请求满足特征后,弹出验证码,进行人机验证。如果验证通过,则在一段时间(默认30分钟)内放行该请求(不需要重复验证);如果验证不通过,则重新刷新验证码再次进行验证。
如果要为API接口配置高阶人机验证的防护动作,需要在HTML页面接入SDK,才能正常使用。具体操作,请参见验证码SDK集成说明。
- 集成SDK之后,高阶人机验证支持XHR、Fetch异步接口的防护。如果没有集成SDK,仅支持静态页面防护。
- “防护动作”设置为“高阶人机验证”前,请确认一个客户端IP的请求只会到达同一台引擎,否则会多次重复认证导致认证无法通过。
- 客户端完成一次验证之后会获取一个Token,在该Token有效期内的访问都会被允许。为避免攻击者使用该Token重复执行攻击,建议额外配置一条超过一定请求阈值则拦截的策略。
- 单击“BOT行为检测”模块,打开“AI行为检测”开关。
开启后,默认配置如图3所示。
- 根据实际业务需要,设置三个行为检测评分区间。评分区间为0~100,评分越接近0分表示请求特征越像正常请求,越接近100表示请求特征越像BOT。
- 为每个区间配置防护动作。
防护动作说明如下:
- “放行”:放行满足特征的请求。
- “仅记录”:仅记录满足特征的请求。
- “JS挑战”:识别到特征后,WAF向客户端返回一段正常浏览器可以自动执行的JavaScript代码。如果客户端正常执行了JavaScript代码,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求(不需要重复验证),否则阻断请求。
请求的Referer跟当前的Host不一致时,JS挑战不生效。
- “阻断”:识别到特征后,将直接被阻断。
- 高阶人机验证:表示请求满足特征后,弹出验证码,进行人机验证。如果验证通过,则在一段时间(默认30分钟)内放行该请求(不需要重复验证);如果验证不通过,则重新刷新验证码再次进行验证。
如果要为API接口配置高阶人机验证的防护动作,需要在HTML页面接入SDK,才能正常使用。具体操作,请参见验证码SDK集成说明。
- 集成SDK之后,高阶人机验证支持XHR、Fetch异步接口的防护。如果没有集成SDK,仅支持静态页面防护。
- “防护动作”设置为“高阶人机验证”前,请确认一个客户端IP的请求只会到达同一台引擎,否则会多次重复认证导致认证无法通过。
- 客户端完成一次验证之后会获取一个Token,在该Token有效期内的访问都会被允许。为避免攻击者使用该Token重复执行攻击,建议额外配置一条超过一定请求阈值则拦截的策略。