一;dos***概念

  DoS:是Denial of Service的简称,即拒绝服务,不是DOS操作系统,造成DoS的***行为被称为DoS***,其目的是使计算机或网络无法提供正常的服务。最常见的DoS***有计算机网络带宽***和连通性***。

  DDOS:分布式拒绝服务(DDoS:Distributed Denial of Service)***指借助于客户/服务器技术,将多个计算机联合起来作为***平台,对一个或多个目标发动DDoS***,从而成倍地提高拒绝服务***的威力。

      下面的图片是TCP的通信的三次握手,如果说***端,发送完第一次握手的数据后,然后就“消失”了,那么服务器就会不断的发送第二次握手的数据,可是***端的人找不到了。于是,服务器的资源大量被消耗,直到死机为止。

ca1349540923dd543dc8a0c3d409b3de9d8248e5


     事实上DOS的***方式有很多种,比如下面的常见的:

  1、SYN FLOOD  利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。   如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。   

      2、IP欺骗DOS***  这种***利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,***者构造***的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。   ***时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。     

     3、带宽DOS***  如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种***就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS***。 

  4、自身消耗的DOS***  这是一种老式的***手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。  这种DOS***就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。 

  上面这些实施DOS***的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些***方法都是建立在TCP基础上的。还有其他的DOS***手段。     

 5、塞满服务器的硬盘  通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS***的途径,比如:   发送垃圾邮件。

     一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。 让日志记录满。***者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现***者真正的***途径。  向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。    

二:DDoS防御

对于DDOS防御的理解
  对付DDOS是一个系统工程,想仅仅依靠某种系统或产品防住DDOS是不现实的,可以肯定的是,完全杜绝DDOS目前是不可能的,但通过适当的措施抵御90%的DDOS***是可以做到的,基于***和防御都有成本开销的缘故,若通过适当的办法增强了抵御DDOS的能力,也就意味着加大了***者的***成本,那么绝大多数***者将无法继续下去而放弃,也就相当于成功的抵御了DDOS***。

 

对于防止DDOS***首先应以平时预防为主


(1)对网站进行DDOS压力测试。通过检测工具找到网站架构中弱点,加以优化、弥补之

(2)选择口碑好、服务好、安全防护好点的机房;选IDC时,购买机房带宽就把这些事谈好,有没有防火墙、电力冗余设备,临时紧急问题能否帮我们(比如临时把带宽从500M提升到1000M);IDC机房的选用:这一点确实很关键,要寻找一些有实力、能提供更高级别防护、当面对***时能快速响应并配合做各种防护策略的IDC厂商合作

(3)网站架构尽量无单点,做集群高可用性部署,前后端多架设cache;系统(包括web,db)自身优化及安全配置

       (4)平时预留可以撑住增加30%以上流量的突发情况的资源,资源包括带宽、服务器、架构承受并发能力。

      (5)网站架构优化

      (6)多把内容或内容放在CDN,既请"老虎"帮忙!比如把www.etiantian.org首页,二级导航页、及其他静态页放cdn,JS,CSS及图片、视频都放CDN。

       (7)软硬件防护。apache,nginx都有相应的DDOS防护模块,iptables,做单IP的并发限制,流量限制,syn及部分***限制。可以使用傲盾、黑洞等专业的防DDOS防火墙组建集群

 

(8)数据包及日志分析:对于那种四两拨千斤(SYN flood、CC)或者疑似DDOS的***,可以通过分析数据包、日志来按制定防护策略,如果说要报警,这些也可以为警方提供线索。

 

(9)疑似DDOS***:如果文件被盗链、服务器中毒、前端缓存服务器设置不合理、程序BUG、交换机(路由器)故障等,要通过抓包分析、日志分析来定位问题。


  

  (10)定期扫描

  要定期扫描现有的网络主节点,清查可能存在的安全漏洞,对新出现的漏洞及时进行清理。骨干节点的计算机因为具有较高的带宽,是***利用的最佳位置,因此对这些主机本身加强主机安全是非常重要的。而且连接到网络主节点的都是服务器级别的计算机,所以定期扫描漏洞就变得更加重要了。

  (11)在骨干节点配置防火墙

  防火墙本身能抵御DdoS***和其他一些***。在发现受到***的时候,可以将***导向一些牺牲主机,这样可以保护真正的主机不被***。当然导向的这些牺牲主机可以选择不重要的,或者是linux以及unix等漏洞少和天生防范***优秀的系统。

  

  (12)过滤不必要的服务和端口

  过滤不必要的服务和端口,即在路由器上过滤假IP……只开放服务端口成为目前很多服务器的流行做法,例如WWW服务器那么只开放80而将其他所有端口关闭或在防火墙上做阻止策略。

  (13)检查访问者的来源

  使用Unicast Reverse Path Forwarding等通过反向路由器查询的方法检查访问者的IP地址是否是真,如果是假的,它将予以屏蔽。许多******常采用假IP地址方式迷惑用户,很难查出它来自何处。因此,利用Unicast Reverse Path Forwarding可减少假IP地址的出现,有助于提高网络安全性。

 

  (14)限制SYN/ICMP流量

  用户应在路由器上配置SYN/ICMP的最大流量来限制SYN/ICMP封包所能占有的最高频宽,这样,当出现大量的超过所限定的SYN/ICMP流量时,说明不是正常的网络访问,而是有******。早期通过限制SYN/ICMP流量是最好的防范DOS的方法,虽然目前该方法对于DdoS效果不太明显了,不过仍然能够起到一定的作用。


  

  (15)、尽量避免NAT的使用

  无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换NAT的使用,因为采用此技术会较大降低网络通信能力,其实原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间,但有些时候必须使用NAT,那就没有好办法了。

  (16)、充足的网络带宽保证

  网络带宽直接决定了能抗受***的能力,假若仅仅有10M带宽的话,无论采取什么措施都很难对抗现在的SYNFlood***,当前至少要选择100M的共享带宽,最好的当然是挂在1000M的主干上了。但需要注意的是,主机上的网卡是1000M的并不意味着它的网络带宽就是千兆的,若把它接在100M的交换机上,它的实际带宽不会超过100M,再就是接在100M的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为10M,这点一定要搞清楚。

  

  (17)、把网站做成静态页面

  大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗***能力,而且还给******带来不少麻烦,至少到现在为止关于HTML的溢出还没出现,看看吧!新浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受***时连累主服务器,当然,适当放一些不做数据库调用脚本还是可以的,此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问你网站的80%属于恶意行为。