防火墙以会话的方式保持地址、端口、方向和访问状况信息。多少条会话记录是太多了?多少条会话记录又是太少了呢?你的防火墙中太多或太少的状态信息缓存会导致什么结果呢?防火墙应该保持状态信息多长时间呢?
在松山培训学院, 我们看到为数不少的防火墙对静止会话的状态信息仅仅保持5分钟,然后穿过防火墙的系统的重要连接就中断了。我们也曾看到有的防火墙对状态信息保持时间太长(*小时或更长),以至于通过防火墙的时延太长而影响性能。
为此,我们看看为什么有的防火墙对状态信息保持很长时间而有的防火墙仅保留几分钟呢?
问题*:静止的TCP会话连接被终止
如果你的web服务器通过*个防火墙联接到你的数据库服务器,当这个联接静止了5分钟后,防火墙就会中断这个TCP联接。因此你必须重新建立*个新的联接或者你的应用将会在5分钟的联接静止止后立刻中断。
为了解决这个问题,许多安全专家只是简单地增加等待时间,即从默认的5分钟增加到更长来保持状态信息。
问题二:增加的状态缓存导致防火墙时延增加
*旦您增加了状态信息缓存,所需查找的会话量太高,数据包通过防火墙的时延加大。
这里有*个不大为大家所知的技巧。RFC默认的TCP会话保持时间是两小时,这意味着*旦*个TCP会话在两个小时内没有活动,这个TCP会话的*端会发出*个TCP-ACK,另*端则会响应*个ACK,以保持这个会话。当防火墙有短期状态信息时,TCP会话会在两小时默认保持时间前被断开。
解决方法
为解决防火墙的高时延和静态TCP会话的连接中断,有如下方法:建议您将所有的计算机的TCP保持时间都从两小时改到三分钟。听起来好像工作量太大了?您要修改您所有的计算机 - 当然不是!我们的方法是只要修改服务器的TCP保持时间。这样您只要修改服务器,而不是所有的计算机终端。
说明:从FLUKE网络的协议专家软件中可以看到TCP 保持时间是 120 分钟
改变了服务器的TCP保持时间后,服务器会发起*个 ACK – ACK 交换,这将改变这个会话的激活状态保持时间,从而减少状态信息缓存,并将防火墙时延也降低到合理的范围。