数据中心防范黑客DDoS攻击案例DDoS
黑客攻击分析
根据黑客攻击心理学分析,通常黑客攻击的目标是一个明确的Web 服务器,目的通常是让其无法正常访问。通常黑客在实施一次攻击之前会先进行小规模试探性攻击,例如制造几分钟的大量SYN数据包并观察目标网站的访问是否受到了预期的影响。只有黑客看到此类试探性攻击有效后,才会制造后续的大规模攻击。而按IDC之前的惯例来处理此类攻击的方法通常是,将受害主机断开网线并将其地址列入防火墙或者黑洞路由。而此措施正好帮助黑客实现了他的攻击目的,显然黑客不会因此停手,而通常情况下黑客会为了巩固攻击结果而加大火力或者持续火力来攻击。这并不是我们所希望看到的。 事实证明我们迫切需要一种防护方式让黑客看起来他的攻击对于目标主机是无效的,使其放弃攻击或改用其他网站渗透攻击(对IDC不造成影响的)等,而不是帮助黑客实现他的攻击目的。—— 这就是我们将要引入的新安全防护概念
注意:
当我们的网络遭遇拒绝服务攻击时请不要进行如下操作:
将受害主机断开网线,或者限制其通过带宽,因为根据网络交换机原理当发往目标主机的数据包不可达时,交换机会将此数据包尝试投递到交换机的每一个端口上去寻找目标地址,而真正的目标主机已经被我们拔掉了网线或者限制了通过带宽,那么次操作显然会加重交换机负载,并且将攻击流量在交换机内部复制了N倍(N等于同一VLAN下的交换机端口数)。
正确处理方式如下:
在上层路由器中将受害主机地址列入一个具有数据包过滤功能的路由器,如果不具备此类设备可以考虑将其列入一个黑洞路由。
黑客最常见的攻击方式大体为 拒绝服务 ( DDoS ) 和 ARP欺骗。对IDC资源产生影响的常见拒绝服务可分为 大流量攻击 和 大量并发连接攻击 。 下面我们针对这三种攻击进行如下分析:
大量并发连结数攻击:
此类攻击对于具备硬件或软件防火墙的网络最有效。每个防火墙都有一个会话(Session)数值代表其可以处理的同时并发连接数的指标。其攻击的原理就是制造的伪造源地址的TCP SYN握手请求发往目标主机,而目标主机在受到此请求后还会向其伪造的源地址回应一个数据包,这样对于防火墙来说就构成了一个会话。而由于每个数据包都是来自并回应到伪造地址的,因此除了等待会话超时否则它永远不会被主动关闭。那么不管这个防火墙具备多大的处理能力,也很快会被耗尽资源,其结果将导致受此防火墙保护的整个网络将瘫痪,而不仅是一台目标主机。
大流量攻击:
当黑客制造了一定的并发连但对目标网络和防火墙没有构成威胁的时候,他们通常还会想到继续加大火力,而因此就产生了大流量攻击。而能黑客并不能精确计算出当他们制造了10Mbps DDoS流量后最终到达受害主机会被放大多少倍。这可能是由于我们IDC的网络结构帮助了黑客。 例如:
<!--[if !supportLists]-->l <!--[endif]-->受害主机会回应伪造的数据包, 流量被放大了一倍
<!--[if !supportLists]-->l <!--[endif]-->我们的网络采用了Truck聚合技术,由于每个数据包要被封包,而每个数据包本身都很小,因此流量被放大了大约10%-15%。
<!--[if !supportLists]-->l <!--[endif]-->由于目标主机负载问题产生的丢包,虽然丢了一个数据包,但其数据包会被广播到交换机的各个端口,因此流量被放大了N倍。
虽然制造洪水攻击并不是很复杂,但不可否认黑客制造1Gbps的流量也是需要一定成本的。因此如果没有我们的不良配置,以及在攻击刚刚发生时候的即时相应通常会让黑客放弃继续增加以至于上Gbps流量的想法。
ARP欺骗:
我们抵御住了外部攻击,黑客显然不能直接瘫痪我们的网络,单是黑客通常会选择先从另外一个脆弱的主机入手。然后再向同一个C网段的其他主机或者路由器发送ARP欺骗数据包。相比制造大量流量这样可以最低成本的打道攻击目的。由于数据包来自内往的交换机下,因此我们购买的防火墙显然不能发挥作用。而防范此类攻击我们应该做的事情是侦听。利用交换机的镜像端口功能,将所有流量复制到一个侦听端口上,然后通过OSI 7层拆包技术来侦听所有过往的ARP包。然后再探测出一张MAC – IP的拓扑表,就可以迅速找到被利用的主机了。
技术实施原理
采用此方案来处理黑客攻击,我们需要提升两样处理能力。细致拆包和精确的设置防火墙规则, 目前常见的防火墙只能处理OSI 3层或4层的攻击。也就是说只能设置精确到TCP端口的防火规则,这显然是不够的。例如我们把一台web服务器的80端口从防火墙上拦截并限制其访问,那么其效果岂不等同于拔掉它的网线么,还是帮助黑客实现了攻击目的了。而我们所要做的应该是分析所有发往该主机80端口的数据包,寻找出带有攻击性数据包的特征和共性,然后针对这种情况设置一条精确匹配的防火规则。 同样是发往该主机80端口的数据包,只有满足我们设定的攻击特征才会被拦截,而且他的数据包全部方行,这才是真中有效的处理方式。
通常的防火墙产品是无法满足这样的应用需求的,据我所知著名的黑洞防火墙具备此神奇的功能,但购买一台黑洞防火墙的代价甚至大于我一个月的总利润(我宁可舍弃黑客干掉我网站三天的损失,也不愿意花那一大笔钱)。其他级别的7层防火墙也都价格不菲。在本方案中我们建议使用基于UNIX操作系统的防火墙和侦听方案。
UNIX系统的自身安全稳定性想必大家众所周知,FreeBSD UNIX对于防火墙模块的支持不同于其他系统实基于软件实现的,而BSD的防火墙模块可以被直接编译进内核。然后系统工作起来可以把硬件抽象为就是一个硬件防火墙. 下面我们来简单介绍一下所涉及的3个UNIX核心工具。
nload 实时过往流量分析工具
这个工具就像是一个可以每秒进行一次统计的MRTG。在处理攻击的时候我们需要随时知道网络流量的变化,而不是设定一个命令然后等5分钟再去看一下结果。所以他很简单却很实用。
tcpdump过往流量拆包分析工具
tcpdump非常著名,以至于几乎所有的UNIX发行版本中都捆绑了它的各个不同版本。它有丰富的可选参数,几乎可以制定出我们想要得各种侦听模式,而且是OSI-7层侦听。它与著名的Sniffer抓包工具一样,都是对当前的网络报进行探测并显示,不同之处在于Sniffer更适合于抓包记录并日后分析或取证,而tcpdump的功夫在于实时抓包侦听。它可以轻松的将每秒100Mbps的过往流量打开展示在我们的面前而不会消耗很高系统资源,更不会因此死机。在攻击发生的时候出了来了多少流量,我们更需要他来帮助我们知道来的这些流量都是什么,带有什么特征。
ipfw UNIX内核集成的7层防火墙
ipfw并不是一个防火墙软件,具备独立的进程来消耗CPU资源和内存,真正的防火墙系统是UNIX的内核本身,而他就像Unix Shell一样是用于与UNIX的防火墙内核模块交互命令的一个工具。它可以工作与动态防火规则和静态防火规则两种模式,如果是动态规则,那么就像其他防火墙一样当遇到大量并非连接时候他会被耗尽资源,但是静态防火规则是由于原理不同,因此它没有最大会话数量这个概念。当然也不会因此使网络瘫痪。
最主要的是它是7层防火墙,也就是说我可以清楚地向UNIX内核去描绘:
#ipfw add 100 deny tcp from 60.0.0.0/8 to 210.72.224.145 dst-port 80 ipttl 116 iplen 40 setup in
请拦截由60.0.0.0/8这些地址发送到210.72.224.145的tcp 80端口并且ttl =116 并 ip包大小等于40并且类型为SYN并且是流入方向。 这样我们就可以实现精确匹配工具数据包了。
应用实施方案
<!--[if !supportLists]-->1、 <!--[endif]-->透明模式
将我们的防火墙连接在路由器与现有防火墙之间,并设置它工作为透明桥接模式,当攻击发生时,可以直接在此处拦截并过滤掉网络攻击。 当硬件故障或其他意外发生时恢复之前的网络结构也很容易,简单的就像替换掉一根坏了的网线一样把它短接过去就可以了。
<!--[if !supportLists]-->2、 <!--[endif]-->路由+旁听模式
我们也可以把它配制好并放在一边,当侦听到有攻击的时候,就像设置黑洞路由一样,把受攻击主机的IP地址路由到这台设备的IP上,再此设备上为受攻击主机分析数据并过滤掉攻击数据包,然后再把干净的网络流量路由给目标主机。 这种按需使用的方式可减少增加由于网络设备所造成的细微性能开销,和硬件问题造成的隐患。缺点是手动的工作多了一些,别嫌麻烦就行。
应用实施案例
受影响网络: 210.72.224.0/24
时间:2008-3-5 凌晨
情况:突然爆发了大量并发连接数的DDoS攻击,造成224网段的防火墙超出最大连接数,导致224整个网段瘫痪。
难点:必须想办法让黑客停止攻击,否则即便我们可以用黑洞路由化解掉这个流量,但他仍然浪费了我们大量的有效连接资源和带宽。
处理:将受攻击IP 210.72.224.145 通过路由的方式单独提到210.72.225.248这台跨网段并具备数据包过滤功能的路由器上,进行过滤后再把安全的流量路由回210.72.224.145。这样224网段减少了数据包流量,因此224恢复了正常。在过滤掉攻击数据包之后,受攻击的服务器224.145也恢复了访问,在此后不到10分钟的时间内,黑客停止的攻击,至今没有再攻。
受影响网络: 210.72.225.0/24
时间:2007 中旬
情况:基于ARP欺骗的病毒在此期间大量爆发,经常发生由于路由器地址被病毒欺骗导致的网络中断。
难点:由于ARP欺骗仅发生在网络交换机内部,因此任何防火墙对他都没有效果,而交换机设备仅仅是一个没有操作系统的硬件,我们无法察看交换机上的数据。 我们也不能拦截所有的ARP通讯量,因为网络需要依赖ARP协议来寻找地址。
处理:由UNIX系统日至所记载ARP变更警告来迅速锁定中病毒的机器。并配合tcpdump来实施基于硬件链路层的ARP数据包侦听。 例如:MAC地址为A的机器对B说,网关的MAC地址为A主机的MAC,这显然是A在发送欺骗数据包,而这一切动作都在tcpdump下看的一清二楚。