教你将TCP SYN攻击降到最弱(如何防范SYN攻击)

[复制链接]
查看2241 | 回复0 | 2011-7-29 21:05:57 | 显示全部楼层 |阅读模式
TCP是网络连接过程中主机发送的第一个包,其非常小,但是又非常的关键。SYN攻击就是大量利用这些包。由于这些包往往无法有效进行处理,但是主机或者网络设备无法有效辨别。他们往往需要对每个这种类型的包花费几秒钟时间进行尝试,然后才会放弃提供正常响应。一个包几秒钟时间,但是,若包多的话,就会企业网络带来毁灭性的打击。
从本质上来说,SYN攻击是dos攻击的一种,他主要利用TCP协议缺陷,通过发送大量的半连接请求(TCP数据包),耗费主机或者网络设备的CPU与内存资源。SYN攻击其范围比较广,不仅可以对普通的主机、服务器产生不利影响,而且也会影响到网络中间设备,如路由器、交换机等等。通常情况下,只要网络设备或者主机采用了TCP协议,就可能成为SYN攻击的受害者。
IP欺骗与SYN攻击是一对好搭档。配合IP欺骗,SYN攻击往往可以取得很好的效果。如某个攻击者可以在利用工具在几秒钟时间内,伪造大量的不存在的IP地质,向某个目标对象不断发送数据包,服务器回复确认包,并等待客户的确认。,由于源地址是虚假的,不存在的地址,服务器就会不断的重法确认直到超时为止。这些伪造的包将长时间占用未连接队列,正常的连接请求反而无法响应,被丢弃。从而可能就会导致网络拥塞。
既然SYN攻击这么严重,那么能否有效杜绝SYN攻击呢?可惜的是,到现在为止,还没有哪个专家说,可以彻底的杜绝SYN攻击。因为这是TCP协议的先天性缺陷,难以治疗。我们网络管理员现在可以做的就是如何想方设法,限制其的不利影响。如笔者现在最常用的措施,就是通过各种手段,让其不影响企业的关键设备,如服务器、路由器等等。
一、通过防火墙代理限制其对服务器的影响
通常情况下,出于安全的考虑,我们会把服务器放在防火墙的一侧。在建立TCP连接时,通过防火墙实现代理。TCP代理相当于客户端和目的服务器间的中间服务器。当某个客户端要访问服务器的资源时,这个客户端不是直接连接到服务器,而是先连接到防火墙这个代理服务器上,然后这个代理服务器再替客户端去访问服务器。代理服务器把从服务器中反馈回来的信息转发给客户端。所以,从某个角度上来讲,防火墙代理服务器对于服务器来说,是一个客户端,但是,对于真正的客户端来说,又是一合格服务器。防火墙可以检查传入的TCP连接请求,然后执行TCP代理的功能。如果防火墙判断传入的连接请求时伪造的话,则防火墙就可以采取一定的措施来防止它对防火墙一侧服务器的影响。
如笔者企业现在有一个ERP应用服务,其为全国各地的销售办事处提供数据上的支持。若这个服务器瘫痪的话,则全国各地的销售业务都会受到不同程度的影响。如商品的调拨等等将无法完成。由于存在大量的网外用户,笔者很难保证全国各地的用户主机都是安全的。本着安全至上的原则,就在ERP应用服务器与互联网之间设置了防火墙,并启用了防火墙代理功能,来限制SYN的攻击,示意图如下:
1、当互联网上的某个客户端需要访问ERP服务器时,会先发起一个TCP连接。此时,客户端不是直接与ERP服务器进行通信,而是跟防火墙代理服务器进行通信。如此的话,就可以隐藏ERP服务器的真实地址,从而防止外部不良人员对ERP服务器进行攻击。
2、防火墙代理接收到客户端的SYN连接请求时,就会把这个请求转发给内部的ERP服务器。此时,防火墙代理就充当了客户端的角色。当防火墙代理取得用户想要的信息之后,就会把这个信息反馈给客户端。此时,防火墙代理充当了ERP服务器的角色。
可见有了防火墙代理,客户端与ERP服务器之间就不会直接进行通信。不过光凭如此设置,还是不能够有效避免SYN攻击。还需要进行另外的一些设置。
如笔者在企业中,是通过防火墙的TCP定时器参数来过滤伪造的TCP连接请求。如果防火墙代理遇到伪造的连接请求,则防火墙通常也利用参数来设置半开放连接中的主动超时时间;防火墙代理也会采用参数来设置特殊连接和TCP连接请求传入速率的指标。不过在更改这个参数的时候,需要注意,要根据企业网络的实际情况进行设置。如果调整的比较短的话,则如果客户采用的是慢速链路,则他们的连接就可能会超时。
如可以利用如下的命令来达到限制SYN攻击的目的。
Ip tcp intercept access-list-number
Ip tcp intercept mode watch
这两条命令主要起到如下作用:
一是记录最近一分钟内,有多少会话发生。通常情况下,它包括有效的会话与无效的会话。也就是说,如果是伪造请求产生的会话,也会在这个记录中体现出来。
二是有多少未完成的会话。通常情况下,这个未完成的会话就可能是伪造请求所产生的会话。当企业网络发生拥塞时,查看这个未完成的会话时,往往可以取得比较有用的信息。网络管理员可以凭借这个信息判断是否是由于SYN攻击所造成的网络拥塞,了解网络性能下降的原因。
三是最终的确认等待了多久。我们都知道,SYN攻击其主要的手段就是通过伪造地址,让服务器疲与去跟源地址进行确认。若源地址迟迟没有回应的话,则服务器或者网络设备会不断的重发确认信息,直到超过一个延迟的时间。所以,通过“最终的确认等待了多久”这个参数,也可以发现网络中是否存在着SYN攻击。
二、调整TCP/IP协议,修改TCP协议实现
第一种限制SYN攻击的方式要依赖于思科等特定的产品,如防火墙、路由器等等。除此之外,我们还可以通过调整TCP/IP协议栈,修改TCP协议实现来达到防止SYN攻击。如可以通过增加最大半连接和缩短超时时间、SYN Cookies技术等来实现我们需要的目标。不过这个调整技术难度比较大。同时,调整TCP/Ip协议栈,会使得某些应用功能受到影响。所以,管理员在做类似的修改之前,要进行充分了解,并进行详细、充分的测试才能够进行部署。
如在微软的操作系统中,提供了一种SynAttackProtec的机制。这也是通过调整TCP/IP协议栈的方式来限制SYN的攻击。他主要是通过关闭某些Socket选项,同时增加额外的连接指示和减少超时时间,让系统恩能够处理更多的SYN连接,以达到防范SYN攻击的目的。在通常情况下,系统不会启用这个保护机制。需要网络管理员进行手工的配置。
不过笔者一般不建议采用这种方式。因为它会对现有的应用服务产生比较大的影响,会对现有的网络应用产生不利的影响,如降低网络、服务器的稳定性等等。所以笔者还是建议通过专门的网络设备,如路由器或者防火墙来防范SYN攻击。
不过要注意一点,就是无论采用上面的哪一种实现方式,要想彻底的杜绝SYN攻击是一件不可能完成的任务。除非完全更改TCP实现方式。不过到目前为止,这是不可能的。所以网络管理员应该对此有一个清醒的认识。任何想试图杜绝SYN攻击的尝试都将无功而返。我们现在所能够做的,就是想尽一切可行的方法,把SYN攻击所造成的不利影响控制在一个比较小的范围之内;或者说,保护一些关键应用与设备,减少SYN攻击对其造成的不利影响。
发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则