关于DDOS、DOS、CC攻击那点事
在现实生活中我们经常听到某某网站被黑客攻击导致网站不能正常提供服务或者是网站信息被篡改等等情况,那么下面我们来简单了解下黑客一般是通过什么手段使得网站瘫痪的呢?下面会提到常用的三种基于网络的三种攻击方式。
DDOS攻击,全称为DDoS:DistributedDenialofService,翻译中文为:分布式拒绝服务。主要是指基于客户/服务器技术,将网络上多个计算机联合起来作为攻击平台载体,对一个或多个目标发动攻击,这样借助于网络上的机器提高拒绝服务攻击的威力。这些网络上的机器可能是在自己未知的情况下被安装攻击程序,这样只要主控机器向网络上各个主机发送攻击指令,这样网络主机就成为了一个攻击源,并且被攻击对象【可以认为是一个站点】还会认为这些攻击请求为合法的请求。
那么这种攻击方式的原理是什么呢?被攻击站点的资源是有限的,包括带宽、CPU、内存、磁盘IO等等都是存在上限的。当这些资源都被网络攻击所占的时候,一个正常的请求过来可能就会被处理的很慢严重的情况直接导致站点服务器宕机,从而导致直接不能提供服务。
拒绝服务攻击即攻击者想办法让目标机器停止提供服务或资源访问。这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。
目前对于这种攻击方式没有好的处理方案。
DOS攻击:DOS是DenialofService的简称,即拒绝服务,DoS攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃。
这种攻击方式的原理可以通过TCP/IP三次握手来分析:
三次握手我们都知道流程为客户端向服务器发送一个SYN包,自身会进入SYN_SEND状态,服务器收到SYN包,正常情况会回复一个SYN+ACK包,自身进入SYN_RECE.客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=j+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。
在上面还需要引入半连接的概念,半连接:收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。
半连接队列:在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:表示半连接队列的最大容纳数目。
SYN-ACK重传次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息、从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
上面三个参数对系统的TCP连接状况有很大影响。
SYN洪水攻击属于DoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。从图4-3可看到,服务器接收到连接请求(SYN=i)将此信息加入未连接队列,并发送请求包给客户端(SYN=j,ACK=i+1),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求
CC攻击(ChallengeCollapsar):CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的,这是不同于其他攻击方式的地方,攻击页面的原因是由于一些页面会去从数据库中做查询操作,这样会与数据库服务器建立网络连接,大量的这样的请求时会造成数据库服务器访问压力剧增,严重者宕机。并且这种攻击方式主要是借助于代理服务器模拟正常请求方法向站点服务器发起访问。
DDOS和DOS还是有所不同,DDOS的攻击策略侧重于通过很多“僵尸主机”(被攻击者入侵过或可间接利用的主机)向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务。
DOS则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、主机死机而无法提供正常的网络服务功能,从而造成拒绝服务。