编辑推荐: |
本文首先对一个案例进行了回顾,然后又介绍了HTTP协议基本知识、华为Anti-DDoS解决方案怎么做?
本文来自于华为企业互动社区,由火龙果软件Anna编辑、推荐。
|
|
在苦心钻研DDoS防御技术之前,哥也曾经和大多数人一样,认为网络犯罪都是黑客的事,只想安安静静地做个美(好)男(网)子(民),互联网上的各种纷争都与我无关,直到哥不知不觉充当了一次“肉鸡”。
话说那时的搜狐已经是名列前茅的网站,那时的哥也还是个年轻的小鲜肉,当哥整天抱着搜狐视频看电视看球赛看广告的时候,下面的事情发生了……
0x01 事件回顾
2014年5月,当哥还沉浸在搜狐热播的时候,颇负盛名的搜狐视频,却背负了一起著名的DDoS攻击事件。
当时,日本CDN服务商Incapsula声称,自己的一位客户的服务器遭遇了搜狐视频发起的DDoS攻击,期间总共有超过2万的网民通过搜狐视频向这位客户发起超过2000万次的HTTP
Get请求。然而如此知名的网站,怎么会甘冒不韪,公然向别人发起攻击呢?原来,搜狐视频是在未知的情况下被黑客利用,成为了攻击的源头。
有句话叫“趁虚而入”,搜狐视频网站上恰好就有这么一个漏洞给了黑客“打劫”的机会。通过这个漏洞,黑客注册一个搜狐视频账户,在头像中注入恶意代码(JavaScript),然后用这个账户在视频的评论区发布大量的评论。你看,每条评论都带有用户头像,头像中带有恶意代码,这样,每条评论都附带着恶意代码。当任何用户访问这个视频页面的时候,都会触发恶意代码,实际上控制了搜狐视频用户的浏览器。
那么这段恶意代码干了什么呢?简单说,这段代码就是在用户不知情的情况下,定时向受害者发起HTTP访问请求。这个定时器,是1秒。
也就是说,当搜狐视频用户观看视频时,他的浏览器会每秒向受害者发起一次请求。如果用户观看30分钟视频,那么就会向受害者发起1800次请求。大家可能会觉得,这也没有多少呀,但是,搜狐视频这样的大型视频网站,同时在线观看热门视频的用户都是成千上万级别的,黑客在多个热门视频下发布海量评论,轻松获得无数“肉鸡”。众人拾柴火焰高,如果星火燎原到千家万户同时持续地向受害者发送请求,攻击效果就可想而知了。
嗯,每一个人都是帮凶。
0x02 HTTP协议基本知识
HTTP协议,HyperText Transfer Protocol,超文本传输协议。我们先来简单回顾下HTTP协议的基本原理。
HTTP协议最基本的交互流程如下。
完成TCP三次握手后,客户端向服务器发起HTTP请求。正常情况下,服务器回应200 OK,在应答中添加应答长度,然后开始传输数据。
HTTP协议还有一种重定向的交互流程,如下。
完成TCP三次握手后,客户端向服务器发起HTTP请求。如果客户端请求的这个URL是过期的,那么服务器就会回应客户端302重定向报文,并携带新的URL地址。然后客户端再重新向新的URL地址发起请求,服务器回应200
OK,并开始传输数据。
0x03 华为Anti-DDoS解决方案怎么做?
HTTP协议是一种基于TCP协议的应用层协议,而HTTP类的攻击,最高效的防御方式就是源认证方式进行校验。华为Anti-DDoS解决方案可以感知TCP协议和HTTP协议,可以针对攻击源进行多层级的源认证和校验。
源认证体系主要有三个层面:
第一层,TCP/IP源认证
一般用于TCP三次握手还没建立成功前,验证攻击源的TCP/IP是否真实可信,比如IP源认证是对IP层面的校验,认证这个源是不是真实存在的源;而TCP代理和首包丢弃校验是对于TCP协议栈层面的校验,用于判断是否是这个源发出的真实请求。
很显然上述攻击事件已经完成了TCP三次握手,不属于TCP/IP范畴,关于TCP/IP源认证的防御机制,我们会在后面详细介绍,本节着重介绍应用层源认证。
第二层,应用层源认证
如果肉鸡使用工具调用真实的TCP/IP协议栈发动攻击,则TCP/IP源认证无法识别是否是攻击,我们必须启用应用层源认证,比如利用HTTP
302重定向请求,可以认证客户“浏览器”是否可信。只有真实浏览器才具备完整的HTTP协议栈校验机制。
第三层,用户源认证
在客户端是真实的基础上,进一步验证是否由真实用户发出的请求,而不是肉鸡浏览器被黑客控制强制发出的请求。针对这种情况,终极的手段就是,人机交互,输入验证码和图片运算。其实验证码机制就是对登录用户的一次安全验证,判断一下是不是真实用户发起的请求。如果是DDoS工具发起的请求,是无法自动响应随机应变的验证码的。
我们再回到前面的攻击事件上来。攻击报文是由浏览器发出的请求,没有人为参与,源IP是真实存在的,浏览器也是真实存在的,但是请求行为是虚假的。所以在防御的时候,就要识别出HTTP请求中,哪些是真实的用户发送的请求,哪些是肉鸡浏览器发的请求。浏览器具有完整的HTTP协议校验机制,对于302重定向报文,浏览器可以直接完成交互过程,无须用户参与,显然302重定向方式识别不了攻击报文。只能通过验证码这种需要人机交互的方式来识别攻击报文,显然对照的是第三个层面。
对于HTTP攻击防御,第二层提到的302重定向和第三层的验证码方式都是非常有效的防御手段,302重定向更常用。只要客户端具备完善的302重定向机制,就可以通过302重定向源探测方式识别虚假源。但是302重定向无法识别僵尸浏览器,对于僵尸浏览器可以使用验证码方式,只是验证码需要用户参与,用户体验稍差一点。
还有一种特殊情况,当网络中有HTTP代理服务器时,只要有一次源认证通过,Anti-DDoS就会将代理服务器IP地址加入白名单,后续黑客就会利用代理服务器IP绕过源认证检查,从而导致防御失败。这种情况下,就要配合代理检查功能一起使用,检测HTTP请求是否为通过代理发出的请求。如果是,Anti-DDoS会从HTTP报文中获取请求者的实际IP地址,将通过认证的真实IP地址和代理服务器IP地址加入白名单,后续只有此实际源IP地址发送的报文才能直接通过,其他源IP发送报文时,Anti-DDoS会对其进行源认证,达到防御效果。
|