博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2330|回复: 2

防火墙的并发连接数

[复制链接]
发表于 2007-5-4 15:31:45 | 显示全部楼层 |阅读模式
防火墙的并发连接数 [/td]
并发连接数是衡量防火墙性能的一个重要指标。在目前市面上常见防火墙设备的说明书中大家可以看到,从低端设备的500、1000个并发连接,一直到高端设备的数万、数十万并发连接,存在着好几个数量级的差异。那么,并发连接数究竟是一个什么概念呢?它的大小会对用户的日常使用产生什么影响呢?要了解并发连接数,首先需要明白一个概念,那就是“会话”。这个“会话”可不是我们平时的谈话,但是可以用平时的谈话来理解,两个人在谈话时,你一句,我一句,一问一答,我们把它称为一次对话,或者叫会话。同样,在我们用电脑工作时,打开的一个窗口或一个Web页面,我们也可以把它叫做一个“会话”,扩展到一个局域网里面,所有用户要通过防火墙上网,要打开很多个窗口或Web页面发(即会话),那么,这个防火墙,所能处理的最大会话数量,就是“并发连接数”。

像路由器的路由表存放路由信息一样,防火墙里也有一个这样的表,我们把它叫做并发连接表,是防火墙用以存放并发连接信息的地方,它可在防火墙系统启动后动态分配进程的内存空间,其大小也就是防火墙所能支持的最大并发连接数。大的并发连接表可以增大防火墙最大并发连接数,允许防火墙支持更多的客户终端。尽管看上去,防火墙等类似产品的并发连接数似乎是越大越好。但是与此同时,过大的并发连接表也会带来一定的负面影响:

1.并发连接数的增大意味着对系统内存资源的消耗

    以每个并发连接表项占用300B计算,1000个并发连接将占用300B×1000×8bit/B≈2.3Mb内存空间,10000个并发连接将占用 23Mb内存空间,100000个并发连接将占用230Mb内存空间,而如果真的试图实现1000000个并发连接的话那么,这个产品就需要提供 2.24Gb内存空间!

2.并发连接数的增大应当充分考虑CPU的处理能力

CPU的主要任务是把网络上的流量从一个网段尽可能快速地转发到另外一个网段上,并且在转发过程中对此流量按照一定的访问控制策略进行许可检查、流量统计和访问审计等操作,这都要求防火墙对并发连接表中的相应表项进行不断的更新读写操作。如果不顾CPU的实际处理能力而贸然增大系统的并发连接表,势必影响防火墙对连接请求的处理延迟,造成某些连接超时,让更多的连接报文被重发,进而导致更多的连接超时,最后形成雪崩效应,致使整个防火墙系统崩溃。

3.物理链路的实际承载能力将严重影响防火墙发挥出其对海量并发连接的处理能力

    虽然目前很多防火墙都提供了10/100/1000Mbps的网络接口,但是,由于防火墙通常都部署在Internet出口处,在客户端PC与目的资源中间的路径上,总是存在着瓶颈链路——该瓶颈链路可能是2Mbps专线,也可能是512Kbps乃至64Kbps的低速链路。这些拥挤的低速链路根本无法承载太多的并发连接,所以即便是防火墙能够支持大规模的并发访问连接,也无法发挥出其原有的性能。

有鉴于此,我们应当根据网络环境的具体情况和个人不同的上网习惯来选择适当规模的并发连接表。因为不同规模的网络会产生大小不同的并发连接,而用户习惯于何种网络服务以及如何使用这些服务,同样也会产生不同的并发连接需求。高并发连接数的防火墙设备通常需要客户投资更多的设备,这是因为并发连接数的增大牵扯到数据结构、CPU、内存、系统总线和网络接口等多方面因素。如何在合理的设备投资和实际上所能提供的性能之间寻找一个黄金平衡点将是用户选择产品的一个重要任务。按照并发连接数来衡量方案的合理性是一个值得推荐的办法。

以每个用户需要10.5个并发连接来计算,一个中小型企业网络(1000个信息点以下,容纳4个C类地址空间)大概需要10.5×1000=10500个并发连接,因此支持20000~30000最大并发连接的防火墙设备便可以满足需求;大型的企事业单位网络(比如信息点数在1000~10000之间)大概会需要105000个并发连接,所以支持100000~120000最大并发连接的防火墙就可以满足企业的实际需要; 而对于大型电信运营商和ISP来说,电信级的千兆防火墙(支持120000~200000个并发连接)则是恰当的选择。为较低需求而采用高端的防火墙设备将造成用户投资的浪费,同样为较高的客户需求而采用低端设备将无法达到预计的性能指标。利用网络整体上的并发连接需求来选择适当的防火墙产品可以帮助用户快速、准确的定位所需要的产品,避免对单纯某一参数“愈大愈好”的盲目追求,缩短设计施工周期,节省企业的开支。从而为企业实施最合理的安全保护方案。



发表于 2007-5-23 17:01:20 | 显示全部楼层
顶 !!
 楼主| 发表于 2007-6-4 11:58:24 | 显示全部楼层
状态检测工作机制  



一、状态监测应该如何工作




