网络安全之—DDoS攻击
一、DDoS是什么?
首先DDoS的缩写是(Distributed Denial of Service,简称DDoS),即分布式拒绝服务,是指黑客将多台计算机联合起来作为攻击平台,通过远程连接,利用恶意程序对一个或多个目标发起DoS攻击,消耗目标服务器性能或网络带宽,从而造成服务器无法正常地提供服务,达到“妨碍正常使用者使用服务”的目的,这样就形成了DDoS攻击。
它前身是DoS (Denial of Service)攻击,其含义是拒绝服务攻击,这种攻击行为使网站服务器充斥大量的要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷而停止提供正常的网络服务。
而DDoS分布式拒绝服务,则主要利用 Internet上现有机器及系统的漏洞,攻占大量联网主机,使其成为攻击者的代理。当被控制的机器达到一定数量后,攻击者通过发送指令操纵这些攻击机同时向目标主机或网络发起DoS攻击,大量消耗其网络带和系统资源,导致该网络或系统瘫痪或停止提供正常的网络服务。由于DDos的分布式特征,它具有了比Dos远为强大的攻击力和破坏性。
二、DDoS攻击原理是什么?
一个比较完善的DDos攻击体系主要是由四大部分所组成,分别是(1)主攻击机( attacker也可以称为master)、(2)控制傀儡机( handler)、(3)攻击傀儡机( demon,又可称agent)以及(4)受攻击机( victim)。其中控制傀儡机和攻击傀儡机,分别用做控制和实际发起攻击。控制傀儡机只发布指令而不参与实际的攻击,攻击傀儡机上发出DDoS的实际攻击包。对第(2)和第(3)部分计算机,主攻击机有控制权或者是部分的控制权,并把相应的DDoS程序上传到这些宿主机上,这些程序与正常的程序一样运行并等待来自主攻击机的指令,通常它还会利用各种手段隐藏自己不被别人发现。在平时,这些傀儡机器并没有什么异常,只是一旦主攻击机连接到它们进行控制并发出指令的时候,攻击愧儡机就成为攻击者去发起攻击了。
之所以采用这样的结构,一个重要目的是隔离网络联系,保护主攻击机,使其不会在攻击进行时受到攻击防护系统的溯源和跟踪。同时也能够更好地协调进攻,因为攻击执行器的数目太多,同时由一个系统来发布命令会造成控制系统的网络阻塞,影响攻击的突然性和协同性。而且,流量的突然增大也容易暴露攻击者的位置和意图。整个过程可分为:
(1)扫描大量主机以寻找可入侵主机目标;
(2)入侵有安全漏洞的主机并获取控制权;
(3)在入侵的主机中安装攻击程序;
(4)用己入侵主机继续进行漏洞扫描和入侵。
当受控制的攻击傀儡机达到主攻击机满意的数量时,主攻击机就可以通过控制傀儡机随时发出攻击指令。由于主攻击机的位置非常灵活,而且发布命令的时间很短,所以非常隐蔽难以定位。一旦攻击的命令传送到攻击傀儡机,主攻击机就可以关闭或脱离网络,以逃避追踪溯源;随着控制傀儡机将命令发布到各个攻击傀儡机,在攻击傀儡机接到攻击命令后,就开始向目标主机发出大量的服务请求数据包。这些数据包经过伪装,使被攻击者无法识别它的来源,这些包所请求的服务往往需要消耗较大的系统资源或网络带宽。如果数百台甚至上千台攻击傀儡机同时攻击一个目标主机,就会导致目标主机网络和系统资源的耗尽,从而停止服务甚至会导致系统崩溃。
另外,这样还可以阻塞目标网络的防火墙和路由器等网络设备,进一步加重网络拥塞状况。于是,目标主机根本无法为用户提供任何服务。攻击者所用的协议都是一些非常常见的协议和服务。这样,系统管理员就难于区分恶意请求和正连接请求,从而无法有效分离出攻击数据包。
三、DDoS的攻击方式有哪些?
1.利用SYN/ACK 进行Flood洪水攻击
这种攻击方法是经典有效的DDoS攻击方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造的源IP和源端口的SYN或ACK同步包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源IP都是伪造的因此追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机来支持,少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用 Netstat-na命令会观察到存在大量的 SYN RECEIVED状态,大量的这种攻击会导致Ping失败,TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。
攻击流程如下图所示,正常TCP连接为3次握手,系统B向系统A发送完 SYN/ACK分组后,停在 SYN RECV状态,等待系统A返回ACK分组;此时系统B已经为准备建立该连接分配了资源,若攻击者系统A,使用伪造源IP,系统B始终处于“半连接”等待状态,直至超时将该连接从连接队列中清除;因定时器设置及连接队列满等原因,系统A在很短时间内,只要持续高速发送伪造源IP的连接请求至系统B,便可成功攻击系统B,而系统B己不能响应其他的正常连接请求。
2.TCP全连接攻击
这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤 TearDrop、Land等DoS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、 Apache等Web服务器)能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽面被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此此种DDOs攻击方容易被追踪。
3. UDP Flood攻击
UDP Flood是日渐猖厥的流量型DDoS攻击,原理也很简单。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。由于UDP协议是一种无连接的服务,在UDP Flood攻击中,攻击者可发送大量伪造源IP地址的小UDP包。
4. ICMP Flood攻击
ICMP Flood攻击属于流量型的攻击方式,是利用大的流量给服务器带来较大的负载,影响服务器的正常服务。由于目前很多防火墙直接过滤ICMP报文。因此ICMP Flood出现的频度较低。
5. TCP Get攻击
这种攻击主要是针对存在ASP、JSP、PHP、CGI等脚本程序,并调用 MSSQL Server、My SQL Server、 Oracle等数据库的网站系统而设计的,特征是和服务器建立正常的TCP连接,不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举的,因此攻击者只需通过 Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。这种攻击的特点是可以完全绕过普通的防火墙防护,轻松找一些Poxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,并且有些代理会暴露DDoS攻击者的IP地址。
6. UDP DNS Query Flood攻击
UDP DNS Query Flood攻击采用的方法是向被攻击的服务器发送大量的域名解析请求,通常请求解析的域名是随机生成或者是网络世界上根本不存在的域名。域名解析的过程给服务器带来了很大的负载,每秒钟域名解析请求超过一定的数量就会造成DNS服务器解析域名超时。
四、DDoS攻击应该如何识别?
1.DDoS表现形式
DDoS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为**资源耗尽攻击,**主要是针对服务器主机的政击,即通过大量攻击包导致主机的内存被耗尽或CPU内核及应用程序占完而造成无法提供网络服务。
当被DDoS攻击时,主要表现为:
(1)被攻击主机上有大量等待的TCP连接。
(2)网络中充斥着大量的无用的数据包,源地址为假。
(3)制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯。
(4)利用受害主机提供的服务或传输协议上的缺陷,反复高速地发出特定的服务请求,使受害主机无法及时处理所有正常请求。
(5)严重时会造成系统死机。
2.DDoS攻击识别方法
(1) Ping测试:若发现Ping超时或丢包严重,则主机可能正在遭受攻击,若发现相同交换机上的服务器也无法访问,基本可以确定为流量攻击。测试前提是受害主机到服务器间的ICMP协议没有被路由器和防火墙等设备屏蔽;
(2) Telnet测试:其显著特征是远程终端连接服务器失败,相对流量攻击,资源耗尽攻击易判断,若网站访问突然非常缓慢或无法访问,但可Ping通,则很可能遭受攻击,若在服务器上用Netstat-na命令观察到大量 SYN_RECEIVED、 TIME_WAIT, FIN_ WAIT_1等状态,而EASTBLISHED很少,可判定为资源耗尽攻击,特征是受害主机Ping不通或丢包严重而Ping相同交换机上的服务器正常,则原因是攻击导致系统内核或应用程序CPU利用率达100%无法回应Ping命令,但因仍有带宽,可ping通相同交换机上主机。
五、DDoS的防护策略有哪些?
DDoS的防护是个系统工程,想仅仅依靠某种系统或产品防住DDoS是不现实的,可以肯定的说,完全杜绝DDoS目前是不可能的,但通过适当的措施抵御大多数的DDoS攻击是可以做到的,基于攻击和防御都有成本开销的缘故,若通过适当的办法增强了抵御DDoS的能力,也就意味着加大了攻击者的攻击成本,那么绝大多数攻击者将无法继续下去而放弃,也就相当于成功的抵御了DDoS攻击。
1 .采用高性能的网络设备
抗DDoS攻击首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDoS攻击是非常有效的。
2. 尽量避免NAT的使用
无论是路由器还是硬件防护墙设备都要尽量避免采用网络地址转换NAT的使用,除了必须使用NAT,因为采用此技术会较大降低网络通信能力,原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包进行校验和计算,因此浪费了很多CPU的时间。
3. 充足的网络带宽保证
网络带宽直接决定了能抗受攻击的能力,假若仅有10M带宽,无论采取何种措施都很难对抗现在的 SYNFlood攻击,当前至少要选择100M的共享带宽,1000M的带宽会更好,但需要注意的是,主机上的网卡是1000M的并不意味着它的网络带宽就是千兆的,若把它接在100M的交换机上,它的实际带宽不会超过100M,再就是接在100M的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为10M。
4. 升级主机服务器硬件
在有网络带宽保证的前提下,尽量提升硬件配置,要有效对抗每秒10万个SYN攻击包,服务器的配置至少应该为:P4 2.4G/DDR512M/SCSI-HD,起关键作用的主要是CPU和内存,内存一定要选择DDR的高速内存,硬盘要尽量选择SCSI的,要保障硬件性能高并且稳定,否则会付出高昂的性能代价。
5. 把网站做成静态页面
大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,到现在为止还没有出现关于HTML的溢出的情况,新浪、搜狐、网易等门户网站主要都是静态页面。此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问我们网站的80%属于恶意行为。