[文章导读]
本文借张大民的生活和研究来传播一些比较乏味的网络安全的知识,本文讲的DDOS的内容……
[正文]
前言:这篇文章是“黑客张大民江南小城奇遇记”与“黑客张大民在IPv6里的幸福与烦恼”的姐妹篇,如果想了解一下黑客张大民的来龙去脉和背景,可以参考下面这两篇文章。
本文借他的生活和研究来传播一些比较乏味的网络安全的知识。
序
凌晨两点,黑客张大民的手机开始狂响起来。张大民睡眼惺忪,翻起身看了一下手机号码,知道他必须得接这个电话。最近张大民换了个工作,新公司给一些主要的网站做安全咨询和安全管理。几个主要的技术人员每一个人负责一些客户,这个电话就是一个主要客户的网站管理员打来的。“这么晚了,小子还在上班?”,张大民心里嘀咕着。
“喂,小李”,张大民很不情愿的接了电话。
“大民兄弟,网站出事了!”,在电话的那边,小李的声音已经有点变形了。
“怎么出事了?”,张大民间?
“不知道啊,流量特别大,已经死机两回了!客户的电话都快把线打爆了”,小李说。
“深更半夜的,谁还打你们的客服电话啊?”,张大民觉得小李有可能在蒙他。
“大民兄弟,你不知道啊,我们的网站海外客户很多,大概时差是十几个小时,现在是他们哪里下午,正是用得时候!”。小李说。
“好,好,那我去看看”,张大民无可奈何,只好匆匆忙用冷水洗了把脸,尽快的赶到机房。
到了机房,张大民才知道问题的严重性,通过分析网络流量日志,张大民查出这是最普通的TCP的SYN洪水攻击,也就是攻击网站WEB服务器HTTP的TCP端口80,流量很大,基本上每秒钟收到50万个TCP的SYN报文。每一个SYN报文都要浪费WEB服务器的一定资源,几乎WEB服务器的所有资源都被这个洪水攻击所占据了,正常的网页访问更本进不来。而且由于WEB服务器长时间超负荷运转,性能很不稳定,已经崩溃两次了。
张大民不是没有见过类似的情况。这种洪水攻击大部分时候都是伪造IP报文的源地址,有的时候挑RFCl918里面的私有IP地址,就是不让你发现攻击的源头。因为这些攻击的源头一旦被发现了,网络管理员们会彼此通告,这些问题主机很快会被管理员弄下线,这样黑客就少了一个可以控制的网上资源。
张大民希望这次攻击也是类似情况,因为这样的洪水攻击使反击的方法很简单,私有地址只能在私有空间使用,不应该在公用的互联网上出现,他只要在这个网站的网关路由器上配置一些访问控制列表,把IP报文中IP源地址是RFCl918的私有地址报文过滤掉就行了,因为这些报文肯定不会是有效报文。
但再进一步分析网络流量日志,张大民发现这个攻击是分部式的洪水攻击。大部分IP报文的源地址都是互联网上的真实地址。张大民试了几个地址,都是可以PING的通的。用NMAP扫描了一下,发现大部分是微软的主机,看样子都是被OWN的了“肉鸡”。张大民估计了一下,攻击源大概有四五万个不同的IP地址。日志里面也搀杂了很多伪造的IP源地址报文,一时之间,张大民也无法判断哪些是真实的IP地址,哪些是伪造的IP地址。估计真实的地址会在几百到一千台左右“很牛X啊”,张大民暗自想。“摆明了是不怕暴露被控制的主机(攻击源)的真实身份,估计被控制的主机的数目比目前发动DDOS估计的数目还要多的多,所以这个家伙也不在乎损失几千台肉鸡”。 “别光看日志啊”,小李等不急了,“有没有办法啊
“给你上游的ISP打电话了么?”,张大民间。
“打了,跟本就没人接”,小李的声音里已经带了点哭腔。
“唉”,张大民叹了口气。发生这种情况,最好的办法就是同上游的ISP联系,让ISP在他们的网络中找到DDOS网络进入ISP网络的入口,在ISP网络的入口出将其掐断。虽然DDOS估计来自四面八方,但大多数情况下会汇集到一起,进入上游ISP网络的入口点还是有限的。但如果紧急时刻找不到ISP的网络管理员,那就基本上没有什么办法了。
“如果找不到他们,我也没什么折”,张大民一摊手。“除非你想在你的网关路由器上配置上万个访问控制列表,把这些DDOS攻击的源头一个一个的掐掉”。
“今晚我是没有了”,张大民说,看着自己客户一脸绝望的样子,张大民心里也不是滋味,心中暗想,“道高一尺,魔高一丈,一定会有好方法来反击这些DDOS的家伙,也不一定非要向ISP的网管告急,我一定要好好研究一下怎么样能好好的反击DDOS。
||||||
[正文]
DDOS网络攻击定义
虽然张大民一向不太看得起这些DDOS的人的所作所为,但易攻难守的特点,让张大民还是觉得有一定的挑战性,千台“肉鸡”,发网络流量就是了,张大民不是没做过,现在已经懒得做了。但防守起来可就难了。
IPv4网络设计上的一个特点(缺点)就是任何人在互联网上都可以向任何人发报文,哪怕你不想让别人向你的主机发送报文,但只要你的IP地址是公用的IP地址,你也没办法阻止他。而且TCP在设计的时候,设计的思想之一就是所有的在互联网上的主机都要做个好人,大家都是互联网上规规矩矩的老实人,如果哪里有网络的塞车,TCP会自动的降低网络的发送流量,等网络的情况好点了,TCP再试着一点一点的增加网络流量,目的是尽量不给网络增加负担。当全世界的主机上的TCP都按照这样的方式运作时,就有了我们今天的互联网。大家都可以浏澜任何一个想浏澜的网站。就像在一个高速公路上,所有的司机都礼让三先,保证不要让高速公路塞车的情况出现。
但黑客们可就不管这么多了,他们就像哪些在高速公路上飙车的小年轻一样,在互联网的高速公路上横冲直撞。主机是我的,我想让它做什么都行,用不着礼让三先,也用不着遵守TCP的协议规定,不按照TCP状态机规定的状态行事。
拒绝服务的攻击(DOS)就是这么发展而来的。在学校里学过网络基本原理的人都知道TCP的三方握手协议,就是TCP客户要发一个SYN的报文,服务器回一个SYNACK的报文,客户再回一个ACK的报文,两方面就建立起了TCP的连接。
在这个过程中,服务器要为每一个TCP连接分部一定的内存来跟踪TCP复杂的状态,以便更好的保证TCP连接的正常工作。而拒绝服务的攻击不按照TCP的状态转换图来工作,只象服务器发布TCP的SYN报文,服务器以为是一个将要建立的TCP连接,因为它以为对面一定是一个遵纪守法的互联网公民,会为这个TCP连接建立状态,分配内存。而网络那一端的客户可不按照规矩办事,它只向服务器发布大量高速的TCP SYN报文。但服务器还是善良的相信每一个TCP SYN报文后面都是一个遵纪守法的互联网公民,继续为他们分配内存,导致了大量的浪费。更遭的是,由于这个不守法的主机的行为,导致其它守法的主机无法访问这台服务器,因为几乎所有的资源都被这台不守法的主机所占用了,其它守法的主机已经享受不到这台服务器提供的服务。这也是为什么这样的服务叫作拒绝服务的攻击。等人们意识到了这个问题,发现最简单的解决办法就是把这些不负责任的主机屏蔽掉。而能屏蔽这些主机的唯一方法就是根据这些主机的IP源地址,在IPv4的世界里,这是决定一台主机的唯一标识。
黑客们也有办法,好,你不是要根据我的IP源地址来屏蔽我吗?那我就伪造我的IP源地址,让你猜不出我是哪里来的,而且我的源地址是随机的,每一个报文都在变,这样你就不知道我是哪里来的了。他们这么一弄,网站管理员就没有办法了,到底如何屏蔽呢?网站管理员就找到系统管理员和网络管理员,他们一看,说这个很好解决,黑客可以伪造IP源地址,但这些机器可都是在网络管理员和系统管理员管理之下的,不管IP地址怎么变,攻击源只有一个,把攻击源屏蔽掉了就可以了。但道高一尺,魔高一丈,黑客们又说,好,你是想屏蔽我的攻击源是吧,那我就弄它几百几千个攻击源,每个攻击源还在不同的网络。每一个攻击源再用随机的IP源地址,这下看你怎么办。这样,不管是网站管理员,系统管理员还是网络管理员都在挠脑袋了。
而且他们挠脑袋一直挠到今天。到今天,分部式拒绝服务攻击(DDOS)是让网络工程界最为头疼的问题,因为攻击源分部在世界不同的角落,无法一一和他们的网络管理员和系统管理员联系,你这边是下午,那边可能就是凌晨。而且现在的商务网站,现金流量很大,每小时下线的损失可以到上百万美元。反应时间需要在几秒钟的范围之内,和网络管理员和系统管理员联系,找到问题主机,再切断攻击源需要至少几个小时,根本行不通。
正是因为没有可行的解决办法,一些恶意的黑客开始越来越肆无忌惮的使用这种攻击方法,逐渐发展到使用这种攻击方法来敲诈勒索大型商业网站,不给钱,就让你的网站下线,损失更大。给钱,那就更遭了,所有的黑客都知道你好欺负,敲诈你能拿钱,你就成了所有人的目标。
DDOS的反击方法
作为在网络安全界黑白两道都有很多朋友的张大民来说,他对这些情况是再熟悉不过了。
让张大民感慨的是,建设容易破坏难,这个规律对网络协议的研发也适用。TCP最大的特点就是它的可扩展性。在任何时候,全世界使用TCP的人不下几百万,说上千万也不过分(考虑到那么多网站)。而这么多TCP连接在互联网上同时存在,每个连接还可以保证一定的传输性能,不是一件很容易做到的事。
上大学的时候,看到TCP的状态图,觉得复杂的不得了,现在才知道复杂的状态是必须的,是保证TCP要表现为互联网上的谦谦君子,避免网络的塞车,让每一个想用互联网的人都可以随时随地使用。想当年调试TCP的时候,导致了整个互联网全部下网几次,才把TCP调试成功,其中所有人付出的努力可想而知。而这么大的一个努力,居然就让一个不讲道理的TCPSYN洪水攻击给弄得不知如何是好,真是让人感慨。
||||||
[正文]
利用ISP来反击DDOS
有一个,把攻击源屏蔽掉了就可以了。但道高一尺魔高一丈和很多网络管理员对DDOS的理解一样,张大民也认为,对DDOS的反击,使用ISP的网络是有效的方法之一。ISP们在和DDOS进行斗争的同时,也摸索出了一些实用的方法。其中最常用的就是黑洞路由了。
越来越多的网络攻击开始从攻击终端系统(PC)向攻击网络本身发展。如何预警,分析,反击针对网络本身的攻击,是互联网供应商(ISP)们要解决的。
防火墙,IDS,AV软件,主要都是针对企业网的用户,对於企业用户来说,最重要的是如何让PC不染毒。但对於互联网供应商来说,网络设备就是他们的要保护的对象,而对於互联网供应商的网络具有的网际网的性质,防火墙和IDS的deploy几乎很困难,对网络的传输性能也会有影响。但是,现在针对ISP的网络的攻击越来越多,现在的数据是,今天大概90%的针对ISP网络的攻击是“脚本小子”script kiddie所为,25%到27%的攻击针对路由的routing协议,但威胁性还不大。有5%-3%的攻击,是非常复杂的攻击,这5%-3%是ISP最担心的。现在ISP的防范技术还重要依赖于网络运行人员对网络网络流量的分析,毕竟,于企业网的网络运行人员不同,ISP的网络运行人员是ISP的核心雇员,是可以为ISP产生利润的员工,他们有相对来说好的经验和好的设备来防备他们的网络。
张大民知道一个北美网络运营商们常用的一个技术,
网络下水道技术。
大家可能都知道Honey Pot,也叫蜜罐技术,就是将一台PC机设置成陷阱,引诱黑客来,让黑客误以为是有缺陷的系统,然后监视黑客的行为。网络下水道技术是应用在网络上的Honey Pot是用来收集发向ISP网络的垃圾网络流量,然后加以分析,对这些网络垃圾的分析,可以知道是否有人在扫描网络,或者在进行攻击,可以用来预警,和防备。如果有黑客正在对ISP的网络展开攻击,网络下水道技术也可以把攻击的网络流量导向下水道,使ISP的网络能正常工作,免受攻击。
ISP的网络是用BGP来交流的,下水道技术就是用一台路由,向ISP的网络advertise一个route,可以的缺省的route,也可以是一个特定的子网。如果是一个特定的route,那么所以送到ISP网络的网络流量,如果ISP不知道如何route它,都会送到这个下水道的路由,对ISP来说,这些就是垃圾网络流量,但这些垃圾网络流量中可以有很多有用的信息,可以在下水道路由后面加一个网络分析器,可以就是一个最简单的PC,装个免费的IDS:Snort,再加个tcpdump。也可以是复杂的IDS。如果ISP检测到有黑客正在攻击一个子网的网段,这个下水道路由可以用BGP通知其它路由,让它们把指向这个子网的网络流量都送到下水道路由,等於是把攻击改变了方向。下面是一些图形演示:
这个为一个黑客正在对一个子网进行攻击,网络流量经过ISP的网络
图 1
SP可以用网络下水道技术,向别的BGP的邻居发布这个子网这个子网的攻击转移到了下水道路由。
图 2
张大民对ISP的这些伎俩都很了解,但让张大民不满意的是,这些技术都需要ISP的帮助。如果真的出了事情,打电话的时间就要几分钟,和现在网站要求的几秒中的反应时间还是有相当的差距。而且如果碰上不负责任的ISP的网络管理员,或者人家不上班,这个办法还是不行。“独立自主,自力更生”。张大民暗自想,“一定有办法可以不用麻烦ISP的网络管理员,又可以在几秒钟之内对DDOS进行反击”。“到底如何才能达到几秒钟的反应速度呢”?,张大民心里很清楚,这不是一个很容易回答的问题,“看样子我又要进入闭关状态了”,张大民想。
作为一个酷爱钻研网络技术黑客,张大民在遇到了技术难题时,最喜欢的办法就是要闭关,要排除一切干扰,一天24小时什么也不想,就是要把难题解决出来。有点象一休要挠脑袋打坐一样。
这次张大民也不例外,他上网订了一个酒店房间,要在这个周末全心全意考虑这个问题。入住酒店后,张大民关掉手机,切断电话,只叫服务生来送饭,开自己对于DDOS的思考。
||||||
[正文]
正常与异常网络流量建模
如果需要在几秒钟内作出反应,不但要预警,还要对DDOS进行反击,任何有人工参与的过程都是不可能的了。张大民想。整个过程需要自动化。需要能自动探测到被保护的网站是否受到了DDOS攻击。需要但能自动化的对DDOS进行反击。而整个过程要在几秒钟的范围内完成。
作为一个网络安全工程师,张大民也知道任何问题都需要把它分解成几个模块,然后每个模块各个击破。那首先就看看如何能自动探测到DDOS的攻击吧,张大民想。
很快,张大民就意识到,自动探测DDOS攻击的本质就是对正常与异常网络流量的建模过程。如果系统能够对正常的网络流量建立模型,找到平均值。那么如何高过这个平均值的网络流量都可以认为是异常网络流量。当然,到底高过多高才算作是异常的网络流量,那就要看每个网站管理员的定义了。但如果一个网站日常访问的网络流量是每秒钟100次,突然上升到了每秒钟一万次,那基本上肯定就是拒绝服务的攻击了。
而且张大民还意识到,这种探测方式对分布式拒绝服务攻击还是原始的拒绝服务攻击都是适用的。因为对不管是那种攻击,所有的网络流量最终都要汇总到网站本身。 如果能够对正常网络流量进行建模,然后一直监视随后的网络流量,那么如果发现异常,就能够实现自动预警了。张大民想。但这个建模的过程也应该是一个很费时间的过程,至少需要几个星期的时间吧。而且还要保证这几个星期内不受到DOS的攻击,否则建立的模型就不会精确的反应网站正常的访问流量。
对于网站访问流量进行建模的方法应该有很多种,这里面应该也有很多学问可以做,也包涵了一些数学问题。统计学,概率论和神经网络什么的。从这里面出来一个博士论文也不会稀奇。张大民想。但作为工程师的他来说,张大民觉得并不需要对网站的访问流量进行精确的建模,因为据他所知,所有的DDOS洪水攻击的网络流量都差不多是正常网站访问流量的十几倍,甚至几十倍。探测起来并不是很困难。
DDOS网络流量源地址校验
而真正困难的是,当探测到了DDOS的洪水攻击后该怎么办呢?张大民也开始挠脑袋了。因为当有了分布式的洪水攻击后,网站的网络流量内容就变得非常复杂。张大民想了一下,大概包涵一下几种网络流量
1 正常的客户来访问网站的访问流量
2 DDOS网络流量,IP源地址是真实IP地址
3 DDOS网络流量,IP源地址是伪装(假冒)IP公有地址
4 DDOS网络流量,IP源地址是假冒的IP私有地址
对于DDOS正确的反击应该是让正常的客户来访问网站的访问流量还能正常访问网站,而让DDOS网络流量2,3,4在到达网站之前就被拒绝掉。张大民想。但说的容易,到底如何才能实现呢?问题是这样的,虽然大家都是在讲网络流量,但每一个到达网站的其实都是离散的报文。通过分析这些离散报文的内容,是无法知道这个报文是是来自DDOS的源头,还是由正常访问网站的客户发过来的。必须要把离散的报文集合成网络流量。但是如果为每一个源地址都建立一个网络流量的概念,那就要使用很多系统的内存资源来跟踪这些状态,那实际上就很网站处理TCP连接的方法一样了,根本不能应付大流量的DDOS攻击。而且根据网络流量来分析,不能解决的问题是,如果真的是一个网站很流行,象一个时装网站要网络实时直播泳装模特的表演,而几百万人同时登录网站,网站的流量还是很大,几乎可以和DDOS时的网络流量相比,但这些访问都是正常的访问。根据网络流量的分析如何能把它们和DDOS的网络流量区别开来?
但到底怎么样才能自动区分正常的网站访问流量和DDOS的网络流量,而同时又不根据IP源地址保存网络流量的状态呢?张大民知道思考到现在,他已经几乎抓到了问题的本质,但就是找不到解决的方法。
“他奶奶的,老子想不出来解决方法,今天就不睡觉了!”,张大民的狠劲儿上来了。但作为工程师的他同时也知道,对一个问题,如果没有解决方法,是因为对这个问题的本质还是没有一个清晰的认识,没有找到问题的根本原因,而被围绕在问题外部的一些表明现象所迷惑。
“不要想网络流量,也不要想什么DDOS的”,张大民强迫自己,“应该想一下一个正常的网站访问过程和一个异常的网站访问过程的不同之处”。毕竟,DDOS的网络流量不是要实现一个正常的网页访问过程,而只是要占用服务器的资源。“那我先分析一下一个正常网站访问的过程”,张大民想。 正常网站访问过程
.客户:TCP SYN
.服务器:TCP SYNACK
.客户:TCP ACK
.客户:HTTP GET/POST网站网页
.服务器:HTTP网页
那么异常网站的访问过程呢?在通常情况的TCP SYN洪水攻击时,过程如下:
.客户:TCP SYN
.服务器:TCP SYNACK
.服务器:TCP SYNACK
.服务器:TCP SYNACK
.服务器:TCP SYNACK
.服务器:TCP RST
而且张大民注意到,在大多数的DDOS攻击,攻击服务器主机都是被OWN的肉鸡。攻击的工具在这些肉鸡上并不建立一个有效的TCP状态,它们只是拼命向服务器发送TCP SYN的单一报文。所以当服务器发过来TCP SYN ACK时,这些肉鸡上根本没有相应的TCP连接来接收这个服务器发回来的报文,并根据这个报文找到相应的TCP连接状态而发任何有效的报文回去。
“有点意思”,张大民想,张大民敏锐的意识到对TCP状态的理解对于确定是否是有效的TCP链接的重要性。他开始后悔当初在学校读书是没有把TCP的状态图好好理解透彻。
||||||
[正文]
张大民赶紧下载了TCP的状态表。而且在下载过程中,他又发现了一个非常有效的技术,来保存TCP的状态信息在TCP的系列号(SEQUENC NUMBER)中,叫TCP COOKIE。TCP COOKIE是一个特别的TCP序列号。服务器通过这个序列号,可以恢复这个TCP链接的整个状态信息。这这个发现让张大民有点大喜过望了。这正是他所要的。一个可以判断TCP是否是有效的链接,但又不必保存TCP的状态信息。这样,一个系统可以验证一个TCP链接是否是有效的链接,但同时又不保存任何TCP的状态信息,等系统验证这个TCP链接是有效的,它可以把这个COOKIE转发给WEB服务器,让WEB服务器从这个COOKIE里面构建原始的TCP状态信息,完成有效的TCP链接。“而且也可以用某种方法让客户端从新建立一个新的TCP链接,如果客户端肯建立的话,那就说明客户端是一个有效的TCP链接,遵循TCP或者HTTP的协议。而不是一个被OWN的主机,拼命向一台WEB服务器发送TCP SYN报文而不保存任何状态”,张大民思考到这里,感觉到他已经离一个解决方案不远了。通过对TCP和HTTP的近一步分析,在天色蒙蒙亮的时候,张大民终于拿出了第一个验证远程客户端有效性的方案。
图 3
首先,一个保护层需要放在客户端和WEB服务器之间,来拦截所有的从客户端发来的TCP SYN报文。在接到TCP SYN报文后,这个保护层要发一个TCP SYNACK回去,TCP的序列好是计算好的TCPSYN COOKIE,根据这个COOKIE,一个完整的TCP状态可以恢复出来。注意这时这个保护层并不保存任何TCP的状态,它在等着客户端是否能送一个TCPACK回来。如果回来,就证明远程客户是一个有效的客户,因为远程客户也和WEB服务器一样,在保存这个TCP的状态。而且通过对HTTP的分析,张大民在此基础上又加了一道防御。保护层会送回一个HTTP重定向的TCP报文。根据HTTP的RFC的规定,当一个HTTP收到HTTP重定向报文后,它应该中断HTTP和TCP的链接。根据HTTP重定向报文中的内容重新建立新的TCP链接。这样,保护层也验证了HTTP是否是一个有效的HTTP,如果是,就应该遵守HTTP的规定,中断TCP链接,并重新向WEB服务器发布新的TCPSYN链接。
当一台肉鸡向WEB服务器发布TCP SYN洪水工具时,它是不会送任何TCP ACK回来的。如果保护层没有收到这个TCP ACK,就发现了这个源地址来的报文不是正常的报文,以后也不会让这个源地址来的报文通过了。从而达到了过滤DDOS网络流量的目的。
尝到了胜利的喜悦后,张大民也顾不上睡觉,又好好分析了TCP的状态装换图。这次,他主要是找有什么报文能使客户端自动终止一个TCP链接,然后在自动重试的。他发现,大部分应用层的协议,当一个TCP链接出现异常后,通常情况下都要进行重试,在建立新的TCP链接,直到三到四次。这样,当服务生敲门送上早饭的时候,黑客张大民又有了另一个TCP客户有效性验证方案。
图 4
这次,当保护层拦截到客户端发布来的TCP SYN报文后,保护层送一个TCPACK,而不是TCP SYNACK回去。根据TCP的状态转换图,当客户端接收到这个TCP ACK报文时,客户端认为TCP的链接出了问题,会向服务器端发一个TCP RST的报文来中断目前的TCP链接。而使用TCP的应用层协议,如HTTP通常情况下会重试。如果是一个有效的HTTP客户,而不是一个发送DDOS网络流量的肉鸡,这个客户会重试。保护层会让这个重试的报文通过,而到达正常的WEB服务器。
张大民已经有点崇拜自己了。这个想法就更天才了,这个办法只是拦截TCPSYN,然后送一个TCP ACK回去,如果收不到客户端发回来的TCP RST,那么客户端就肯定是发送DDOS网络流量的肉鸡。如果不是,客户端自己会重新建立另一个TCP链接。而保护层在收到这个客户发来的TCP RST后,会让这个客户的新的TCP链接通过。保持肉鸡的网络流量被掐断,也保证了有效的客户可以正常访问网站。
如果我是做市场的,我就把这个中间层叫作“智能Anti—DDOS防火墙”沾沾自喜的想。
||||||
[正文]
DDOS防护方案的系统实现思路
这个系统设计最核心的思想就是保护层不保留任何TCP的状态信息。正是因为这样,保护层才能比一般的WEB服务器接收流量大的多的TCP网络流量。而且保护层也做到了对正常的网络流量和DDOS的网络流量的区分,保证让正常的网络流量通过,而拒绝DDOS的网络流量到达WEB服务器,从而保证了WEB服务器的资源只服务于正常访问网站的客户。
张大民一边想, 一边理顺着自己的思路
那么在一个实际运行的网站中,这个系统应该放在哪里呢?最直接的想法就是把这个保护层放在网站服务器的前面,就像一般的企业网把防火墙放在企业网的前面一样。这样,当没有DDOS攻击网站服务器时,保护层就让正常访问网站的网络流量通过。当有DDOS攻击网站服务器时,保护层就启动反击装置,把DDOS的网络流量过滤掉。
这样的设计应该是可行的。张大民想。但问题是,在打多数情况下网站都不会遭到DDOS的攻击,把这个保护层一直放在网站服务器前面,接收网络流量,是否有点太浪费了?最好的方法是,通过路由来指导网络流量,当没有DDOS网络流量攻击网站服务器时,让所有的网络流量都不经过保护层,直接到达网站服务器。一旦遭到攻击,就通过路由把所有的网络流量都现转到保护层,让保护层看一下,把DDOS的网络流量过滤掉。
这样的设计应该是比较优化的。张大民在想张大民知道,通过路由自动转移网络流量的方向不是什么困难的技术问题。当网络流量的建模和预警装置发现DDOS网络流量时,象网络中自动插入静态路由或者BGP路由来指导网络流量的方向,这些在现代网络中已经是很常用的技术了。
图 5
在这个方案中,保护层首先要对网站的流量进行统计建模。然后保护层一直监视着网络的流量状况,当流量出现异常时,保护层进入反击状态,首先改变访问网站服务器的网络流量的方向,让这些网络流量都首先都经过保护层。保护层就用源地址验证的方法对这些访问流量进行过滤,过滤掉DDOS的网络流量,让正常的网络流量传过保护层,正常访问网站服务器。
看着自己的设计方案,张大民突然想起了雷锋同志日记里的话。“对待同志要像春天般的温暖,对待工作要像夏天一样火热,对待个人主义要像秋风扫落叶一样,对待敌人要像严冬一样严酷无情。”
这也正是DDOS反击系统设计的准则之一啊,张大民不禁笑出声来:
“对待正常的网络访问流量要像春天般的温暖,对待访问网站的客户要像夏天一样火热,对待被利用的肉鸡要像秋风扫落叶一样,对待真正的DDOS网络流量要像严冬一样严酷无情。”
而且雷锋同志的这些可都是要手工去实现的。DDOS反击的方法必须是全自动化
结束语
张大民站起身来,心中充满了工作的喜悦。这也正是他为什么热爱网络安全工作的原因之一。网络安全领域充满了挑战性。魔高一尺,道高一丈。亦或道高一尺,魔高一丈。攻防之间此消彼长,永远是在动态之中在寻找平衡。
不管是哪一方,当经过冥思苦想,找到解决方案,在攻防战中占据主动时,那种喜悦的心情,只有经历过的人才知道。 在这次经历中,黑客张大民也深深感觉到基本功对于网络安全工作的重要。几乎所有学过计算机网络的人都知道TCP的状态图,但又有多少人认真的研究过呢?能否不但知其然,还知其所以然,往往是区别一个有创意的黑客还是一个循规蹈矩的网络安全工程师的主要原因。
张大民正高兴着,突然间一个想法又击中了自己。自己光顾考虑TCP了,那么哪些基于UDP的应用,如果遭到了DDOS的攻击该怎么办呢?张大民又开始挠脑袋了。因为他知道,同TCP不同,UDP是没有状态的,就和IP一样。UDP和IP唯一的区别就是UDP提供了应用层的端口。而他这两天冥思苦想出来的解决方案完全不适合UDP,因为自己的解决方案是以TCP的状态图为根据的。
这个就更难了。难道自己又要闭关一次不成?但张大民心里已经有了些准备。因为通过这两天的思考,他知道,验证一个客户主机是正常的主机,还是被OWN的肉鸡被用来发动攻击,关键就是看远程的客户主机是否遵循RFC的协议来运作。如果是,那就基本上是正常的主机。否则,就很有可能是被OWN的肉鸡。应该还是有办法的,张大民暗想。实在不行,如果自己实在没办法了,就去找江南小镇的神秘老人……
||||||
[正文]
上一页 1 2 3 4 5 6 7
参考资料:
RIVERHEAD产品
ARBOR NETWORK产品
NANOG.ORG
附图1:不同类型DOS网络流量增长趋势分析
附图2:DOS攻击时间趋势分析
附图3:DOS攻击网络流量趋势分析
┌──────┬────┬───────┐
│ │ Size│Normalized BW
│AttackType│││
│ │(GbYtes) │ (Kbps) │
├──────┼────┼───────┤
│ SYN │ 234 │ 426│
├──────┼────┼───────┤
│ ACK │ 32│ 56 │
├──────┼────┼───────┤
│ NULL│ 13│ 23 │
├──────┼────┼───────┤
│ UDP │ 187 │ 339│
├──────┼────┼───────┤
│ ICMP│254│ 460│
├──────┼────┼───────┤
│Total│ 720 │ 1304 │
└──────┴────┴───────┘
编者:我们网络管理版的斑竹匙是这个张大民同志的fans,今天问我要他的QQ呢。我晕了半天然后告诉他那是个杜撰的人物,你找他做什么?
匙说: 有点想法想交流下.....
匙说:
就是普通DDOS方法是修改任意的源IP然后发送这个DDOS数据包到目标机器然后换另一个源IP继续DDOS……这个张大民可以防住
但是只要黑客每修改一个源IP发送两次这样相同的攻击包出去,他的防御就形同虚设了就是说修改源IP后,连续发送两次这样的数据包
我问:为什么两次上的就不能防止住了呢
匙:"这种思路是中间创造一个保护层拦截第一次的,然后等待第二次
如果没有第二次说明是黑客篡改的DDOS攻击包,如果有说明是正常连接的用户
但是防不住黑客发第二次
我觉得他的话很可疑, 但是苦于不是这方面的专家,一时也不能辩驳。有感兴趣的朋友可以去网络管理版参与讨论,也好杀杀他的威风:)
其实,看文章不是我们的目的,最重要的是----思考。