下面是小编整理的从DoS到DDoS分布式拒绝服务攻击与防范手段(共含5篇),欢迎您阅读分享借鉴,希望对您有所帮助。同时,但愿您也能像本文投稿人“灭蜂小能手”一样,积极向本站投稿分享好文章。
一、从DoS到DDoS
拒绝服务(Denial of
Service,DoS)由来已久,自从有了Internet,就有了拒绝服务式攻击方法。由于过去没有大型网站或机构受到过这种攻击,其劣性并不突出。直到初,Yahoo!、eBay及Amazon等遭其暗算,它才露出庐山真面目。
在典型的Internet连接中,用户访问一个网站时,客户端会先向网站服务器发送一条信息要求建立连接,只有当服务器确认该请求合法,并将访问许可返回给用户时,用户才可对该服务器进行访问。DoS攻击的方法是,恶意用户会向服务器发送多个连接请求,使其呈满负载状态,并且将所有请求的返回地址进行伪造。这样,在服务器企图将认证结构返回给用户时,它将无法找到这些用户。此时,服务器只好等待,有时可能会等上1分钟才关闭此连接。可怕的是,在服务器关闭连接后,攻击者又会发送新的一批虚假请求,重复上一次过程,直到服务器因过载而拒绝提供服务。这些攻击事件并没有入侵网站,也没有篡改或是破坏资料,只是利用程序在瞬间产生大量的网络封包,让对方的网络及主机瘫痪,使正常使用者无法获得主机及时的服务。
然而,年初攻击Yahoo!的元凶还不是简单的DoS,虽然与DoS攻击一样,也是向被攻击目标连续发送大量伪造的IP包,以导致服务器不能为合法用户提供正常服务(比如此次给Yahoo!站点路由器发出的无效请求高达1GB/s),但是它区别于DoS的“绝妙”之处在于:
动员了大量“无辜”的计算机向目标共同发起进攻,采用了分布式拒绝服务(Distributed Denial of Service,DDoS)攻击手段。
DDoS把DoS又向前发展了一步,DDoS的行为更为自动化,它可以方便地协调从多台计算机上启动的进程,让一股DoS洪流冲击网络,并使网络因过载而崩溃。确切地讲,DDoS攻击是指在不同的高带宽主机上安装大量的DoS服务程序,它们等待来自中央客户端的命令,中央客户端随后通知全体受控服务程序,并批示它们对一个特定目标发送尽可能多的网络访问请求。作为攻击者,必须通过telnet连接到他想利用的每一台远程主机上,并以用户身份登录,然后手工输入命令,启动每一台主机向攻击目标发送海量信息流。
DDoS与DoS的最大区别是人多力量大。原来的DoS是一台机器攻击目标,现在的DDoS是很多台机器利用他们的高带宽攻击目标,更容易将目标网站攻掉。除此之外,DDoS攻击方式较为自动化,攻击者可以把他的程序安装到网络中的多台机器上,所采用的攻击工具致使被攻击对象难以察觉,只要攻击者发下攻击命令,这些机器便发起进攻。
二、DoS的攻击方法
对DoS而言,其攻击方式很多,主要使用的攻击有3种,分别是TCP-SYN flood、UDP flood和ICMP flood,
当用户进行一次标准的TCP连接时,会有一个3次握手过程。首先是请求服务方发送一个SYN消息,服务方收到SYN后,会向请求方回送一个SYN-ACK表示确认,当请求方收到SYN-ACK后,再次向服务方发送一个ACK消息,这样,一次TCP连接建立成功。但是TCP-SYN
flood在实现过程中只进行前2个步骤:当服务方收到请求方的SYN-ACK确认消息后,请求方由于采用源地址欺骗等手段使得服务方收不到ACK回应,于是,服务方会在一定时间处于等待接收请求方ACK消息的状态。对于某台服务器来说,可用的TCP连接是有限的,如果恶意攻击方快速连续地发送此类连接请求,该服务器可用的TCP连接队列将很快被阻塞,系统可用资源急剧减少,网络可用带宽迅速缩小,长此下去,网络将无法向用户提供正常的服务。
由于UDP(用户数据包协议)在网络中的应用比较广泛,基于UDP攻击种类也较多。如今在Internet上提供WWW和Mail等服务设备通常是使用Unix的服务器,它们默认一些被恶意利用的UDP服务,如echo和chargen服务,它会显示接收到的每一个数据包,而原本作为测试功能的chargen服务会在收到每一个数据包时随机反馈一些字符,如果恶意攻击者将这2个UDP服务互指,则网络可用带宽将很快耗尽。
三、DDoS的攻击方法
目前,我们知道的对网络进行DDoS攻击所使用的工具有:Trinoo、Tribe Flood
Network(TFN)、TFN2k和Stacheldraht等。它们的攻击思路基本相近。
1.Trinoo:它是基于UDP
flood的攻击软件,它向被攻击目标主机的随机端口发出全零的4字节UDP包,在处理这些超出其处理能力垃圾数据包的过程中,被攻击主机的网络性能不断下降,直到不能提供正常服务,乃至崩溃。它对IP地址不做假,此攻击方法用得不多。
2.TFN:它是利用ICMP给代理服务器下命令,其来源可以做假。它可以发动SYN flood、UDP flood、ICMP
flood及Smurf(利用多台服务器发出海量数据包,实施DoS攻击)等攻击。TFN的升级版TFN2k的特点是:对命令数据包加密、更难查询命令内容、命令来源可以做假,还有一个后门控制代理服务器。
3.Stacheldraht:对命令来源做假,而且可以防范一些路由器用RFC2267过滤。若检查出有过滤现象,它将只做假IP地址最后8位,从而让用户无法了解到底是哪几个网段的哪台机器被攻击。此外,它还具有自动更新功能,可随软件的更新而自动更新。
一、从DoS到DDoS
拒绝服务(Denial of Service,DoS)由来已久,自从有了Internet,就有了拒绝服务式攻击方法。由于过去没有大型网站或机构受到过这种攻击,其劣性并不突出。直到20初,Yahoo!、eBay及Amazon等遭其暗算,它才露出庐山真面目。
在典型的Internet连接中,用户访问一个网站时,客户端会先向网站服务器发送一条信息要求建立连接,只有当服务器确认该请求合法,并将访问许可返回给用户时,用户才可对该服务器进行访问。DoS攻击的方法是,恶意用户会向服务器发送多个连接请求,使其呈满负载状态,并且将所有请求的返回地址进行伪造。这样,在服务器企图将认证结构返回给用户时,它将无法找到这些用户。此时,服务器只好等待,有时可能会等上1分钟才关闭此连接。可怕的是,在服务器关闭连接后,攻击者又会发送新的一批虚假请求,重复上一次过程,直到服务器因过载而拒绝提供服务。这些攻击事件并没有入侵网站,也没有篡改或是破坏资料,只是利用程序在瞬间产生大量的网络封包,让对方的网络及主机瘫痪,使正常使用者无法获得主机及时的服务。
然而,年初攻击Yahoo!的元凶还不是简单的DoS,虽然与DoS攻击一样,也是向被攻击目标连续发送大量伪造的IP包,以导致服务器不能为合法用户提供正常服务(比如此次给Yahoo!站点路由器发出的无效请求高达1GB/s),但是它区别于DoS的“绝妙”之处在于: 动员了大量“无辜”的计算机向目标共同发起进攻,采用了分布式拒绝服务(Distributed Denial of Service,DDoS)攻击手段。
DDoS把DoS又向前发展了一步,DDoS的行为更为自动化,它可以方便地协调从多台计算机上启动的进程,让一股DoS洪流冲击网络,并使网络因过载而崩溃。确切地讲,DDoS攻击是指在不同的高带宽主机上安装大量的DoS服务程序,它们等待来自中央客户端的命令,中央客户端随后通知全体受控服务程序,并批示它们对一个特定目标发送尽可能多的网络访问请求。作为攻击者,必须通过telnet连接到他想利用的每一台远程主机上,并以用户身份登录,然后手工输入命令,启动每一台主机向攻击目标发送海量信息流。
DDoS与DoS的最大区别是人多力量大。原来的DoS是一台机器攻击目标,现在的DDoS是很多台机器利用他们的高带宽攻击目标,更容易将目标网站攻掉。除此之外,DDoS攻击方式较为自动化,攻击者可以把他的程序安装到网络中的多台机器上,所采用的攻击工具致使被攻击对象难以察觉,只要攻击者发下攻击命令,这些机器便发起进攻。
二、DoS的攻击方法
对DoS而言,其攻击方式很多,主要使用的攻击有3种,分别是TCP-SYN flood、UDP flood和ICMP flood。
当用户进行一次标准的TCP连接时,会有一个3次握手过程。首先是请求服务方发送一个SYN消息,服务方收到SYN后,会向请求方回送一个SYN-ACK表示确认,当请求方收到SYN-ACK后,再次向服务方发送一个ACK消息,这样,一次TCP连接建立成功。但是TCP-SYN flood在实现过程中只进行前2个步骤:当服务方收到请求方的SYN-ACK确认消息后,请求方由于采用源地址欺骗等手段使得服务方收不到ACK回应,于是,服务方会在一定时间处于等待接收请求方ACK消息的状态。对于某台服务器来说,可用的TCP连接是有限的,如果恶意攻击方快速连续地发送此类连接请求,该服务器可用的TCP连接队列将很快被阻塞,系统可用资源急剧减少,网络可用带宽迅速缩小,长此下去,网络将无法向用户提供正常的服务。
由于UDP(用户数据包协议)在网络中的应用比较广泛,基于UDP攻击种类也较多。如今在Internet上提供WWW和Mail等服务设备通常是使用Unix的服务器,它们默认一些被恶意利用的UDP服务,如echo和chargen服务,它会显示接收到的每一个数据包,而原本作为测试功能的chargen服务会在收到每一个数据包时随机反馈一些字符,如果恶意攻击者将这2个UDP服务互指,则网络可用带宽将很快耗尽。
三、DDoS的攻击方法
目前,我们知道的对网络进行DDoS攻击所使用的工具有:Trinoo、Tribe Flood Network(TFN)、TFN2k和Stacheldraht等。它们的攻击思路基本相近。
1.Trinoo:它是基于UDP flood的攻击软件,它向被攻击目标主机的随机端口发出全零的4字节UDP包,在处理这些超出其处理能力垃圾数据包的过程中,被攻击主机的网络性能不断下降,直到不能提供正常服务,乃至崩溃。它对IP地址不做假,此攻击方法用得不多。
2.TFN:它是利用ICMP给代理服务器下命令,其来源可以做假。它可以发动SYN flood、UDP flood、ICMP flood及Smurf(利用多台服务器发出海量数据包,实施DoS攻击)等攻击。TFN的升级版TFN2k的特点是:对命令数据包加密、更难查询命令内容、命令来源可以做假,还有一个后门控制代理服务器。
3.Stacheldraht:对命令来源做假,而且可以防范一些路由器用RFC2267过滤,
若检查出有过滤现象,它将只做假IP地址最后8位,从而让用户无法了解到底是哪几个网段的哪台机器被攻击。此外,它还具有自动更新功能,可随软件的更新而自动更新。
值得一提的是,像Trinoo和TFN等攻击软件都是可以从网上随意找到的公开软件,所以任何一个上网者都可能构成网络安全的潜在威胁。面对凶多吉少的DDoS险滩,我们该如何对付随时出现的 攻击呢?杨宁先生说,那要看用户处于何种状态,是正身处被攻击的困围中,还是准备事先预防。
四、怎样对付正在进行的攻击
如果用户正在遭受攻击,他所能做的抵御工作非常有限。因为在原本没有准备好的情况下有大流量的灾难性攻击冲向用户,很可能用户在还没回过神之际,网络已经瘫痪。但是,用户还是可以抓住机会寻求一线希望的。
首先,检查攻击来源,通常 会通过很多假的IP地址发起攻击,此时,用户若能够分辨出哪些是真IP地址,哪些是假IP地址,然后了解这些IP来自哪些网段,再找网段管理员把机器关掉,即可消除攻击。
其次,找出攻击者所经过的路由,把攻击屏蔽掉。比如 发射SNP包,用户可把此包过滤掉。若 从某些端口发动攻击,用户可把这些端口屏蔽掉,以狙击入侵。
最后一种比较折衷的方法是在路由器上滤掉ICMP(Internet Control Message Protocol)和UDP。ICMP用于提交错误和改变控制信息,常用来判断网络的连通性。
五、如何事先预防攻击
其实,很多攻击方法并不新,存在时间也很长了(就像DoS),基本上人们对它们已经有所了解,只是当它被有恶意的人利用,破坏网络安全,人们才意识到问题的严重性。因此,人们应充分重视建立完善的安全系统,防患于未然。在具体工作中,我们不妨从以下一些方面预防 攻击。
1.用足够的机器承受 攻击。这是一种较为理想的应对策略。如果用户拥有足够的容量和足够的资源给 攻击,在它不断访问用户、夺取用户资源之时,自己的能量也在逐渐耗失,或许未等用户被攻死, 已无力支招儿。
2.充分利用网络设备保护网络资源。所谓网络设备是指路由器、防火墙等负载均衡设备,它们可将网络有效地保护起来。当Yahoo!被攻击时最先死掉的是路由器,但其他机器没有死。死掉的路由器经重启后会恢复正常,而且启动起来还很快,没有什么损失。若其他服务器死掉,其中的数据会丢失,而且重启服务器又是一个漫长的过程,相信没有路由器这道屏障,Yahoo!会受到无法估量的重创。
3.使用Inexpress、Express Forwarding过滤不必要的服务和端口,即在路由器上过滤假IP。比如Cisco公司的CEF(Cisco Express Forwarding)可以针对封包 Source IP 和 Routing Table 做比较,并加以过滤。
4.使用Unicast Reverse Path Forwarding检查访问者的来源。它通过反向路由表查询的方法检查访问者的IP地址是否是真,如果是假的,它将予以屏蔽。许多 攻击常采用假IP地址方式迷惑用户,很难查出它来自何处,因此,利用Unicast Reverse Path Forwarding可减少假IP地址的出现,有助于提高网络安全性。
5.过滤所有RFC1918 IP地址。RFC1918 IP地址是内部网的IP地址,像10.0.0.0、192.168.0.0和172.16.0.0,它们不是某个网段的固定IP地址,而是Internet内部保留的区域性IP地址,应该把它们过滤掉。
6.限制SYN/ICMP流量。用户应在路由器上配置SYN/ICMP的最大流量来限制 SYN/ICMP 封包所能占有的最高频宽,这样,当出现大量的超过所限定的SYN/ICMP流量时,说明不是正常的网络访问,而是有 入侵。
六、几点忠告
DDoS给著名网站带来巨大灾难的同时,也给人们再次敲响了警钟,作为网络用户,特别是负责网络安全的管理员、决策者,应该怎样维护好网络安全呢?
1.一个企业必须有专人负责其网络安全,至少有一个人全权进行系统安全维护,他应该对企业网络中的所有机器进行检查,以减少漏洞。
2.作为专门负责网络安全的管理员,必须对攻击方法了如指掌,换句话说,他要了解 是怎么工作的,只有这样,他才能保护好自己的机器。甚至负责人可在局域网中模仿 ,“入侵”自己的系统,以发现网络漏洞,及时补漏。
3.网络安全管理员应该尽职尽责,仔细认真。在已发生的 攻击中,相当一部分事件是因为管理员工作疏忽造成的。
4.严格控制密码,提高密码保险性。在网络中,有些密码设置得较易被破获,因此应尽量减少知道密码的人数,分别给不同的人设定不同的使用权限。
5.选择一款优秀的防黑安全产品。即配备监测工具,不断提高对系统的认识。无论是从网上下载公开源代码的监测工具,还是购买网络监测工具,都要实时监测别人是否在扫描自己的端口。若有人扫描端口,意味着有人可能要攻击此网络。
下面是我在实验室中模拟的一次Syn Flood攻击的实际过程
这一个局域网环境,只有一台攻击机(PIII667/128/mandrake),被攻击的是一台Solaris 8.0 (spark)的主机,网络设备是Cisco的百兆交换机,这是在攻击并未进行之前,在Solaris上进行snoop的记录,snoop与tcpdump等网络监听工具一样,也是一个很好的网络抓包与分析的工具。可以看到攻击之前,目标主机上接到的基本上都是一些普通的网络包。
…
…
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
? -> (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
192.168.0.66 -> 192.168.0.255 NBT Datagram Service Type=17 Source=GU[0]
192.168.0.210 -> 192.168.0.255 NBT Datagram Service Type=17 Source=ROOTDC[20]
192.168.0.247 -> 192.168.0.255 NBT Datagram Service Type=17 Source=TSC[0]
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
192.168.0.200 -> (broadcast) ARP C Who is 192.168.0.102, 192.168.0.102 ?
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
192.168.0.66 -> 192.168.0.255 NBT Datagram Service Type=17 Source=GU[0]
192.168.0.66 -> 192.168.0.255 NBT Datagram Service Type=17 Source=GU[0]
192.168.0.210 -> 192.168.0.255 NBT Datagram Service Type=17 Source=ROOTDC[20]
? -> (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes
? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes……
接着,攻击机开始发包,DDoS开始了…,突然间sun主机上的snoop窗口开始飞速地翻屏,显示出接到数量巨大的Syn请求。这时的屏幕就好象是时速300公里的列车上的一扇车窗。这是在Syn Flood攻击时的snoop输出结果:
…
127.0.0.178 -> lab183.lab.net AUTH C port=1352
127.0.0.178 -> lab183.lab.net TCP D=114 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=115 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net UUCP-PATH C port=1352
127.0.0.178 -> lab183.lab.net TCP D=118 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net NNTP C port=1352
127.0.0.178 -> lab183.lab.net TCP D=121 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=122 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=124 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=125 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=126 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=128 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=130 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=131 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=133 S=1352 Syn Seq=674711609 Len=0 Win=65535
127.0.0.178 -> lab183.lab.net TCP D=135 S=1352 Syn Seq=674711609 Len=0 Win=65535…
这时候内容完全不同了,再也收不到刚才那些正常的网络包,只有DDoS包。大家注意一下,这里所有的Syn Flood攻击包的源地址都是伪造的,给追查工作带来很大困难。这时在被攻击主机上积累了多少Syn的半连接呢?我们用netstat来看一下:
# netstat -an | grep SYN
…
…
192.168.0.183.9 127.0.0.79.1801 0 0 24656 0 SYN_RCVD
192.168.0.183.13 127.0.0.79.1801 0 0 24656 0 SYN_RCVD
192.168.0.183.19 127.0.0.79.1801 0 0 24656 0 SYN_RCVD
192.168.0.183.21 127.0.0.79.1801 0 0 24656 0 SYN_RCVD
192.168.0.183.22 127.0.0.79.1801 0 0 24656 0 SYN_RCVD
192.168.0.183.23 127.0.0.79.1801 0 0 24656 0 SYN_RCVD
192.168.0.183.25 127.0.0.79.1801 0 0 24656 0 SYN_RCVD
192.168.0.183.37 127.0.0.79.1801 0 0 24656 0 SYN_RCVD
192.168.0.183.53 127.0.0.79.1801 0 0 24656 0 SYN_RCVD……
其中SYN_RCVD表示当前未完成的TCP SYN队列,统计一下:
# netstat -an | grep SYN | wc -l
5273
# netstat -an | grep SYN | wc -l
5154
# netstat -an | grep SYN | wc -l
5267
…..
共有五千多个Syn的半连接存储在内存中,
这时候被攻击机已经不能响应新的服务请求了,系统运行非常慢,也无法ping通。
这是在攻击发起后仅仅70秒钟左右时的情况。
DDoS的防范
到目前为止,进行DDoS攻击的防御还是比较困难的。首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击。一位资深的安全专家给了个形象的比喻:DDoS就好象有1,000个人同时给你家里打电话,这时候你的朋友还打得进来吗?
不过即使它难于防范,也不是说我们就应该逆来顺受,实际上防止DDoS并不是绝对不可行的事情。互联网的使用者是各种各样的,与DDoS做斗争,不同的角色有不同的任务。我们以下面几种角色为例:
企业网管理员
ISP、ICP管理员
骨干网络运营商
企业网管理员
网管员做为一个企业内部网的管理者,往往也是安全员、守护神。在他维护的网络中有一些服务器需要向外提供WWW服务,因而不可避免地成为DDoS的攻击目标,他该如何做呢?可以从主机与网络设备两个角度去考虑。
主机上的设置
几乎所有的主机平台都有抵御DoS的设置,总结一下,基本的有几种:
关闭不必要的服务
限制同时打开的Syn半连接数目
缩短Syn半连接的time out 时间
及时更新系统补丁
网络设备上的设置
企业网的网络设备可以从防火墙与路由器上考虑。这两个设备是到外界的接口设备,在进行防DDoS设置的同时,要注意一下这是以多大的效率牺牲为代价的,对你来说是否值得。
1.防火墙
禁止对主机的非开放服务的访问
限制同时打开的SYN最大连接数
限制特定IP地址的访问
启用防火墙的防DDoS的属性
严格限制对外开放的服务器的向外访问
第五项主要是防止自己的服务器被当做工具去害人。
2.路由器
以Cisco路由器为例
Cisco Express Forwarding(CEF)
使用 unicast reverse-path
访问控制列表(ACL)过滤
设置SYN数据包流量速率
升级版本过低的ISO
为路由器建立log server
其中使用CEF和Unicast设置时要特别注意,使用不当会造成路由器工作效率严重下降,升级IOS也应谨慎。路由器是网络的核心设备,与大家分享一下进行设置修改时的小经验,就是先不保存。Cisco路由器有两份配置startup config和running config,修改的时候改变的是running config,可以让这个配置先跑一段时间(三五天的就随意啦),觉得可行后再保存配置到startup config;而如果不满意想恢复原来的配置,用copy start run就行了。
ISP / ICP管理员
ISP / ICP为很多中小型企业提供了各种规模的主机托管业务,所以在防DDoS时,除了与企业网管理员一样的手段外,还要特别注意自己管理范围内的客户托管主机不要成为傀儡机。客观上说,这些托管主机的安全性普遍是很差的,有的连基本的补丁都没有打就赤膊上阵了,成为 最喜欢的“肉鸡”,因为不管这台机器 怎么用都不会有被发现的危险,它的安全管理太差了;还不必说托管的主机都是高性能、高带宽的-简直就是为DDoS定制的。而做为ISP的管理员,对托管主机是没有直接管理的权力的,只能通知让客户来处理。在实际情况时,有很多客户与自己的托管主机服务商配合得不是很好,造成ISP管理员明知自己负责的一台托管主机成为了傀儡机,却没有什么办法的局面。而托管业务又是买方市场,ISP还不敢得罪客户,怎么办?咱们管理员和客户搞好关系吧,没办法,谁让人家是上帝呢?呵呵,客户多配合一些,ISP的主机更安全一些,被别人告状的可能性也小一些。
骨干网络运营商
他们提供了互联网存在的物理基础。如果骨干网络运营商可以很好地合作的话,DDoS攻击可以很好地被预防。在yahoo等知名网站被攻击后,美国的网络安全研究机构提出了骨干运营商联手来解决DDoS攻击的方案。其实方法很简单,就是每家运营商在自己的出口路由器上进行源IP地址的验证,如果在自己的路由表中没有到这个数据包源IP的路由,就丢掉这个包。这种方法可以阻止 利用伪造的源IP来进行DDoS攻击。不过同样,这样做会降低路由器的效率,这也是骨干运营商非常关注的问题,所以这种做法真正采用起来还很困难。
对DDoS的原理与应付方法的研究一直在进行中,找到一个既有效又切实可行的方案不是一朝一夕的事情。但目前我们至少可以做到把自己的网络与主机维护好,首先让自己的主机不成为别人利用的对象去攻击别人;其次,在受到攻击的时候,要尽量地保存证据,以便事后追查,一个良好的网络和日志系统是必要的。无论DDoS的防御向何处发展,这都将是一个社会工程,需要IT界的同行们来一起关注,通力合作。
参考资料
staff.washington.edu/dittrich/misc/ddos/
关于作者徐一丁,北京玛赛网络系统有限公司方案设计部高级工程师,从事IT工作多年。目前主要进行国内外安全产品评测与 攻击的研究。有丰富的网络安全设计与实施经验,并给各大电信公司如中国电信、吉通公司、联通公司等进行过系列安全培训。
DDoS的防范
到目前为止,进行DDoS攻击的防御还是比较困难的,首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击。一位资深的安全专家给了个形象的比喻:DDoS就好象有1,000个人同时给你家里打电话,这时候你的朋友还打得进来吗?
不过即使它难于防范,也不是说我们就应该逆来顺受,实际上防止DDoS并不是绝对不可行的事情。互联网的使用者是各种各样的,与DDoS做斗争,不同的角色有不同的任务。我们以下面几种角色为例:
企业网管理员
ISP、ICP管理员
骨干网络运营商
企业网管理员
网管员做为一个企业内部网的管理者,往往也是安全员、守护神。在他维护的网络中有一些服务器需要向外提供WWW服务,因而不可避免地成为DDoS的攻击目标,他该如何做呢?可以从主机与网络设备两个角度去考虑。
主机上的设置
几乎所有的主机平台都有抵御DoS的设置,总结一下,基本的有几种:
关闭不必要的服务 限制同时打开的Syn半连接数目
缩短Syn半连接的time out 时间 及时更新系统补丁
网络设备上的设置
企业网的网络设备可以从防火墙与路由器上考虑。这两个设备是到外界的接口设备,在进行防DDoS设置的同时,要注意一下这是以多大的效率牺牲为代价的,对你来说是否值得。
1.防火墙
禁止对主机的非开放服务的访问
限制同时打开的SYN最大连接数
限制特定IP地址的访问
启用防火墙的防DDoS的属性
严格限制对外开放的服务器的向外访问
第五项主要是防止自己的服务器被当做工具去害人。
2.路由器
以Cisco路由器为例
Cisco Express Forwarding(CEF)
使用 unicast reverse-path
访问控制列表(ACL)过滤
设置SYN数据包流量速率
升级版本过低的ISO
为路由器建立log
server
其中使用CEF和Unicast设置时要特别注意,使用不当会造成路由器工作效率严重下降,升级IOS也应谨慎,
路由器是网络的核心设备,与大家分享一下进行设置修改时的小经验,就是先不保存。Cisco路由器有两份配置startup config和running config,修改的时候改变的是running config,可以让这个配置先跑一段时间(三五天的就随意啦),觉得可行后再保存配置到startup config;而如果不满意想恢复原来的配置,用copy start run就行了。
ISP / ICP管理员
ISP / ICP为很多中小型企业提供了各种规模的主机托管业务,所以在防DDoS时,除了与企业网管理员一样的手段外,还要特别注意自己管理范围内的客户托管主机不要成为傀儡机。客观上说,这些托管主机的安全性普遍是很差的,有的连基本的补丁都没有打就赤膊上阵了,成为 最喜欢的“肉鸡”,因为不管这台机器 怎么用都不会有被发现的危险,它的安全管理太差了;还不必说托管的主机都是高性能、高带宽的-简直就是为DDoS定制的。而做为ISP的管理员,对托管主机是没有直接管理的权力的,只能通知让客户来处理。在实际情况时,有很多客户与自己的托管主机服务商配合得不是很好,造成ISP管理员明知自己负责的一台托管主机成为了傀儡机,却没有什么办法的局面。而托管业务又是买方市场,ISP还不敢得罪客户,怎么办?咱们管理员和客户搞好关系吧,没办法,谁让人家是上帝呢?呵呵,客户多配合一些,ISP的主机更安全一些,被别人告状的可能性也小一些。
骨干网络运营商
他们提供了互联网存在的物理基础。如果骨干网络运营商可以很好地合作的话,DDoS攻击可以很好地被预防。在20yahoo等知名网站被攻击后,美国的网络安全研究机构提出了骨干运营商联手来解决DDoS攻击的方案。其实方法很简单,就是每家运营商在自己的出口路由器上进行源IP地址的验证,如果在自己的路由表中没有到这个数据包源IP的路由,就丢掉这个包。这种方法可以阻止 利用伪造的源IP来进行DDoS攻击。不过同样,这样做会降低路由器的效率,这也是骨干运营商非常关注的问题,所以这种做法真正采用起来还很困难。
对DDoS的原理与应付方法的研究一直在进行中,找到一个既有效又切实可行的方案不是一朝一夕的事情。但目前我们至少可以做到把自己的网络与主机维护好,首先让自己的主机不成为别人利用的对象去攻击别人;其次,在受到攻击的时候,要尽量地保存证据,以便事后追查,一个良好的网络和日志系统是必要的。无论DDoS的防御向何处发展,这都将是一个社会工程,需要IT界的同行们来一起关注,通力合作。
DoS的进犯方法有许多种,最根本的DoS进犯就是运用合理的效劳恳求来占用过多的效劳资源,从而使合法用户无法得到效劳的呼应,
DDoS进犯手法是在传统的DoS进犯根底之上发生的一类进犯方法。单一的DoS进犯通常是选用一对一方法的,当进犯方针CPU速度低、内存小或许网络带宽小等等各项功能指标不高它的作用是显著的。跟着计算机与网络技能的开展,计算机的处置才干迅速增长,内存大大添加,一同也呈现了千兆级另外网络,这使得DoS进犯的艰难程度加大了 - 方对准歹意进犯包的“消化才干”加强了不少,例如你的进犯软件每秒钟可以发送3,000个进犯包,但我的主机与网络带宽每秒钟可以处置10,000个进犯包,这样一来进犯就不会发生什么作用。
这时侯散布式的拒绝效劳进犯手法(DDoS)就应运而生了。你理解了DoS进犯的话,它的原理就很简略。若是说计算机与网络的处置才干加大了 10倍,用一台进犯机来进犯不再能起作用的话,进犯者运用10台进犯机一同进犯呢?用100台呢?DDoS就是运用更多的傀儡机来建议攻逼,以比早年更大的规划来攻逼受害者。
高速广泛衔接的网络给咱们带来了便利,也为DDoS进犯发明了极为有利的条件。在低速网络时代时, 占据进犯用的傀儡机时,总是会优先思考离方针网络间隔近的机器,由于颠末路由器的跳数少,作用好。而如今电信主干节点之间的衔接都是以G为级另外,大城市之间更可以到达2.5G的衔接,这使得进犯可以从更远的当地或许其他城市建议,进犯者的傀儡机方位可以在散布在更大的规模,挑选起来更灵活了。
被DDoS进犯时的表象
被进犯主机上有许多等候的TCP衔接
网络中充满着许多的无用的数据包,源地址为假
制作高流量无用数据,形成网络拥塞,使受害主机无法正常和外界通讯
运用受害主机供给的效劳或传输协议上的缺点,重复高速的宣布特定的效劳恳求,使受害主机无法及时处置一切正常恳求
严峻时会形成体系死机
进犯运转原理
如图一,一个比拟完善的DDoS进犯体系分红四大有些,先来看一下最重要的第2和第3有些:它们别离用做操控和实践建议进犯。请注意操控机与进犯机的差异,对第4有些的受害者来说,DDoS的实践进犯包是从第3有些进犯傀儡机上宣布的,第2有些的操控机只发布指令而不参加实践的进犯。对第2和第 3有些计算机, 有操控权或许是有些的操控权,并把相应的DDoS顺序上传到这些平台上,这些顺序与正常的顺序相同运转并等候来自 的指令,通常它还会运用各种手法躲藏本人不被他人发现。在平常,这些傀儡机器并没有什么反常,仅仅一旦 衔接到它们进行操控,并宣布指令的时分,进犯傀儡机就成为害人者去建议进犯了。
有的伴侣或许会问道:“为什么 不直接去操控进犯傀儡机,而要从操控傀儡机上转一下呢?”。这就是招致DDoS进犯难以清查的缘由之一了。做为进犯者的视点来说,必定不愿意被捉到(我在小时分向他人家的鸡窝扔石头的时分也晓得在第一时刻逃掉,呵呵),而进犯者运用的傀儡机越多,他实践上供给给受害者的剖析根据就越多。在占据一台机器后,高水平的进犯者会首要做两件事:1. 思考怎么留好后门(我今后还要回来的哦)!2. 怎么整理日志。这就是擦掉足迹,不让本人做的事被他人查觉到。比拟不敬业的 会不论三七二十一把日志全都删掉,但这样的话网管员发现日志都没了就会晓得有人干了坏事了,顶多无法再从日志发现是谁干的罢了。相反,真实的能手会挑有关本人的日志项目删掉,让人看不到反常的状况。这样可以长时刻地运用傀儡机。
但是在第3有些进犯傀儡机上整理日志实在是一项巨大的工程,即便在有很好的日志整理东西的协助下, 也是对这个使命很头痛的。这就招致了有些进犯机弄得不是很洁净,颠末它上面的头绪找到了操控它的上一级计算机,这上级的计算机若是是 本人的机器,那么他就会被揪出来了。但若是这是操控用的傀儡机的话, 本身仍是安全的。操控傀儡机的数目相对很少,通常一台就可以操控几十台进犯机,整理一台计算机的日志对 来讲就轻松多了,这样从操控机再找到 的能够性也大大下降。
是怎么安排一次DDoS进犯的?
这里用“安排”这个词,是由于DDoS并不象侵略一台主机那样简略。通常来说, 进行DDoS进犯时会颠末这样的步调:
1. 收集知道方针的状况
下列状况是 十分关怀的情报:
被进犯方针主机数目、地址状况
方针主机的装备、功能
方针的带宽
关于DDoS进犯者来说,进犯互联网上的某个站点,如www.mytarget.com,有一个要点就是断定到底有多少台主机在撑持这个站点,一个大的网站能够有许多台主机运用负载均衡技能供给同一个网站的www效劳。以yahoo为例,通常会有下列地址都是供给 www.yahoo.com效劳的:
66.218.71.87
66.218.71.88
66.218.71.89
66.218.71.80
66.218.71.81
66.218.71.83
66.218.71.84
66.218.71.86
若是要进行DDoS进犯的话,应该进犯哪一个地址呢?使66.218.71.87这台机器瘫掉,但其他的主机仍是能向外供给www效劳,所以想让他人拜访不到www.yahoo.com的话,要一切这些IP地址的机器都瘫掉才行,
在实践的运用中,一个IP地址往往还代表着数台机器:网站保护者运用了四层或七层交换机来做负载均衡,把对一个IP地址的拜访以特定的算法分配到部属的每个主机上去。这时关于DDoS进犯者来说状况就更杂乱了,他面临的使命能够是让几十台主机的效劳都不正常。
所以说事前收集情报对DDoS进犯者来说是十分重要的,这关系到运用多少台傀儡机才干到达作用的问题。简略地思考一下,在相同的条件下,进犯同一站点的2台主机需求2台傀儡机的话,进犯5台主机能够就需求5台以上的傀儡机。有人说做进犯的傀儡机越多越好,不论你有多少台主机我都用尽量多的傀儡机来攻就是了,横竖傀儡机超过了时分作用更好。
但在实践进程中,有许多 并不进行情报的收集而直接进行DDoS的进犯,这时分进犯的盲目性就很大了,作用怎么也要靠命运。其实做 也象网管员相同,是不能偷闲的。一件事做得好与坏,情绪最重要,水平还在其次。
2. 占据傀儡机
最感兴趣的是有下列状况的主机:
链路状况好的主机
功能好的主机
安全管理水平差的主机
这一有些实践上是运用了另一大类的进犯手法:运用形进犯。这是和DDoS并排的进犯方法。简略地说,就是占据和操控被进犯的主机。获得最高的管理权限,或许至少得到一个有权限完结DDoS进犯使命的帐号。关于一个DDoS进犯者来说,准备好必定数量的傀儡机是一个必要的条件,下面说一下他是怎么进犯并占据它们的。
首要, 做的作业通常是扫描,随机地或许是有对准性地运用扫描器去发现互联网上那些有缝隙的机器,象顺序的溢出缝隙、cgi、 Unicode、ftp、数据库缝隙…(几乎不胜枚举啊),都是 期望看到的扫描成果。随后就是测验侵略了,详细的手法就不在这里多说了,感兴趣的话网上有许多关于这些内容的文章。
总归 如今占据了一台傀儡机了!然后他做什么呢?除了上面说过留后门擦足迹这些根本作业之外,他会把DDoS进犯用的顺序上载曩昔,通常是运用ftp。在进犯机上,会有一个DDoS的发包顺序, 就是运用它来向受害方针发送歹意进犯包的。
3. 实践进犯
颠末前2个期间的精心准备之后, 就开端瞄准方针准备发射了。前面的准备做得好的话,实践进犯进程反而是比拟简略的。就象图示里的那样, 登录到做为操控台的傀儡机,向一切的进犯机宣布指令:“准备~ ,瞄准~,开战!”。这时分埋伏在进犯机中的DDoS进犯顺序就会呼应操控台的指令,一同向受害主机以高速度发送许多的数据包,招致它死机或是无法呼应正常的恳求。 通常会以远远超出受害方处置才干的速度进行进犯,他们不会“怜香惜玉”。
老到的进犯者一边进犯,还会用各种手法来监督进犯的作用,在需求的时分进行一些调整。简略些就是开个窗口不断地ping方针主机,在能接到回答的时分就再加大一些流量或是再指令更多的傀儡机来参加进犯。
DDoS进犯实例 - SYN Flood进犯
SYN-Flood是当前最盛行的DDoS进犯手法,新近的DoS的手法在向散布式这一期间开展的时分也阅历了浪里淘沙的进程。SYN-Flood的进犯作用最棒,应该是众 不谋而合挑选它的缘由吧。那么咱们一同来看看SYN-Flood的详细状况。
Syn Flood原理 - 三次握手
Syn Flood运用了TCP/IP协议的固有缝隙。面向衔接的TCP三次握手是Syn Flood存在的根底。
TCP衔接的三次握手
图二 TCP三次握手
如图二,在第一步中,客户端向效劳端提出衔接恳求。这时TCP SYN标记置位。客户端通知效劳端序列号区域合法,需求查看。客户端在TCP报头的序列号区中刺进本人的ISN。效劳端收到该TCP分段后,在第二步以本人的ISN回答(SYN标记置位),一同承认收到客户端的第一个TCP分段(ACK标记置位)。在第三步中,客户端承认收到效劳端的ISN(ACK标记置位)。到此为止树立完好的TCP衔接,开端全双工形式的数据传输进程。
Syn Flood进犯者不会完结三次握手
图三 Syn Flood歹意地不完结三次握手
假定一个用户向效劳器发送了SYN报文后俄然死机或掉线,那么效劳器在宣布SYN+ACK应对报文后是无法收到客户端的ACK报文的(第三次握手无法完结),这种状况下效劳器端通常会重试(再次发送SYN+ACK给客户端)并等候一段时刻后丢掉这个未完结的衔接,这段时刻的长度咱们称为SYN Timeout,通常来说这个时刻是分钟的数量级(大约为30秒-2分钟);一个用户呈现反常招致效劳器的一个线程等候1分钟并不是什么很大的问题,但若是有一个歹意的进犯者许多模仿这种状况,效劳器端将为了保护一个十分大的半衔接列表而耗费十分多的资源----数以万计的半衔接,即便是简略的保管并遍历也会耗费十分多的CPU时刻和内存,况且还要不断对这个列表中的IP进行SYN+ACK的重试。实践上若是效劳器的TCP/IP栈不敷强壮,最终的成果往往是仓库溢出溃散---即便效劳器端的体系满足强壮,效劳器端也将忙于处置进犯者假造的TCP衔接恳求而无暇答理客户的正常恳求(究竟客户端的正常恳求比率十分之小),此刻从正常客户的视点看来,效劳器失掉呼应,这种状况咱们称做:效劳器端受到了SYN Flood进犯(SYN洪水进犯)。本文来源于www.zkddos.com(ddos攻击器)