一、攻击方式linux
到目前为止,进行DDoS攻击的防护仍是比较困难的。首先,这种攻击的特色是它利用了TCP/IP协议的漏洞,
除非你不用TCP/IP,才有可能彻底抵御住DDoS攻击。不过这不等于咱们就没有办法阻挡DDoS攻击,
咱们能够尽力来减小DDoS的攻击。数据库
二、攻击种类分为三种:一、Denial of Service(简称DoS攻击也就是拒绝服务)
二、Distributed Denial of Service(简称DDoS攻击也就是分布式拒绝服务)windows
三、Distributed Reflection Denial of Service(简称DRDoS攻击也就是分布反射式拒绝服务)缓存
目前这三种攻击方法最厉害的是第二种Distributed Denial of Service(简称DDoS攻击也就是分布式拒绝服务),
虽然第三种Distributed Reflection Denial of Service(简称DRDoS攻击也就是分布反射式拒绝服务)是最近
新出的攻击方法,可是他只是DDoS也就是分布式拒绝服务的变形,惟一的区别是不用占领大量的“肉鸡”
(肉鸡也称傀儡机,是指能够被黑客远程控制的机器。好比用"灰鸽子"等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,
黑客能够随意操纵它并利用它作任何事情。肉鸡一般被用做DDOS攻击。能够是各类系统,如windows、linux、unix等,更能够是一家公司、企业、
学校甚至是政府军队的服务器。) 以上三种攻击方式都是利用TCP三次握手的漏洞进行攻击的服务器
tcp握手的简单解释:第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求创建联机;网络
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包tcp
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送
ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则链接创建成功。分布式
完成三次握手,主机A与主机B开始传送数据 seq(序列号) syn(tcp/ip创建链接时的握手信号) ack(能确认信息的传输控制字符)工具
三、攻击原理网站
SYN攻击是当前网络上最为常见DDos攻击,也是最为经典的拒绝服务攻击,它利用了TCP协议实现上的一个缺陷,
经过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能形成目标服务器中的半开链接队列被占满,
从而阻止其它合法用户进行访问。
这种攻击从1996年至今不少操做系统,甚至防火墙、路由器都没法有效地防护这种攻击,并且因为它能够方便地伪造源地址,追查起来很是困难。
它的数据包特征一般是,源发送了大量的SYN包,而且缺乏三次握手的最后一步握手ACK回复。
DDoS攻击它的原理说白了就是群殴,用好多的机器对目标机器一块儿发动DoS攻击,可是这种攻击并非多名黑客同时攻击而大可能是由一名黑客独自操做来完成
而它所用到的攻击方法就是经过网络占领不少的“肉鸡”也就是她以前感染的所中病毒的电脑并进行控制来发动DDoS攻击因此咱们称它为分布式拒绝服务。
四、防护方法
1. 确保服务器的系统文件是最新的版本,并及时更新系统补丁。
2. 关闭没必要要的服务。
3. 限制同时打开的SYN半链接数目。
4. 缩短SYN半链接的time out 时间。
5. 正确设置防火墙
禁止对主机的非开放服务的访问
限制特定IP地址的访问
启用防火墙的防DDoS的属性
严格限制对外开放的服务器的向外访问
运行端口映射程序祸端口扫描程序,要认真检查特权端口和非特权端口。
6. 认真检查网络设备和主机/服务器系统的日志。只要日志出现漏洞或是时间变动,那这台机器就可能遭到了攻击。
7. 限制在防火墙外与网络文件共享。(这样会给黑客截取系统文件的机会,主机的信息暴露给黑客无疑是给了对方入侵的机会。)
8. 路由器
以Cisco路由器为例
Cisco Express Forwarding(CEF)
使用 unicast reverse-path(单播反向路径)
访问控制列表(ACL)过滤
设置SYN数据包流量速率
升级版本太低的ISO
为路由器创建log server
DRDoS分布反射式拒绝服务攻击这是DDoS攻击的变形,它与DDoS的不一样之处就是DrDoS不须要在攻击以前占领大量的"肉鸡"。它的攻击原理和Smurf攻击原理相近,不过DRDoS是能够在广域网上进行的,而Smurf攻击是在局域网进行的。它的做用原理是基于广播地址与回应请求的。一台计算机向另外一台计算机发送一些特殊的数据包如ping请求时,会接到它的回应;若是向本网络的广播地址发送请求包,实际上会到达网络上全部的计算机,这时就会获得全部计算机的回应。这些回应是须要被接收的计算机处理的,每处理一个就要占用一份系统资源,若是同时接到网络上全部计算机的回应,接收方的系统是有可能吃不消的,就象遭到了DDoS攻击同样。不过是没有人笨到本身攻击本身,不过这种方法被黑客加以改进就具备很大的威力了。黑客向广播地址发送请求包,全部的计算机获得请求后,却不会把回应发到黑客那里,而是发到被攻击主机。这是由于黑客冒充了被攻击主机。黑客发送请求包所用的软件是能够伪造源地址的,接到伪造数据包的主机会根据源地址把回应发出去,这固然就是被攻击主机的地址。黑客同时还会把发送请求包的时间间隔减少,这样在短期能发出大量的请求包,使被攻击主机接到从被欺骗计算机那里传来的洪水般的回应,就像遭到了DDoS攻击致使系统崩溃。骇客借助了网络中全部计算机来攻击受害者,而不须要事先去占领这些被欺骗的主机,这就是Smurf攻击。而DRDoS攻击正是这个原理,黑客一样利用特殊的发包工具,首先把伪造了源地址的SYN链接请求包发送到那些被欺骗的计算机上,根据TCP三次握手的规则,这些计算机会向源IP发出SYN+ACK或RST包来响应这个请求。同Smurf攻击同样,黑客所发送的请求包的源IP地址是被攻击主机的地址,这样受欺骗的主机就都会把回应发到被攻击主机处,形成被攻击主机忙于处理这些回应而瘫痪。
DDoS究竟如何攻击?目前最流行也是最好用的攻击方法就是使用SYN-Flood进行攻击,SYN-Flood也就是SYN洪水攻击。SYN-Flood不会完成TCP三次握手的第三步,也就是不发送确认链接的信息给服务器。这样,服务器没法完成第三次握手,但服务器不会当即放弃,服务器会不停的重试并等待必定的时间后放弃这个未完成的链接,这段时间叫作SYN timeout,这段时间大约30秒-2分钟左右。如果一个用户在链接时出现问题致使服务器的一个线程等待1分钟并非什么大不了的问题,可是如有人用特殊的软件大量模拟这种状况,那后果就可想而知了。一个服务器如果处理这些大量的半链接信息而消耗大量的系统资源和网络带宽,这样服务器就不会再有空余去处理普通用户的正常请求(由于客户的正常请求比率很小)。这样这个服务器就没法工做了,这种攻击就叫作:SYN-Flood攻击。
到目前为止,进行DDoS攻击的防护仍是比较困难的。首先,这种攻击的特色是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能彻底抵御住DDoS攻击。不过这不等于咱们就没有办法阻挡DDoS攻击,咱们能够尽力来减小DDoS的攻击。下面就是一些防护方法:
1. 确保服务器的系统文件是最新的版本,并及时更新系统补丁。
2. 关闭没必要要的服务。
3. 限制同时打开的SYN半链接数目。
4. 缩短SYN半链接的time out 时间。
5. 正确设置防火墙
6. 认真检查网络设备和主机/服务器系统的日志。只要日志出现漏洞或是时间变动,那这台机器就可 能遭到了攻击。
7. 限制在防火墙外与网络文件共享。这样会给黑客截取系统文件的机会,主机的信息暴露给黑客, 无疑是给了对方入侵的机会。
8. 路由器
以Cisco路由器为例
可以了解DDoS攻击的原理,对咱们防护的措施在加以改进,咱们就能够挡住一部分的DDoS攻击。
ACK Flood攻击
ACK Flood攻击是在TCP链接创建以后,全部的数据传输TCP报文都是带有ACK标志位的,主机在接收到一个带有ACK标志位的数据包的时候,须要检查该数据包所表示的链接四元组是否存在,若是存在则检查该数据包所表示的状态是否合法,而后再向应用层传递该数据包。若是在检查中发现该数据包不合法,例如该数据包所指向的目的端口在本机并未开放,则主机操做系统协议栈会回应RST包告诉对方此端口不存在。
UDP Flood攻击
UDP Flood是日渐猖厥的流量型DoS攻击,原理也很简单。常见的状况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。 100k pps的UDP Flood常常将线路上的骨干设备例如防火墙打瘫,形成整个网段的瘫痪。因为UDP协议是一种无链接的服务,在UDP FLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。可是,因为UDP协议是无链接性的,因此只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。
ICMP Flood攻击
ICMP Flood 的攻击原理和ACK Flood原理相似,属于流量型的攻击方式,也是利用大的流量给服务器带来较大的负载,影响服务器的正常服务。因为目前不少防火墙直接过滤ICMP报文,所以ICMP Flood出现的频度较低。
Connection Flood攻击
Connection Flood是典型的而且很是有效的利用小流量冲击大带宽网络服务的攻击方式,,这种攻击方式目前已经愈来愈猖獗。这种攻击的原理是利用真实的IP地址向服务器发起大量的链接,而且创建链接以后很长时间不释放,占用服务器的资源,形成服务器服务器上残余链接(WAIT状态)过多,效率下降,甚至资源耗尽,没法响应其余客户所发起的链接。
其中一种攻击方法是每秒钟向服务器发起大量的链接请求,这相似于固定源IP的SYN Flood攻击,不一样的是采用了真实的源IP地址。一般这能够在防火墙上限制每一个源IP地址每秒钟的链接数来达到防御目的。但如今已有工具采用慢速链接的方式,也即几秒钟才和服务器创建一个链接,链接创建成功以后并不释放并定时发送垃圾数据包给服务器使链接得以长时间保持。这样一个IP地址就能够和服务器创建成百上千的链接,而服务器能够承受的链接数是有限的,这就达到了拒绝服务的效果。
HTTP Get攻击
用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,特征是和服务器创建正常的TCP链接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用,典型的以小博大的攻击方法。通常来讲,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎能够忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的,常见的数据库服务器不多能支持数百个查询指令同时执行,而这对于客户端来讲倒是垂手可得的,所以攻击者只需经过Proxy代理向主机服务器大量递交查询指令,只需数分钟就会把服务器资源消耗掉而致使拒绝服务,常见的现象就是网站慢如蜗牛、ASP程序失效、PHP链接数据库失败、数据库主程序占用CPU偏高。这种攻击的特色是能够彻底绕过普通的防火墙防御,轻松找一些Proxy代理就可实施攻击,缺点是对付只有静态页面的网站效果会大打折扣,而且有些Proxy会暴露攻击者的IP地址。
UDP DNS Query Flood攻击
UDP DNS Query Flood攻击采用的方法是向被攻击的服务器发送大量的域名解析请求,一般请求解析的域名是随机生成或者是网络世界上根本不存在的域名,被攻击的DNS 服务器在接收到域名解析请求的时候首先会在服务器上查找是否有对应的缓存,若是查找不到而且该域名没法直接由服务器解析的时候,DNS 服务器会向其上层DNS服务器递归查询域名信息。域名解析的过程给服务器带来了很大的负载,每秒钟域名解析请求超过必定的数量就会形成DNS服务器解析域名超时。
根据微软的统计数据,一台DNS服务器所能承受的动态域名查询的上限是每秒钟9000个请求。而咱们知道,在一台P3的PC机上能够轻易地构造出每秒钟几万个域名解析请求,足以使一台硬件配置极高的DNS服务器瘫痪,因而可知DNS 服务器的脆弱性。同时须要注意的是,蠕虫扩散也会带来大量的域名解析请求。