服务器拒绝服务怎么办_服务器遭到拒绝服务攻击

hacker|
166

拒绝服务攻击?

拒绝服务攻击是一种拒绝用户或客户端对特定的系统和网络资源进行访问的技术。

其实现可以是利用操作系统或软件的漏洞,也可以在使用非常大数量的合法请求,其结果都会形成过多的资源消耗或使资源崩溃,以实现对资源的拒绝访问目的。

ping of death

ICMP报文是由系统内核或进程直接处理而不是通过端口,因此构造ICMP报文一向是攻击主机的最好方法之一。

一个完整的IP数据包最大为65535Byte,如果底层协议的MTU小于上层IP数据包的大小,IP包就应该分片,并由接收者进行重组。

典型的以太网的MTU为1500Byte。ICMP作为内嵌于IP中的协议,其容许的最大数据量应该是65535-20-8Byte。其中,20为IP头的大小,8为ICMP头的大小。

在很多操作系统的早期版本中,对网络数据包的最大尺寸有限制。对单个IP报文的处理过程中通常要设置有一定大小的缓冲区,以应付IP分片的情况。接收数据包时,网络层协议要对IP分片进行重组,可是,如果重组后的数据报文长度超过了IP报文缓冲区的上限时,就会出现溢出现象,导致TCP/IP协议栈的崩溃。

早期的Ping工具允许任意设置发送数据的字节数,于是,黑客只需要简单地利用ping工具就可以让目标主机拒绝服务。

防御:

死Ping的问题已经是一个比较古老的问题了。

现在所有的标准TCP/IP实现都能够对付超大尺寸的包,例如Windows 2000中的Ping命令只允许发送65500Byte大小的数据,Linux则一律是84Byte,不分片。并且大多数防火墙能够自动过滤这些攻击。并且只有ping会造成这种问题。

 

在早期的操作系统,如Windows NT 3.51或windows 95中,都存在这样的问题。 因此,Ping of Death对于仍在使用的早期未打补丁的操作系统仍然奏效。

tear drop

利用早期某些操作系统中TCP/IP协议栈对IP分片包进行重组时的漏洞。Windows 3.1/95/NT以及Linux 2.1.63以前的版本都存在这个问题。

攻击者向目标主机发送两个分片的IP包。第一个IP包的数据偏移(offset)设为0,有效数据长度为N。第二个IP包的数据偏移设为K(KN),有效数据长度为S(K+SN)。

操作系统需要将分片的IP包组合成一个完整的IP包,IP分片含有指示该分段包含的是原包的哪一段的信息。重组的时候,免不了出现一些重叠现象,需要对此进行处理。

syn floor

由于这种攻击使用的是正常的TCP网络服务都不会禁止的SYN类型数据包,而且数据包很小,很容易快速产生。最重要的是,黑客根本不需要得到目标主机的返回信息,所以他可以伪造数据包的源IP地址和源端口,让目标主机无法追查来源。

如果黑客源源不断的发送这种SYN包,每一个源IP地址都是随机产生的一些虚假地址。导致受害者不能再进行IP过滤或追查攻击源,受害者的目标端口未完成队列就不断壮大,因为超时丢弃总没有新接收的速度快。所以,一直到该队列被拥塞满了为止,所有外来的连接请求不会再得到正常响应。

所以这种攻击不容易防范。一般需要借助防火墙。例如,防火墙在接收到客户端的SYN请求后,并不立即转发给服务器,而是代表服务器建立了完整的TCP连接之后,才向服务器 转发真正的连接请求。如国内的天网防火墙。

land

攻击者为接收设备伪造一个特定的数据包,在数据包的来源和目的地址域都包含接收设备的因特网地址,还包含了相同的来源和目的端口号。这种伪造的数据包使得设备试图向伪造的数据包中的目的地址和端口做出应答,而扰乱设备。

smurf

smurf来源于最初发起这种攻击的程序名字。

