2024年4月20日发(作者:)
HTTP Flood 攻击与防御
DDoS简介
DDoS(Distributed Denial of Service,分布式拒绝服务)攻击借助于大量客户端
肉鸡,对目标发送海量请求数据包,造成目标服务器无法提供正常服务,是目前最强大的
攻击方式之一。
传统的DDoS攻击如SYN Flood、UDP Flood通过向目标服务器发送数Gb甚至数
十Gb的无用数据包堵塞目标服务器网络带宽,达到攻击目的,百度云加速通过购买海量
的网络带宽及部署强劲的清洗设备很好的应对了此类攻击。
HTTP Flood攻击
HTTP Flood在国内又被称为CC(Challenge Collapsar)攻击,是针对Web服务
在OSI协议第七层协议发起的攻击,攻击者极力模仿正常用户的网页请求行为,发起方
便、过滤困难,极其容易造成目标服务器资源耗尽无法提供服务。按照攻击方式、目的的
不同又可以简单划分为三类:
第一类以力取胜。通过控制大量的客户端肉鸡或者代理服务器,向目标Web服务器
发送海量页面请求,让目标服务器忙于响应恶意的攻击请求,耗尽CPU等资源,无法对
正常用户进行服务。且攻击者为了极力伪造成正常的用户,会在User-Agent、URL、
Referer等请求字段做一些随机,增大安全设备过滤难度,是目前最难防御的攻击方式之
一。
第二类以巧取胜。提到DDoS攻击往往想到海量数据包、海量的请求,但慢速连接
攻击却反其道而行之,与目标服务器建立连接后,攻击者以极低的速度向目标服务器发送
后续HTTP请求内容,由于Web Server对于并发的连接数都有一定的上限,因此若是攻
击请求恶意地占住这些连接不释放,那么Web Server的连接数将被耗尽,无法接受新的
请求,导致拒绝服务。其中最著名的就是rsnake发明的Slowloris。
第三类攻击利用国内站点往往从空间商每月购买几G的流量豆,通过简单的数个攻
击端,周期性的请求目标服务器上某个大型文件,导致目标服务器流量豆迅速耗尽,被空
间商限制访问。由于传统的安全防火墙往往关注于前两类攻击的检测,此类攻击也可达到
很好的效果。
HTTP Flood防御
云加速如何防御慢连接攻击和流量耗尽型攻击?
慢速连接攻击由于云加速作为代理服务器,会在完整的接收完一个请求后再向后端服
务器递交请求,所以攻击将完全由代理服务器承担;耗尽流量的攻击方式请求的文件往往
是RAR、SWF等静态资源,静态资源默认会缓存在云加速节点进行响应。如果站长发现某
个资源被大量恶意请求,且未缓存在云加速服务器,可以将此资源设置白名单,强制缓存
在百度云加速的服务器上,完全由云加速提供响应。
图: 缓存白名单设置
云加速如何发现伪造成正常用户请求的攻击?
频度统计法。通过统计每个计数周期如5s,每个IP访问的频度,超过一定阀值的即为
可疑的攻击者。或者可以精确统计每个IP访问每个URL的次数,访问jpg静态资源、php
动态资源、html页面的比例,比例超过一定区间的即为可疑攻击者IP。对于长期存在攻击
行为的IP,可以构建一个历史黑名单库,对库中IP进行恶意程度评分。
请求特征分析法,攻击请求的User-Agent、referer、cookie、cache-control等请求
头部往往会存在一些有别于正常浏览器的特征,如攻击者为了绕过一些防御,常常将User-
Agent模仿为BaiduSpider或GoogleBot,而正常spider的IP地址是可收集的,不在
白名单中的IP可疑程度就增大了很多。
图: 异常流量图
流量突变识别法。流量基线法通过统计历史七天内每分钟的平均请求数作为基线,如
果当前请求数超过了基线的n倍,则认为发生了攻击。而EWMA等流量预测法则根据实
时历史流量预测接下来几分钟流量,如果实际流量远超过预测数值,则认为发生了攻击。
当确认当前流量存在异常后,深入挖掘当前请求中URL、User-Agent、referer等字段的
相似性及IP频度等信息,确认攻击者。
发现攻击后云加速如何进行拦截?
最简单暴力的方式是将可疑攻击者IP进行三层拦截,但由于CDN托管网站业务复杂,
任何一种检测方式都不能保证100%不会错误识别正常请求,且国内大量局域网用户使用
相同的IP上网,三层封禁IP过于简单,容易带来较多的误杀,该方式已经被抛弃。
取而代之的是更进一步的挑战应答式的识别方法。如javascript跳转人机识别,利用
正常浏览器可以执行javascript脚本,而bot程序往往不具备执行javascript代码的能力,
对每个可疑的请求返回一段javascript代码,通过执行该代码进行页面跳转设置cookie,
后续的请求会携带cookie标识,无法携带标识的请求即为恶意攻击请求,该方式最大程度
的降低了误拦截正常请求。但是当前已经有一些bot程序能够执行javascript且携带正确
的cookie进行攻击,云加速在发现某个站点存在明显攻击行为,而可疑的请求用户又能够
通过javascript校验,此时只能寄出神器验证码,通过验证码进一步识别人与bot程序。
图: 攻击拦截方式
如果站点被攻击导致无法打开了怎么办?
前面介绍的方式已经可以发现绝大部分的攻击者,但是可能会存在部分攻击流量漏过
检测引擎,导致源站负载过高,此时站长可以通过云加速前端调整CC防火墙等级。等级
为中时,所有的用户请求都会被返回javascript脚本进行人机识别;等级为高时所有请求都
会被返回验证码页面校验。
图: CC防火墙等级
如何知道哪些请求被拦截了?
云加速在站点报表页面提供了详细的CC防御详情,站长可以看到被返回javascript
或验证码进行校验的请求IP和URL。
图: CC攻击详情
如果发现误拦截怎么办?
通过挑战应答的人机识别机制,可以极大程度降低误拦截,但是当前一些web服务中
提供API调用,正常用户也是通过程序调用WEB API的方式来访问业务,攻击者和正常
用户都不能执行人机识别的脚本,可能会带来一部分误杀。或者部分站长所在公司局域网
同时访问页面的人较多,且会经常调用一些API,为了避免被误杀,可以设置拦截IP、URL
白名单。
图: CC拦截白名单机制


发布评论