如何防止流量攻击击又叫做拒絕服务攻击。顾名思义让服务器拒绝服务,从而达到使服务器瘫痪的效果
这种攻击让百万网管非常纠结从外层来看,这种攻击就像强奸一样只能受着不能防御,谁更有耐心谁就是最终的胜利着
首先先让百度来给我们更详细的解释
从百度给我们的资料来看,一切如何防止流量攻击击围绕着一个原则让你的服务器拒绝服务
百度提供的资料都是集思广益的,可能不尽全面也不尽合理
下面本人就拿自己的設想来浅谈一下拒绝服务攻击的惯用手法和防御方式
从外壳看来大致可以这样区分:分布式拒绝服务DDOS攻击、分布式拒绝服务CC攻击、拒绝垺务纯如何防止流量攻击击
危害最大的还是纯如何防止流量攻击击,最直接的攻击方式常用的手法有集群攻击,也可以叫做僵尸网络實质操控一大堆主机对目标发起请求
针对多流量,少session我们可以这样理解,我要打击某台服务器该服务器的动态流量是50MB,我有一台或者N囼傀儡机能发起51MB的数据请求。那么我不断的从该服务器下载东西达到50MB以上。这样这台服务器就会死掉。从而不能对其他用户进行服務运行在服务器上面的程序也不能与外界相连接
多session少如何防止流量攻击击。我们可以这样来理解一台服务器的并发连接数目是有限的。每次创建session后所有属性保存在session对象里面客户端关闭浏览器或者软件的时候服务器在一定的时间销毁session。session对象在创建之后保存在内存中正昰因为这样,所以一台服务器不能创建无限个session比方说某台服务器可以供一千人在一秒钟内同时发起数据请求,那我要让这个服务器出现拒绝服务怎么处理呢很简单,用一些工具模拟与服务器的通讯协议并且留下非空的随机session,那么只要我能在一秒钟内发起一千次请求以仩这个服务器就瘫痪了
少session,少流量这个该怎么理解,又没多少session也没多少流量,针对一些庞然大物的服务器压根就构不成一点威胁那么我们是怎么达到效果的呢,或许许多人喜欢用cc来解释这种拒绝服务攻击打个比方,在一个服务器的程序上有一个搜索/查询/列表/资料嘚任何接口这个接口的数据从数据库或者io获得,也可能连接第三方接口获得那么,问题来了服务器获得这个数据是经历一个过程的,比方说从数据库获得首先要加载驱动、创建连接对象、执行sql语句、解析结果等等这么一些步骤,而与数据库的数据交互是本机端口通訊那么这个过程肯定不如程序里面的while
case等等语句的执行速度,甚至达不到百万分之一也就是说我不断的向这个接口提交数据。多线程循環并且增加动态参数绕过缓存机制,这样客户端提交一起,服务器执行N次操作就达到了一个非常不平衡的机制,如果服务器查询的昰百万数据那么只要用很少的session和流量就会让服务器出现内存溢出、CPU爆掉等等现象、如果是IO获得数据,那服务器程序开发过程肯定考虑并發、多线程等等现象正所谓没有十全十美的程序,那么更会让IO爆掉正台机器陷入半瘫痪状态。如果是第三方接口获得那速度只会更慢,在从接口获得数据的connection里面容易出现超时、连接重置、连接失败等等现象如果这时候发起攻击,那么服务器肯定直接造成拒绝服务時间一长造成内存溢出等
如何防止流量攻击击这么头疼,那我们怎么防止呢
先从最基本的说起,一台主机向你服务器发送数据频率过高比方说每秒钟达到一百条甚至更多的时候,应当主动终止这台主机的连接并且不接受该主机的数据这个原理,就出来了网上大大小小嘚各种防火墙像什么安全狗,360网站卫士等等在如何防止流量攻击击的防御基本都是这样优点,这种防御能够有效的防止单纯的如何防圵流量攻击击缺点,这是一种治标不治本的防御不能防御动态地址发起的请求,同时防御本身也是一次session并不能防止多并发的攻击
另外小型网站上用得最多的一种防御:CDN加速
这里有必要解释一下CDN加速的原理,CDN和集群攻击几乎是同根同祖那我们先来看下集群攻击的基本構架
【攻击者操控一大批傀儡机对目标服务器发起攻击】
下面是CDN加速的构架
所谓的CDN加速可以理解成一个分布式缓存,也可以理解成一个多垺务器集群
当客户端访问CDN中转服务器的时候中转服务器分配请求给某个节点,节点先查询本地有没有缓存如果有,就响应给客户端洳果没有,就访问真实服务器并且把返回数据保存到本地缓存,然后响应给客户端
这样就实现了很多固定数据以缓存的形式保存在节點上,客户端访问并没有请求到真实的服务器从而打到预防一般如何防止流量攻击击的效果
当然,还有最生硬的防御一些大型企业站點所采用的集群
把一台或十台甚至几百台几千台机器的服务器用同一套系统,并且共享session数据同步。由服务器入口来分配负载压力
根据不哃的集群机配置来分配优先级别这样如果受到攻击除非把这些集群的全部服务器统统打掉,要不然是感觉不到压力的
这种集群一般用在夶型企业的机房
另外预防攻击的一些方式:缓存机制、数据库优化等待尽可能的减少服务器上面的操作步骤
毕竟是国外的其实简单通俗来講,DDOS攻击是利用带宽的流量来攻击服
举个例子服务器目前带宽是100M,突然从外边来了200M的带宽流量进来那么服务器根本承
载不了这个200M的带寬流量,服务器的网络瞬间就会瘫痪导致服务器
务器里的网站都无法打开,因为200M的带宽流量已经占满
了整个服务器的100M带宽。
再举一个哽贴切于生活的例子:一家饭店正常情况下最多能承载100个人吃饭,因为同行竞争
对面饭店老板雇佣了200个社会小混混去饭店吃饭,导致飯店满客
无法再接纳正常的客人来饭
店吃饭了。这就是DDOS攻击利用流量去占满服务器
的带宽,导致没有多余的带宽来提供用户
UDP-flood是属于UDP协議中的一种如何防止流量攻击击攻击特征是伪造大量的真实IP并发送小数量的数
据包对要攻击的服务器进行发送,只要服务器开启UDP的端口僦会受到
如何防止流量攻击击如何防御这种
如何防止流量攻击击,对UDP的包数据大小进行设置严格把控发送
的数据包大小,超过一定值嘚数据包进
行丢弃再一个防御的方法是只有建立了
TCP链接的IP,才能发送UDP包否则直接屏蔽该IP。
ICMP是利用ICMP协议对服务器进行PING的攻击放大icmp的长喥,以及数据包的字节对服务器
进行攻击TCP-flood攻击是一种使用tcp三次握手协议的一种方式来进
行的攻击,攻击特种是伪
造大量的真实IP去连接要攻击的服务器导致服务器无法
承载更多的TCP连接而导致服务器瘫痪。
SYN-Flood是利用SYN协议客户端协议上发送SYN数据,服务器接收到并响应SYN以及ACK反映
攻击者利用这个方式去模拟大量的客户连接发送数据包,导致服务器
ACK-Flood的攻击跟上面这个SYN的攻击差不多都是同样采用发送数据包到服务器端去,攻击者
利用ACK数据包进行攻击只要服务器接受ACK的包,那么就会造成
ACK连接过多导致服务器资源
耗尽服务器没有多余的资源来接收ACK嘚包,服务器
SSL-Flood是利用客户端不断的与SSL通道握手SSL的资源比普通的用户访问HTTP网站消耗的资
源还要多,会多出几十倍配置低的服务器根本无法承载SSL的多次
请求与握手,导致服务器
的CPU占用到百分之90没有多余的CPU去处理用户的访问。SSL如何防止流量攻击击如何防御:禁用
反射性的攻擊不管是DNS反射还是NTP反射,都是使用的UDP协议攻击UDP协议里访问用
户发送请求的数据包到服务器,服务器再反馈给用户端那么用户端发送箌服务器里的请求数
据包里,用户的IP可以进行伪造可以伪造成服务器的IP,服务器IP发送数据包到服务器IP里
这样就造成了反射攻击。
DNS反射攻击也是一样的道理利用DNS服务器的解析进行攻击,伪造要攻击的服务器IP进行
DNS查询,并查询到DNS服务器里DNS服务器返回数据包到要攻击的垺务器IP中去,一来一去