无论何时,一个防火墙接收到一个初始化TCP连接的SYN包,这个带有SYN的数据包被防火墙的规则库检查。该包在规则库里依次序比较。如果在检查了所有的规则后,该包都没有被接受,那么拒绝该次连接。一个RST的数据包发送到远端的机器。如果该包被接受,那么本次会话被记录到状态监测表里。该表是位于内核模式中的。随后的数据包(没有带有一个SYN标志)就和该状态监测表的内容进行比较。如果会话是在状态表内,而且该数据包是会话的一部分,该数据包被接受。如果不是会话的一部分,该数据包被丢弃。这种方式提高了系统的性能,因为每一个数据包不是和规则库比较,而是和状态监测表比较。只有在SYN的数据包到来时才和规则库比较。所有的数据包与状态检测表的比较都在内核模式下进行所以应该很快。
二、状态监测表建立?
那么初始化一个连接时使用ACK行不行?它又会出现什么问题呢?



如果防火墙的状态检测表使用ACK来建立会话,将会是不正确的。

如果一个包不在状态检测表中时,那么该包使用规则库来检查,而不考虑它是否是SYN、ACK或其他的什么包。如果规则库通过了这个数据包,本次会话被添加状态检测表中。所有后续的包都会和状态检测表比较而被通过。因为在状态监测表中有入口,后续的数据包就没有进行规则检查。而且我们在做状态监测表项时,也需要考虑时间溢出的问题。使用这种方法,一些简单的DOS攻击将会非常有效地摧毁防火墙系统。




那么状态检测表建立应该怎么进行呢?




首先,对于一个会话我们使用什么来区分。从最简单的角度出发,我们可以使用源地址、目的地址和端口号来区分是否是一个会话。

当通过使用一个SYN包来建立一个会话时,防火墙先将这个数据包和规则库进行比较。如果通过了这个数据连接请求,它被添加到状态检测表里。这时需要设置一个时间溢出值,参考CHECK-POINT FW-1的时间值,将其值设定为60秒。然后防火墙期待一个返回的确认连接的数据包,当接收到如此的包的时候,防火墙将连接的时间溢出值设定为3600秒。对于返回的连接请求的数据包的类型需要做出判断,已确认其含有SYN/ACK标志。(注:对于时间溢出值,应该可以由用户自行设定。)
在进行状态监测时,对于一个会话的确认可以只通过使用源地址、目的地址和端口号来区分,在性能设计上如果能满足要求,也应该考虑对于TCP连接的序列号的维护,虽然这样可能需要消耗比较多的资源.

三、连接的关闭
在连接被通讯双方关闭后,状态监测表中的连接应该被维护一段时间。 欢迎访问易特网络学院

下面的处理方法可以作为在连接关闭后状态检测行为的参考。

当状态监测模块监测到一个FIN或一个RST包的时候,减少时间溢出值从我们缺省设定的值3600秒减少到50秒。如果在这个周期内没有数据包交换,这个状态检测表项将会被删除,如果有数据包交换,这个周期会被重新设置到50秒。如果继续通讯,这个连接状态会被继续地以50秒的周期维持下去。这种设计方式可以避免一些DOS攻击,例如,一些人有意地发送一些FIN或RST包来试图阻断这些连接。

四、UDP的连接维护
虽然UDP连接是无状态的,但是仍然可以用类似的方法来维护这些连接。当一个完成规则检查的数据包通过防火墙时,这次会话被添加到状态检测表内,并设置一个时间溢出值,任何一个在这个时间值内返回的包都会被允许通过,当然它的SRC/DST的IP地址和SRC/DST的端口号是必须匹配的。




五、ICMP的状态检测问题

对于一些ICMP包的分析,在许多防火墙系统中都是做的很不够的,在对做状态检测时是需要对ICMP的内容进行分析的。对于什么样的ICMP可以发出和放入在状态监测模块中如何确定是关键。



六、IP分帧的问题




在路由时,如果IP数据包的内容大于MTU的大小,数据包将会被分帧,被分成几个更小的IP数据包。虽然分帧没有直接地应用于状态检测表,但是它仍然是非常重要的。 欢迎访问易特网络学院

那么是否在截获数据包后,发向系统的TCP/IP协议站之前,对收到的分帧后的数据包进行组装呢?

在大多数情况下,作为一个状态检测防火墙,对于一些类型的分帧的IP数据包进行重组是需要的。防火墙都监测TCP的头部信息作为对一次会话的监测。然而,在所有被分帧后的IP数据包中只有第一个分帧包含了完整的信息,其他分帧只有IP地址信息。如果一些分帧没有被重组,那么状态监测模块将没有办法识别后续的分帧的数据包是否属于一个会话的一部分。通过重组,防火墙的状态检测模块就能识别整个的被分帧的数据包。



然而,如果是重组完成后才对数据包进行检查,那么防火墙对于使用分帧攻击(使用不完整的或者是非法的)就表现出很大的弱点。因为它们可能根本不会被重组完成。当然它们也不会被日志记录下来。防火墙系统很快就会由于试图继续重组这些根本不可能完成的数据包,而将系统的资源耗尽。那么对于如果需要实现分帧重组,那就必须采用十分好的重组方式。对于具体应用来说,过小的分帧包应该被丢弃。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-9-17 03:40 , Processed in 0.090571 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表