在Smurf攻击中,攻击者发送一个ICMP echo请求包,并设置源地址为受攻击主机的IP地址,目的地址为广播地址。如果网段为10.2.1.0-24,那么广播地址为10.2.1.255。因此,大量的ICMP echo响应包会发送到被攻击主机,而消耗其网络带宽和CPU周期。同时,通向受攻击主机的路由器也会崩溃。 

之所以smurf攻击屡屡奏效,并非受害主机的操作系统或者网络协议有什么问题,而在于这种攻击的“借力”效果。黑客可以利用自己有限的带宽,同时找到一个高带宽的网络作为反弹攻击跳板,转而攻击一个有限带宽的受害系统。最终的结果,就好比一个宽敞的高速公路,却有一个极狭窄的出口,可是所有车辆都必须从这个出口通行,从而导致交通堵塞。更严重的是,这种攻击不仅能使被害主机拒绝服务,该主机所在网络也连带受害,所有与外界网络的通信都会受到影响

分布式拒绝服务攻击

DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小、网络带宽小时其效果明显。随着计算机处理能力增长,内存增加,出现千兆级别的网络,加强了对恶意攻击包的"消化能力",加大了 DoS攻击的困难程度。例如攻击软件每秒钟可以发送3,000个攻击包,但主机和网络带宽每秒钟可以处理10,000个攻击包。如图所示,一个比较完善的DDoS攻击体系分成四大部分。第2和第3部分分别用做控制和实际发起攻击。对第4部分的受害者来说,DDoS的实际攻击包是从第3部分攻击傀儡机上发出的,第2部分的控制机只发布命令而不参与实际的攻击。对第2和第3部分计算机,黑客有控制权或者是部分的控制权,并把相应的DDoS程序上传到这些平台上,这些程序与正常的程序一样运行并等待来自黑客的指令,通常它还会利用各种手段隐藏自己不被别人发现。在平时,这些傀儡机器并没有什么异常,只是一旦黑客连接到它们进行控制,并发出指令的时候,攻击傀儡机就成为害人者去发起攻击了。

网络攻击-拒绝服务攻击

Denial of Service,简称DoS,造成DoS攻击的行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。

常见的DoS攻击有计算机网络 带宽攻击 和 连通性攻击 。

带宽攻击 指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。/br

连通性攻击 指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。

常用攻击手段有:SYN Flood、WinNuke、死亡之Ping、ICMP/SMURF、Finger炸弹、Land攻击、Ping洪流、Rwhod、Teardrop、TARGA3、UDP攻击等。

书中以SYN Flood攻击为例,详细介绍这种典型的DoS攻击:

SYN Flood是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

SYNFlood攻击利用了TCP协议中的三次握手(Three-way Handshake)

SYN Flood攻击的具体原理:/br

TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成)。

这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。这段时间的长度称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30s~2min);/br

一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP地址),服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。

即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。/br

如果服务器的TCP/IP栈不够大,最后的结果往往是堆栈溢出崩溃——即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬正常客户的请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况就称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)

拒绝服务攻击主要是利用了系统的一些漏洞。漏洞利用拒绝服务攻击是一种利用漏洞造成软件不能正常运行的攻击方式。这种拒绝服务不依赖大量傀儡机,也不需要发送大量访问请求,而仅仅是利用目标节点软件的安全漏洞,通过精心构造恶意数据包,造成目标节点软件不能有效运行。

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击是一种资源耗尽型攻击,通常也被称作洪水攻击。/br

利用分布于网络上的大量节点向同一目标节点发起的引起目标节点资源被大量消耗而不能正常对外提供服务的网络攻击方式。

分布式拒绝服务攻击主要是指那些借助外界的平台,如客户或者是服务器本身,把不同的计算机系统联合在一起,对其进行攻击,进而加倍地增强拒绝攻击的成果。一般情况,攻击者将分布式拒绝服务攻击的主控程序安装在一个用于控制的计算机上,将受控程序安装部署在因特网的多台计算机上。主控程序可以与受控程序进行通信并控制受控程序的行为,当主控程序发送特定的指令时,受控程序即可根据指令发动攻击。

DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。这种攻击方式有以下几种:

分布式拒绝服务攻击的步骤如下:/br

