HTTP Flood 攻击与防御
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 等静态资源,静态资源默认会缓存在云加速节点 进行响应。如果站长发现某个资源被大量恶意请求,且未缓存在云加速服务器, 可以将此资源设置白名单,强制缓存在百度云加速的服务器上,完全由云加速提 供响应。添加缰存白名单包含输入关键字的网址会被缓存(劇E在黑名单)图: 缓存白名单设置云加速如何发现伪造成正常用户请求的攻击?频度统计法。通过统计每个计数周期如5s,每个IP访问的频度,超过一定 阀值的即为可疑的攻击者。或者可以精确统计每个 IP 访问每个 URL 的次数,访 问jpg静态资源、php动态资源、html页面的比例,比例超过一定区间的即为可 疑攻击者IP。对于长期存在攻击行为的IP,可以构建一个历史黑名单库,对库中 IP进行恶意程度评分。请求特征分析法,攻击请求的 User-Agent、 referer、 cookie 、 cache-control 等 请求头部往往会存在一些有别于正常浏览器的特征,如攻击者为了绕过一些防御 常常将User-Age nt模仿为BaiduSpider或GoogleBot,而正常spider的IP地址是 可收集的,不在白名单中的IP可疑程度就增大了很多。图: 异常流量图流量突变识别法。流量基线法通过统计历史七天内每分钟的平均请求数作为 基线,如果当前请求数超过了基线的n倍,则认为发生了攻击。而EWMA等流 量预测法则根据实时历史流量预测接下来几分钟流量,如果实际流量远超过预测 数值,则认为发生了攻击。当确认当前流量存在异常后,深入挖掘当前请求中 URL、User-Age nt、referer等字段的相似性及IP频度等信息,确认攻击者。发现攻击后云加速如何进行拦截?最简单暴力的方式是将可疑攻击者 IP 进行三层拦截,但由于 CDN 托管网站业务复杂,任何一种检测方式都不能保证 100%不会错误识别正常请求,且国内 大量局域网用户使用相同的IP上网,三层封禁IP过于简单,容易带来较多的误 杀,该方式已经被抛弃。取而代之的是更进一步的挑战应答式的识别方法。如 javascript 跳转人机识 别,利用正常浏览器可以执行 javascript 脚本,而 bot 程序往往不具备执行 javascript 代码的能力,对每个可疑的请求返回一段 javascript 代码,通过执行该 代码进行页面跳转设置cookie,后续的请求会携带cookie标识,无法携带标识的 请求即为恶意攻击请求,该方式最大程度的降低了误拦截正常请求。但是当前已 经有一些 bot 程序能够执行 javascript 且携带正确的 cookie 进行攻击,云加速在 发现某个站点存在明显攻击行为,而可疑的请求用户又能够通过 javascript 校验, 此时只能寄出神器验证码,通过验证码进一步识别人与bot程序。图: 攻击拦截方式 如果站点被攻击导致无法打开了怎么办? 前面介绍的方式已经可以发现绝大部分的攻击者,但是可能会存在部分攻击 流量漏过检测引擎,导致源站负载过高,此时站长可以通过云加速前端调整 CC 防火墙等级。等级为中时,所有的用户请求都会被返回javascript脚本进行人机识 别;等级为高时所有请求都会被返回验证码页面校验。(自动僅式下,系统纟昔链识刖出可擬话求,芦且自功选拦合适的认证方式)目动(宮户端通过了盼火堵认证后,允许特续访问的时间!通过百要自主幵发的匚匸防甸引学.迅速阻断攻击ip“图: CC 防火墙等级 如何知道哪些请求被拦截了? 云加速在站点报表页面提供了详细的 CC 防御详情,站长可以看到被返回 javascript或验证码进行校验的请求IP和URL。14 39 U200W小:DD02Kl:0D 01OT CfflKJ OBW »7:DD OBW «:W 1DS0 IIM IZOfl 13:05 UW"攻站计STBS.Ma1 153,41014.39 ELI旳.即曰B 汗tfi蚊:t li翊畑0230KH-11-0614:914:9厅电nrJF4=单:击"啤14 59 L39 2" 1世421 心色 JfSrlSZ* I讥H图: CC 攻击详情 如果发现误拦截怎么办? 通过挑战应答的人机识别机制,可以极大程度降低误拦截,但是当前一些 web服务中提供API调用,正常用户也是通过程序调用WEB API的方式来访问业务, 攻击者和正常用户都不能执行人机识别的脚本,可能会带来一部分误杀。或者部 分站长所在公司局域网同时访问页面的人较多,且会经常调用一些API,为了避 免被误杀,可以设置拦截 IP、URL 白名单。透加诵加IP黑容卑I卩白呂甲网址白名单图: CC 拦截白名单机制包合输入关健字的P会被拦裁I:立持IP段j 1.1.1/ )包含辅入关屣字的网It不会被拦钱包含輸入黑健字的1P不会被拦截(除非在罢名单.支持IP段,例口1丄1兴)糠加