网管必备:防范黑客几种分布式的攻击
作者:jams 来源:天极博客 添加时间:2006-5-26 12:30:02所以,可以事先测试或者预测该主机在峰值时期的Half Connction 的活动数量上限,以其作为参考设定TCP活动 Half Connction最大连接数的值,然后再以该值的倍数(不要超过2)作为TCP最大Half Connection值,这样可以通过负反馈的手段在一定程度上阻止SYN攻击。
2.4退让策略:退让策略是基于SYN Flood攻击代码的一个缺陷,我们重新来分析一下SYN Flood攻击者的流程:SYN Flood程序有两种攻击方式,基于IP的和基于域名的,前者是攻击者自己进行域名解析并将IP地址传递给攻击程序,后者是攻击程序自动进行域名解析,但是它们有一点是相同的,就是一旦攻击开始,将不会再进行域名解析,我们的切入点正是这里:假设一台服务器在受到SYN Flood攻击后迅速更换自己的IP地址,那么攻击者仍在不断攻击的只是一个空的IP地址,并没有任何主机,而防御方只要将DNS解析更改到新的IP地址就能在很短的时间内(取决于DNS的刷新时间)恢复用户通过域名进行的正常访问。为了迷惑攻击者,我们甚至可以放置一台“牺牲”服务器让攻击者满足于攻击的“效果”(由于DNS缓冲的原因,只要攻击者的浏览器不重起,他访问的仍然是原先的IP地址)。
2.5分布式DNS负载均衡:在众多的负载均衡架构中,基于DNS解析的负载均衡本身就拥有对SYN Flood的免疫力,基于DNS解析的负载均衡能将用户的请求分配到不同IP的服务器主机上,攻击者攻击的永远只是其中一台服务器,一来这样增加了攻击者的成本,二来过多的DNS请求可以帮助我们追查攻击者的真正踪迹(DNS请求不同于SYN攻击,是需要返回数据的,所以很难进行IP伪装)。
2.6防火墙Qos:对于防火墙来说,防御SYN Flood攻击的方法取决于防火墙工作的基本原理,一般说来,防火墙可以工作在TCP层之上或IP层之下,工作在TCP层之上的防火墙称为网关型防火墙,网关型防火墙布局中,客户机与服务器之间并没有真正的TCP连接,客户机与服务器之间的所有数据交换都是通过防火墙代理的,外部的DNS解析也同样指向防火墙,所以如果网站被攻击,真正受到攻击的是防火墙,这种防火墙的优点是稳定性好,抗打击能力强,但是因为所有的TCP报文都需要经过防火墙转发,所以效率比较低由于客户机并不直接与服务器建立连接,在TCP连接没有完成时防火墙不会去向后台的服务器建立新的TCP连接,所以攻击者无法越过防火墙直接攻击后台服务器,只要防火墙本身做的足够强壮,这种架构可以抵抗相当强度的SYN Flood攻击。但是由于防火墙实际建立的TCP连接数为用户连接数的两倍(防火墙两端都需要建立TCP连接),同时又代理了所有的来自客户端的TCP请求和数据传送,在系统访问量较大时,防火墙自身的负荷会比较高,所以这种架构并不能适用于大型网站。(我感觉,对于这样的防火墙架构,使用TCP_STATE攻击估计会相当有效:)
工作在IP层或IP层之下的称为路由型防火墙,其工作原理有所不同:客户机直接与服务器进行TCP连接,防火墙起的是路由器的作用,它截获所有通过的包并进行过滤,通过过滤的包被转发给服务器,外部的DNS解析也直接指向服务器,这种防火墙的优点是效率高,可以适应100Mbps-1Gbps的流量,但是这种防火墙如果配置不当,不仅可以让攻击者越过防火墙直接攻击内部服务器,甚至有可能放大攻击的强度,导致整个系统崩溃。
在这两种基本模型之外,有一种新的防火墙模型,它集中了两种防火墙的优势,这种防火墙的工作原理如下所示:
第一阶段,客户机请求与防火墙建立连接:
第二阶段,防火墙伪装成客户机与后台的服务器建立连接
第三阶段,之后所有从客户机来的TCP报文防火墙都直接转发给后台的服务器
这种结构吸取了上两种防火墙的优点,既能完全控制所有的SYN报文,又不需要对所有的TCP数据报文进行代理,是一种两全其美的方法。近来,国外和国内的一些防火墙厂商开始研究带宽控制技术,如果能真正做到严格控制、分配带宽,就能很大程度上防御绝大多数的SYN攻击。
3.Smurf防范的几种方法
阻塞Smurf攻击的源头:Smurf攻击依靠攻击者的力量使用欺骗性源地址发送echo请求。用户可以使用路由路的访问保证内部网络中发出的所有传输信息都具有合法的源地址,以防止这种攻击。这样可以使欺骗性分组无法找到反弹站点。
阻塞Smurf的反弹站点:用户可以有两种选择以阻塞Smurf攻击的反弹站点。第一种方法可以简单地阻塞所有入站echo请求,这们可以防止这些分组到达自己的网络。如果不能阻塞所有入站echo请求,用户就需要让自己的路由器把网络广播地址映射成为LAN广播地址。制止了这个映射过程,自己的系统就不会再收到这些echo请求。
阻止Smurf平台:为防止系统成为 smurf攻击的平台,要将所有路由器上IP的广播功能都禁止。一般来讲,IP广播功能并不需要。 如果攻击者要成功地利用你成为攻击平台,你的路由器必须要允许信息包以不是从你的内网中产生的源地址离开网络。配置路由器,让它将不是由你的内网中生成的信息包过滤出去,这是有可能做到的。这就是所谓的网络出口过滤器功能。
防止Smurf攻击目标站点:除非用户的ISP愿意提供帮助,否则用户自己很难防止Smurf对自己的WAN接连线路造成的影响。虽然用户可以在自己的网络设备中阻塞这种传输,但对于防止Smurf吞噬所有的WAN带宽已经太晚了。但至少用户可以把Smurf的影响限制在外围设备上。通过使用动态分组过滤技术,或者使用防火墙,用户可以阻止这些分组进入自己的网络。防火墙的状态表很清楚这些攻击会话不是本地网络中发出的(状态表记录中没有最初的echo请求记录),因些它会象对待其它欺骗性攻击行为那样把这样信息丢弃。
4.UDP Flood防范
以前文提到的trinoo为例,分析如下:
在master程序与代理程序的所有通讯中,trinoo都使用了UDP协议。入侵检测软件能够寻找使用UDP协议的数据流(类型17)。
Trinoo master程序的监听端口是27655,攻击者一般借助telnet通过TCP连接到master程序所在计算机。入侵检测软件能够搜索到使用TCP (类型6)并连接到端口27655的数据流。
所有从master程序到代理程序的通讯都包含字符串"l44",并且被引导到代理的UDP 端口27444。入侵检测软件检查到UDP 端口27444的连接,如果有包含字符串l44的信息包被发送过去,那么接受这个信息包的计算机可能就是DDoS代理。
Master和代理之间通讯受到口令的保护,但是口令不是以加密格式发送的,因此它可以被“嗅探”到并被检测出来。使用这个口令以及来自Dave Dittrich的trinot脚本http://staff.washington.edu/dittrich/misc/trinoo.analysis,要准确地验证出trinoo代理的存在是很可能的。