论文部分内容阅读
摘要:分析了DDOS攻击的特点,介绍了负载均衡群集的优缺点以及在基于DDOS防范的负载均衡群集设计中的应用方式。设计实现了一套典型应用系统,并针对实际攻击作了性能分析。
关键词:群集;DDOS攻击;负载均衡群集
中图法分类号:TP311文献标识码:A 文章编号:1009-3044(2007)18-31522-02
Load balanced Cluster Based on DDOS Guard Against Design and Realization
LI Yun-he1, WU Shan-yu1,YAN Zhen-ming2
(1.Department of Computer Science & Technology,Maoming College,Maoming 525000,China;2.The Hubei branch of China Unicom, maintenance department,Wuhan 437000,China)
Abstract:Analyzed the characteristics of DDOS attack,introduced to the merit and shortcoming of load balanced cluster and in according to the DDOS attack of the loadbalanced cluster design of apply a way.Designed to carry out a set of typical model application system, and to actual attack made function analysis.
Key words:cluster;DDOS attack;Load balanced Cluster
群集是一组服务器,这些服务器称做群集节,它们尽管物理上是不同的,但可以作为一个或更多虚拟实体来进行查看,访问和管理。这是通过使用专门的软件,硬件,或者软硬件结合来完成的。在正常情况下,群集的每个节点都能够独立于其他节点运行,所有节点又都紧密地结合在一起工作。在一个或更多的节点出现硬件故障的情况下,只要还剩下至少一个可以运行的节点,群集就仍然能够继续工作。群集还支持以一种对连接到它的客户端透明的方式来增加或减少组件。
群集对资源的标识虚拟化。也就是说,它隐藏了资源对单个服务器硬件的依存关系。这种标识通常基于一个惟一的名字(比如主机名)或地址(IP地址或者MAC地址),这样的名字或地址成为群集资源的一部分,而不是被指定给某一个群集节点。因此以这个名字或地址为目标的来自客户端的请求由群集软件来处理,如果有多个相同的资源是可用的,那么群集将请求重定向到一个首选节点,这个首选项节点是依据预置的设定值(比如节点优先选择算法或散列算法)和当前状态(比如节点可用性和在某些情况下的应用)来确定的。
1 负载均衡群集的设计
这种群集方式将客户请求均衡地分配给多台计算机理,每台计算机读取相同的数据,以达到均衡负载的效果。这也是本文重点介绍的防范ddos攻击所采用的群集。负载均衡群集又有多种实现方式,比如基于win2003系统的负载均衡,linux系统中的lvs(linuxvirtualserver)群集技术,基于dns轮循的负载均衡,基于NAT的负载均衡,还有基于反向代理的负载均衡等。
本设计的目的是构建一个可以抵抗DDOS攻击的群集。负载均衡的群集要求在受到大流量(指可以导致机房负荷不足甚至整个机房瘫痪)的攻击时,服务器仍然能够对客户给予响应,提供正常的服务。即使在最恶劣(攻击者的带宽远远大于我们的机房所拥有的带宽)的情况下,群集的结构仍然能够为大部分用户提供正常的服务。
为实现此群集,本设计同时使用了基于dns的负载均衡和基于nat的负载均衡(也可以使用基于lvs的负载均衡)
DNS轮循是指通过配置DNS使相同的域名解释不同的IP,随机使用其中某台主机的技术。通过DNS轮循系统可以使用N台主机作为WEB服务器,完全看您的网站的需求。目前已有越来越多大型的WEB服务使用DNS轮循来实现负载均衡,使用多个同样角色的服务器做前台的WEB服务,这大大方便了服务的分布规划和扩展性,提高了网站的访问效率,为那些焦急等待大量数据文件请求响应的客户提供更快的响应时间。
natd与ipfw相互配合,能够实现网络地址翻译的能力。内核通过一个特定的divert类型的端口,将需要转换的数据包交给natd,而natd转换之后,再发送回内核,由内核再进行转发。它的好处不但是能提供防火墙能力,还能使得内部计算机能共享外部网络地址,这在IP地址空间比较紧张的当前是一个非常有用的技术。
2 防范DDOS攻击
拒绝服务攻击的英文是:Denialof Service,简称DOS,这种攻击行动使网站服务器充斥了大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪,从而停止提供正常的网络服务。
拒绝服务攻击根据其攻击手法和目的不同,有两种不同的存在形式。
第一,以消耗系统主机为目的。包括:Land攻击,Ping of death,Teardrop,Smurf攻击等。
第二,以消耗网络带宽资源为目的。通过大量的数据包,堵塞目标网络的有效带宽,使服务器无法正常响应,造成服务中断。
DDOS攻击则是DOS攻击的强化,称之为分布式拒绝服务攻击。它是一种并发运行多个dos攻击的技术,通过在internet不同部分的许多机器上安装远程代理,攻击者能够对目标实施这种放大的dos攻击,使它及其isp所在的网络崩溃,其使用的攻击方式并不新颖,但关键在于全体协同攻击以增加流量。
在实施这类攻击前,黑客必须入侵相当数量的计算机,并在其中安装用于远程控制的协调程序,通常使用定制的自动攻击程序或蠕虫来快速入侵许多计算机,此时一般选择大学中的网络系统作为攻击目标,因为它们的安全管理相对较松,一量安装了控制程序,黑客就连接控制程序向代理发送命令,由其余风吹草动目标主机发送选定的攻击。
攻击者首先通过某些攻击手段,如利用缓冲区漏洞控制一批主机,在这些主机上安装主服务器程序,攻击者可远程控制这些主服务器。然后这些主服务器控制了更大数量的称之为守护进程(Daimon,也称之为精灵)的网络节点。最后由守护程序对目标发动攻击。攻击目标主机的带宽是所有被控制服务器(黑客称之为肉鸡)的带宽之和在悬殊的带宽对比之下,被攻击的目标方机会很快失去反应。此外,这种攻击布局方式使得要真正识别入侵者变得非常困难。
可以看出,运行主服务器的计算机和运行守护程序的计算机在地理分布上可以是完全不同的,只要计算机中有未被修补的漏洞,全世界的计算机都有可能成为肉鸡,当这些肉鸡攻击目标主机时,目标方机或者目标主机所在的网络要处理的数据包,可能远远超出该网络或主机所能承受的能力。
3 基于DDOS防范的群集实现
为了便于描述,将五个机房定义为A,B,C,D,E机房,每个机房的带宽分别为:3G,2G,2G,4G,2G。总计13G。为每个机房配备nat网关一个。该网关由自己配置,使用freebsd系统的ipfw/natd实现,也可以使用ipfilter实现。服务器10台,配置使用至强2.8*2,内存1G,硬盘73Gscsi。每台服务器配置千兆网卡两块(共计19块数据库服务器只需要一块网卡)。
整体的结构规划图如下:
图1 群集结构规划图
具体的配置情况,描述如下:
每个机房使用相同的结构,因些,具体配置过程是相同的,每个机房所使用公网IP不一样而己。每个机房提供三台服务器(一台NAT网站,两台提供服务的服务器),一个交换机。三个公网IP。
以A机房为例,配置如下:
设A机房IP段为:59.34.148.0掩码:255.255.255.128
表1 机房A 配置表
所有WEB服务器读取数据源服务器的数据,各WEB服务器通过公网的出口访问数据源服务器,而且这些公网访问是不对外开放的,所有的WEB访问都需要经过NET网关的转发,对数源服务器进行严格的安全设置,使其仅信任来自指定WEB服务器的请求。
设置完成后,需要配置NET网关,使其转发请求至WEB服务器的80端口,需要添加:
natd -alias_address 59.34.148.62 -redirect_port tcp 192.168.0.3:80 80
natd -alias_address 59.34.148.62 -redirect_port tcp 192.168.0.2:80 80
其他B,C,D,E四个机房的设置都与A机房的服务器相同,只是对公网配以不同的ip.
DNS
当把每个机房的服务器都准备好之后,就可以设置DNS的轮循了.基本上要设置五个A记录到每个机房的NET公网IP,仍以A机房为例:
wwwA59.34.148.62
.....
.....
至些,配置完成。
4 性能分析
试验一:PING OF DEATH
攻击软件:pingofdeath.exe
说明:某些软件允许用户发送大于65535字节的数据包,这一大小超过了tcp/ip规范允许的最大值,因此它们不能够以整体流经internet,在传输之前必须分片,目标主机接收到这些分片后,将它们重新组合成非法大小的原始包。在某些老的操作系统,这将使数据包的缓冲区溢出,因此,这一简单而有效的攻击赢得了“死亡之ping”的名声。
试验结果:这类攻击根本不会影响到服务的正常提供。
试验二:SYN
攻击软件:
tcp/ip中包括一个在两个主机间建立新的通信通道的握手协议,首先,客户机向服务器发送一个TCPsyn数据包,服务器收到这个数据包,并响应syn/ack,最终,客户端以ack响应,握手至此结束,之后,就可以在所建立的tcp连接中双向传输数据了。
在收到最初的syn数据包时,服务器tcp协议栈将相应的半连接记录添加到队列里,然后等待一会以接收余下的握手数据包。如果成功则从队列中删除该记录。由于该队列容纳半连接记录的数目有限,因此,如果许多初始化的连接最终没有成功握手,就会出现问题。一旦队列己满,服务器将不再接收新的连接。
如果攻击者能够以足够的速度向目标服务器发送syn数据包以填满该队列,就能够阻塞任何tcp服务,这就是syn攻击。一旦发现web服务器不再接收新的请求,或者甚至连本地访问的速度也很慢,就应该使用netstat 来检查处于syn_recv(半连接)状态的连接:
命令如下:netstat –ant
在freebsd系统下,可以用如下shell脚本来跟踪半连接的数目。
#!/bin/sh
While [1]; do
Echo –n “half-open connections:”
Netstat –ant |grep SYN_RECV |wc –l
Sleep 1;
Done
在本设计的集群中,freebsd操作系统作为前端系统,相对windows 队列容量更大,并缩短了超时值,从而更加难以填满。
此外,增大timeout_synack,timeout_synrecv,减小tcp_max_syn_backlog内核参数的值,可以更有效地抵抗攻击。
试验三:UDP
攻击软件:nemesis
在早期的IP网络中,像chargen(端口19)和echo(端口7)这样的udp服务用于测试网络上不同位置间的添吐量。Chargen对接收到的udp数据包响应的填满字符的数据包,而echo将其接收到的数据包原封不动地发送回源地址。
攻击者可以滥用这类关系在两个服务之间建立无用的通信流,以消耗网络带宽。通过向target.a.example.com的echo端口发送返回地址指向target.b.example.com的chargen端口的伪造数据包,黑客就可以在这两者之间建立以网络所能处理的最快速度往返的UDP循环通信.
使用如下命令,向10.0.0.5的chargen端口发送源地址伪造为10.0.0.10的echo端口的数据包:
Nemesis –udp –x echo –y chargen –S 10.0.0.10 –D 10.0.0.5
如果该数据包能到达10.0.0.5 ,则流向chargen 端口,使该系统向10.0.0.10的echo 端口发送一个响应数据包,从而在两者之间建立了dos攻击。
为阻止该种攻击,在freebsd 系统中,本设计使用ipfw阻止了所有的udp通信,仅允许了tcp通信。
5 结束语
本设计的群集应对DDOS攻击,效果良好。突出的优点是经济简单易行,并且服务器可以位于internet上任意的位置。需要进一步改进的是DNS负载均衡采用轮循负载算法,不能区分服务器的差异从而做到为性能较好的服务器多分配请求,可能会出现客户请求集中在某一台服务器上的情况。
参考文献:
[1]徐远超,庞宏冰.园区网设计与实施中的几个问题.计算机应用,2002(3):99-102.
[2]赵小明.等.计算机网络实验教程.科学出版社,2006.8:219-222.
[3]何全胜.等.IP网络中实时数据的流量控制.计算机科学,2005(29):51-53.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:群集;DDOS攻击;负载均衡群集
中图法分类号:TP311文献标识码:A 文章编号:1009-3044(2007)18-31522-02
Load balanced Cluster Based on DDOS Guard Against Design and Realization
LI Yun-he1, WU Shan-yu1,YAN Zhen-ming2
(1.Department of Computer Science & Technology,Maoming College,Maoming 525000,China;2.The Hubei branch of China Unicom, maintenance department,Wuhan 437000,China)
Abstract:Analyzed the characteristics of DDOS attack,introduced to the merit and shortcoming of load balanced cluster and in according to the DDOS attack of the loadbalanced cluster design of apply a way.Designed to carry out a set of typical model application system, and to actual attack made function analysis.
Key words:cluster;DDOS attack;Load balanced Cluster
群集是一组服务器,这些服务器称做群集节,它们尽管物理上是不同的,但可以作为一个或更多虚拟实体来进行查看,访问和管理。这是通过使用专门的软件,硬件,或者软硬件结合来完成的。在正常情况下,群集的每个节点都能够独立于其他节点运行,所有节点又都紧密地结合在一起工作。在一个或更多的节点出现硬件故障的情况下,只要还剩下至少一个可以运行的节点,群集就仍然能够继续工作。群集还支持以一种对连接到它的客户端透明的方式来增加或减少组件。
群集对资源的标识虚拟化。也就是说,它隐藏了资源对单个服务器硬件的依存关系。这种标识通常基于一个惟一的名字(比如主机名)或地址(IP地址或者MAC地址),这样的名字或地址成为群集资源的一部分,而不是被指定给某一个群集节点。因此以这个名字或地址为目标的来自客户端的请求由群集软件来处理,如果有多个相同的资源是可用的,那么群集将请求重定向到一个首选节点,这个首选项节点是依据预置的设定值(比如节点优先选择算法或散列算法)和当前状态(比如节点可用性和在某些情况下的应用)来确定的。
1 负载均衡群集的设计
这种群集方式将客户请求均衡地分配给多台计算机理,每台计算机读取相同的数据,以达到均衡负载的效果。这也是本文重点介绍的防范ddos攻击所采用的群集。负载均衡群集又有多种实现方式,比如基于win2003系统的负载均衡,linux系统中的lvs(linuxvirtualserver)群集技术,基于dns轮循的负载均衡,基于NAT的负载均衡,还有基于反向代理的负载均衡等。
本设计的目的是构建一个可以抵抗DDOS攻击的群集。负载均衡的群集要求在受到大流量(指可以导致机房负荷不足甚至整个机房瘫痪)的攻击时,服务器仍然能够对客户给予响应,提供正常的服务。即使在最恶劣(攻击者的带宽远远大于我们的机房所拥有的带宽)的情况下,群集的结构仍然能够为大部分用户提供正常的服务。
为实现此群集,本设计同时使用了基于dns的负载均衡和基于nat的负载均衡(也可以使用基于lvs的负载均衡)
DNS轮循是指通过配置DNS使相同的域名解释不同的IP,随机使用其中某台主机的技术。通过DNS轮循系统可以使用N台主机作为WEB服务器,完全看您的网站的需求。目前已有越来越多大型的WEB服务使用DNS轮循来实现负载均衡,使用多个同样角色的服务器做前台的WEB服务,这大大方便了服务的分布规划和扩展性,提高了网站的访问效率,为那些焦急等待大量数据文件请求响应的客户提供更快的响应时间。
natd与ipfw相互配合,能够实现网络地址翻译的能力。内核通过一个特定的divert类型的端口,将需要转换的数据包交给natd,而natd转换之后,再发送回内核,由内核再进行转发。它的好处不但是能提供防火墙能力,还能使得内部计算机能共享外部网络地址,这在IP地址空间比较紧张的当前是一个非常有用的技术。
2 防范DDOS攻击
拒绝服务攻击的英文是:Denialof Service,简称DOS,这种攻击行动使网站服务器充斥了大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪,从而停止提供正常的网络服务。
拒绝服务攻击根据其攻击手法和目的不同,有两种不同的存在形式。
第一,以消耗系统主机为目的。包括:Land攻击,Ping of death,Teardrop,Smurf攻击等。
第二,以消耗网络带宽资源为目的。通过大量的数据包,堵塞目标网络的有效带宽,使服务器无法正常响应,造成服务中断。
DDOS攻击则是DOS攻击的强化,称之为分布式拒绝服务攻击。它是一种并发运行多个dos攻击的技术,通过在internet不同部分的许多机器上安装远程代理,攻击者能够对目标实施这种放大的dos攻击,使它及其isp所在的网络崩溃,其使用的攻击方式并不新颖,但关键在于全体协同攻击以增加流量。
在实施这类攻击前,黑客必须入侵相当数量的计算机,并在其中安装用于远程控制的协调程序,通常使用定制的自动攻击程序或蠕虫来快速入侵许多计算机,此时一般选择大学中的网络系统作为攻击目标,因为它们的安全管理相对较松,一量安装了控制程序,黑客就连接控制程序向代理发送命令,由其余风吹草动目标主机发送选定的攻击。
攻击者首先通过某些攻击手段,如利用缓冲区漏洞控制一批主机,在这些主机上安装主服务器程序,攻击者可远程控制这些主服务器。然后这些主服务器控制了更大数量的称之为守护进程(Daimon,也称之为精灵)的网络节点。最后由守护程序对目标发动攻击。攻击目标主机的带宽是所有被控制服务器(黑客称之为肉鸡)的带宽之和在悬殊的带宽对比之下,被攻击的目标方机会很快失去反应。此外,这种攻击布局方式使得要真正识别入侵者变得非常困难。
可以看出,运行主服务器的计算机和运行守护程序的计算机在地理分布上可以是完全不同的,只要计算机中有未被修补的漏洞,全世界的计算机都有可能成为肉鸡,当这些肉鸡攻击目标主机时,目标方机或者目标主机所在的网络要处理的数据包,可能远远超出该网络或主机所能承受的能力。
3 基于DDOS防范的群集实现
为了便于描述,将五个机房定义为A,B,C,D,E机房,每个机房的带宽分别为:3G,2G,2G,4G,2G。总计13G。为每个机房配备nat网关一个。该网关由自己配置,使用freebsd系统的ipfw/natd实现,也可以使用ipfilter实现。服务器10台,配置使用至强2.8*2,内存1G,硬盘73Gscsi。每台服务器配置千兆网卡两块(共计19块数据库服务器只需要一块网卡)。
整体的结构规划图如下:
图1 群集结构规划图
具体的配置情况,描述如下:
每个机房使用相同的结构,因些,具体配置过程是相同的,每个机房所使用公网IP不一样而己。每个机房提供三台服务器(一台NAT网站,两台提供服务的服务器),一个交换机。三个公网IP。
以A机房为例,配置如下:
设A机房IP段为:59.34.148.0掩码:255.255.255.128
表1 机房A 配置表
所有WEB服务器读取数据源服务器的数据,各WEB服务器通过公网的出口访问数据源服务器,而且这些公网访问是不对外开放的,所有的WEB访问都需要经过NET网关的转发,对数源服务器进行严格的安全设置,使其仅信任来自指定WEB服务器的请求。
设置完成后,需要配置NET网关,使其转发请求至WEB服务器的80端口,需要添加:
natd -alias_address 59.34.148.62 -redirect_port tcp 192.168.0.3:80 80
natd -alias_address 59.34.148.62 -redirect_port tcp 192.168.0.2:80 80
其他B,C,D,E四个机房的设置都与A机房的服务器相同,只是对公网配以不同的ip.
DNS
当把每个机房的服务器都准备好之后,就可以设置DNS的轮循了.基本上要设置五个A记录到每个机房的NET公网IP,仍以A机房为例:
wwwA59.34.148.62
.....
.....
至些,配置完成。
4 性能分析
试验一:PING OF DEATH
攻击软件:pingofdeath.exe
说明:某些软件允许用户发送大于65535字节的数据包,这一大小超过了tcp/ip规范允许的最大值,因此它们不能够以整体流经internet,在传输之前必须分片,目标主机接收到这些分片后,将它们重新组合成非法大小的原始包。在某些老的操作系统,这将使数据包的缓冲区溢出,因此,这一简单而有效的攻击赢得了“死亡之ping”的名声。
试验结果:这类攻击根本不会影响到服务的正常提供。
试验二:SYN
攻击软件:
tcp/ip中包括一个在两个主机间建立新的通信通道的握手协议,首先,客户机向服务器发送一个TCPsyn数据包,服务器收到这个数据包,并响应syn/ack,最终,客户端以ack响应,握手至此结束,之后,就可以在所建立的tcp连接中双向传输数据了。
在收到最初的syn数据包时,服务器tcp协议栈将相应的半连接记录添加到队列里,然后等待一会以接收余下的握手数据包。如果成功则从队列中删除该记录。由于该队列容纳半连接记录的数目有限,因此,如果许多初始化的连接最终没有成功握手,就会出现问题。一旦队列己满,服务器将不再接收新的连接。
如果攻击者能够以足够的速度向目标服务器发送syn数据包以填满该队列,就能够阻塞任何tcp服务,这就是syn攻击。一旦发现web服务器不再接收新的请求,或者甚至连本地访问的速度也很慢,就应该使用netstat 来检查处于syn_recv(半连接)状态的连接:
命令如下:netstat –ant
在freebsd系统下,可以用如下shell脚本来跟踪半连接的数目。
#!/bin/sh
While [1]; do
Echo –n “half-open connections:”
Netstat –ant |grep SYN_RECV |wc –l
Sleep 1;
Done
在本设计的集群中,freebsd操作系统作为前端系统,相对windows 队列容量更大,并缩短了超时值,从而更加难以填满。
此外,增大timeout_synack,timeout_synrecv,减小tcp_max_syn_backlog内核参数的值,可以更有效地抵抗攻击。
试验三:UDP
攻击软件:nemesis
在早期的IP网络中,像chargen(端口19)和echo(端口7)这样的udp服务用于测试网络上不同位置间的添吐量。Chargen对接收到的udp数据包响应的填满字符的数据包,而echo将其接收到的数据包原封不动地发送回源地址。
攻击者可以滥用这类关系在两个服务之间建立无用的通信流,以消耗网络带宽。通过向target.a.example.com的echo端口发送返回地址指向target.b.example.com的chargen端口的伪造数据包,黑客就可以在这两者之间建立以网络所能处理的最快速度往返的UDP循环通信.
使用如下命令,向10.0.0.5的chargen端口发送源地址伪造为10.0.0.10的echo端口的数据包:
Nemesis –udp –x echo –y chargen –S 10.0.0.10 –D 10.0.0.5
如果该数据包能到达10.0.0.5 ,则流向chargen 端口,使该系统向10.0.0.10的echo 端口发送一个响应数据包,从而在两者之间建立了dos攻击。
为阻止该种攻击,在freebsd 系统中,本设计使用ipfw阻止了所有的udp通信,仅允许了tcp通信。
5 结束语
本设计的群集应对DDOS攻击,效果良好。突出的优点是经济简单易行,并且服务器可以位于internet上任意的位置。需要进一步改进的是DNS负载均衡采用轮循负载算法,不能区分服务器的差异从而做到为性能较好的服务器多分配请求,可能会出现客户请求集中在某一台服务器上的情况。
参考文献:
[1]徐远超,庞宏冰.园区网设计与实施中的几个问题.计算机应用,2002(3):99-102.
[2]赵小明.等.计算机网络实验教程.科学出版社,2006.8:219-222.
[3]何全胜.等.IP网络中实时数据的流量控制.计算机科学,2005(29):51-53.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。