第1步:攻击者使用扫描工具扫描大量主机以寻找潜在入侵目标;/br

第2步:黑客设法入侵有安全漏洞的主机并获取控制权。这些主机将被用于放置后门、守护程序甚至是客户程序;/br

第3步:黑客在得到入侵计算机清单后,从中选出满足建立网络所需要的主机,放置已编译好的守护程序,并对被控制的计算机发送命令;/br

第4步:黑客发送控制命令给主机,准备启动对目标系统的攻击;

第5步:主机发送攻击信号给被控制计算机开始对目标系统发起攻击;

第6步:目标系统被无数伪造的请求所淹没,从而无法对合法用户进行响应,DDoS攻击成功。

DDoS攻击的效果是非常明显的,由于整个过程是自动化的,攻击者能够在5s钟内入侵一台主机并安装攻击工具。也就是说,在短短的一小时内可以入侵数千台主机,并使某一台主机可能要遭受1000MB/s数据量的攻击,这一数据量相当于1.04亿人同时拨打某公司的一部电话号码。

分布式反射拒绝服务攻击(DRDoS:Distributed Reflection Denial of Service)是一种较新的资源耗尽型拒绝服务攻击。

与分布式拒绝服务攻击使用伪造源IP地址不同,分布式反射拒绝服务攻击的来源IP地址全是真实地址,这些真实的网络节点本身并没有安全漏洞,而是利用TCP三次握手来实现的。

首先,攻击者通过控制的傀儡机使用受害者IP地址作为源地址向任意处于活动状态的网络节点(如核心路由器、域名服务器、大型网站等)发送带有SYN标记的数据包,也就是TCP三次握手的第一步;/br

处于活动状态的网络节点接收到伪造源IP地址的数据包后,将会按照协议要求向受害者进行应答,发送带有SYN、ACK标记的应答数据包。当攻击者使用大量傀儡机同时发起攻击时,即完成了一次分布式反射拒绝服务攻击。

分布式反射拒绝服务攻击最典型的攻击是Smurf攻击:/br

第一步:攻击者向被利用网络A的 广播地址 发送一个ICMP协议的“echo”请求数据报,该数据报源地址被伪造成10.254.8.9。/br

第二步:网络A上的所有主机都向该伪造的源地址返回一个“echo”响应,造成该主机服务中断。/br

现在的拒绝服务攻击很多都是利用工具自动化完成的。/br

攻击者控制某些主机不停地发送大量数据包给某服务器,造成服务器资源耗尽,一直到主机崩溃。CC主要是用来消耗服务器资源的。每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,模拟多个用户(多少线程就是多少用户)不停地访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU负荷长时间处于100%,永远都有处理不完的连接,直至网络拥塞,正常的访问被中止。

拒绝服务攻击通常是很难防范的,不过也有一些防护措施:/br

1.加强用户的安全防范意识,关闭不必要的网络接口,降低因个人疏忽造成的不安全因素,安装防范功能较强的软件,对计算机做定时的安全扫描工作;/br

2.增加安全防范手段,了解和掌握可以有效地防治安全漏洞的软件,使用一些专门的漏洞检查工具进行问题的检测,如网络测试仪、流量测试仪等,及时地找出修复漏洞的方法和措施,减少不必要的损失。/br

3.正确运用安全防范工具,及时地使用网络检测软件对不安全因素进行检测,使用那些专门检测网络安全隐患的软件,定期进行检测。/br

拒绝服务攻击是如何导致的?

拒绝服务攻击即攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为这是由于网络协议本身的安全缺陷造成的,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接

原理

SYN Flood

SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(Distributed Denial Of Service分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。 SYN Flood攻击的过程在TCP协议中被称为三次握手(Three-way Handshake),而SYN Flood拒绝服务 典型的分布式拒绝服务攻击网络结构图

攻击就是通过三次握手而实现的。 (1) 攻击者向被攻击服务器发送一个包含SYN标志的TCP报文,SYN(Synchronize)即同步报文。同步报文会指明客户端使用的端口以及TCP连接的初始序号。这时同被攻击服务器建立了第一次握手。 (2) 受害服务器在收到攻击者的SYN报文后,将返回一个SYN+ACK的报文,表示攻击者的请求被接受,同时TCP序号被加一,ACK(Acknowledgment)即确认,这样就同被攻击服务器建立了第二次握手。 (3) 攻击者也返回一个确认报文ACK给受害服务器,同样TCP序列号被加一,到此一个TCP连接完成,三次握手完成。 具体原理是:TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服 分布式拒绝服务攻击网络结构图

务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒~2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP地址),服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃—— 即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况就称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。 SYN COOKIE 防火墙是SYN cookie的一个扩展,SYN cookie是建立在TCP堆栈上的,他为linux操作系统提供保护。SYN cookie防火墙是linux的 一大特色,你可以使用一个防火墙来保护你的网络以避免遭受SYN洪水攻击。 下面是SYN cookie防火墙的原理 client firewall server ------ ---------- ------ 1. SYN----------- - - - - - - - - - - 2. ------------SYN-ACK(cookie) 3. ACK----------- - - - - - - - - - - 4. - - - - - - -SYN--------------- 5. - - - - - - - - - ------------SYN-ACK 6. - - - - - - -ACK--------------- 7. ----------- relay the ------- ----------- connection ------- 1:一个SYN包从C发送到S 2:防火墙在这里扮演了S的角色来回应一个带SYN cookie的SYN-ACK包给C 3:C发送ACK包,接着防火墙和C的连接就建立了。 4:防火墙这个时候扮演C的角色发送一个SYN给S 5:S返回一个SYN给C 6:防火墙扮演C发送一个ACK确认包给S,这个时候防火墙和S的连接也就建立了 7:防火墙转发C和S间的数据 如果系统遭受SYN Flood,那么第三步就不会有,而且无论在防火墙还是S都不会收到相应在第一步的SYN包,所以我们就击退了这次SYN洪水攻 击。

IP欺骗DOS攻击

DDOS攻击给运营商带来的损害

这种攻击利用RST位来实现。假设现在有一个合法用户(61.61.61.61)已经同服务器建立了正常的连接,攻 DDOS攻击

击者构造攻击的TCP数据,伪装自己的IP为61.61.61.61,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从61.61.61.61发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户61.61.61.61再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。攻击时,攻击者会伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务,从而实现了对受害服务器的拒绝服务攻击。

UDP洪水攻击

攻击者利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的占满带宽的数据。通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间存在很多的无用数据流,这些无用数据流就会导致带宽的服务攻击。

Ping洪流攻击

由于在早期的阶段,路由器对包的最大尺寸都有限制。许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方死机。

泪滴(teardrop)攻击

泪滴攻击是利用在TCP/IP堆栈中实现信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指明该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括service pack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。

Land攻击

Land攻击原理是:用一个特别打造的SYN包,它的原地址和目标地址都被设置成某一个服务器地址。此举将导致接受服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接。被攻击的服务器每接收一个这样的连接都将保留,直到超时,对Land攻击反应不同,许多UNIX实现将崩溃,NT变的极其缓慢(大约持续5分钟)。

Smurf攻击

一个简单的Smurf攻击原理就是:通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包来淹没受害主机的方式进行。最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞。它比ping of death洪水的流量高出1或2个数量级。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。

Fraggle攻击

原理:Fraggle攻击实际上就是对Smurf攻击作了简单的修改,使用的是UDP应答消息而非ICMP

什么是拒绝服务攻击

俗称就是DDOS攻击

其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为网络协议本身的安全缺陷,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接

就好比一条马路都同时走100人 忽然来了10000人 你说堵塞不堵塞 还能走吗? 就是这个道理。

服务器被攻击有什么表现

服务器被攻击一般有两种比较常见的方式:一是恶意的攻击行为,如拒绝服务攻击,网络病毒等等,这种方式就是消耗服务器资源,影响服务器的正常运作,甚至服务器所在网络的瘫痪;

另外一个就是恶意的入侵行为,这种行为更是会导致服务器敏感信息泄露,入侵者更是可以为所欲为,肆意破坏服务器

0条大神的评论

发表评论