状态检测工作机制.doc

上传人:鲁** 文档编号:559228112 上传时间:2023-03-22 格式:DOC 页数:4 大小:32.51KB
返回 下载 相关 举报
状态检测工作机制.doc_第1页
第1页 / 共4页
状态检测工作机制.doc_第2页
第2页 / 共4页
状态检测工作机制.doc_第3页
第3页 / 共4页
状态检测工作机制.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《状态检测工作机制.doc》由会员分享,可在线阅读,更多相关《状态检测工作机制.doc(4页珍藏版)》请在金锄头文库上搜索。

1、状态检测工作机制创建时间:2001-04-27文章属性:原创文章来源:http:/www.xfocus.org文章提交:tangram (tang002_at_)一、状态监测应该如何工作无论何时,一个防火墙接收到一个初始化TCP连接的SYN包,这个带有SYN的数据包被防火墙的规则库检查。该包在规则库里依次序比较。如果在检查了所有的规则后,该包都没有被接受,那么拒绝该次连接。一个RST的数据包发送到远端的机器。如果该包被接受,那么本次会话被记录到状态监测表里。该表是位于内核模式中的。随后的数据包(没有带有一个SYN标志)就和该状态监测表的内容进行比较。如果会话是在状态表内,而且该数据包是会话的一

2、部分,该数据包被接受。如果不是会话的一部分,该数据包被丢弃。这种方式提高了系统的性能,因为每一个数据包不是和规则库比较,而是和状态监测表比较。只有在SYN的数据包到来时才和规则库比较。所有的数据包与状态检测表的比较都在内核模式下进行所以应该很快。二、状态监测表建立?那么初始化一个连接时使用ACK行不行?它又会出现什么问题呢?如果防火墙的状态检测表使用ACK来建立会话,将会是不正确的。如果一个包不在状态检测表中时,那么该包使用规则库来检查,而不考虑它是否是SYN、ACK或其他的什么包。如果规则库通过了这个数据包,本次会话被添加状态检测表中。所有后续的包都会和状态检测表比较而被通过。因为在状态监测

3、表中有入口,后续的数据包就没有进行规则检查。而且我们在做状态监测表项时,也需要考虑时间溢出的问题。使用这种方法,一些简单的DOS攻击将会非常有效地摧毁防火墙系统。那么状态检测表建立应该怎么进行呢?首先,对于一个会话我们使用什么来区分。从最简单的角度出发,我们可以使用源地址、目的地址和端口号来区分是否是一个会话。当通过使用一个SYN包来建立一个会话时,防火墙先将这个数据包和规则库进行比较。如果通过了这个数据连接请求,它被添加到状态检测表里。这时需要设置一个时间溢出值,参考CHECK-POINT FW-1的时间值,将其值设定为60秒。然后防火墙期待一个返回的确认连接的数据包,当接收到如此的包的时候

4、,防火墙将连接的时间溢出值设定为3600秒。对于返回的连接请求的数据包的类型需要做出判断,已确认其含有SYN/ACK标志。(注:对于时间溢出值,应该可以由用户自行设定。)在进行状态监测时,对于一个会话的确认可以只通过使用源地址、目的地址和端口号来区分,在性能设计上如果能满足要求,也应该考虑对于TCP连接的序列号的维护,虽然这样可能需要消耗比较多的资源三、连接的关闭在连接被通讯双方关闭后,状态监测表中的连接应该被维护一段时间。下面的处理方法可以作为在连接关闭后状态检测行为的参考。当状态监测模块监测到一个FIN或一个RST包的时候,减少时间溢出值从我们缺省设定的值3600秒减少到50秒。如果在这个

5、周期内没有数据包交换,这个状态检测表项将会被删除,如果有数据包交换,这个周期会被重新设置到50秒。如果继续通讯,这个连接状态会被继续地以50秒的周期维持下去。这种设计方式可以避免一些DOS攻击,例如,一些人有意地发送一些FIN或RST包来试图阻断这些连接。四、UDP的连接维护虽然UDP连接是无状态的,但是仍然可以用类似的方法来维护这些连接。当一个完成规则检查的数据包通过防火墙时,这次会话被添加到状态检测表内,并设置一个时间溢出值,任何一个在这个时间值内返回的包都会被允许通过,当然它的SRC/DST的IP地址和SRC/DST的端口号是必须匹配的。五、ICMP的状态检测问题对于一些ICMP包的分析

6、,在许多防火墙系统中都是做的很不够的,在对做状态检测时是需要对ICMP的内容进行分析的。对于什么样的ICMP可以发出和放入在状态监测模块中如何确定是关键。下面只是列出了什么样的ICMP包是安全的,可以作为对状态检测模块ICMP支持的参考。#define ICMP_ECHOREPLY0/* Echo Reply*/Needed if you want to allow ping, so you can allow that for trusted peersoutgoing and incoming for all to allow them to ping the internet#defin

7、e ICMP_DEST_UNREACH3/* Destination Unreachable*/Some Sub Types are needed in and out, see below#define ICMP_SOURCE_QUENCH4/* Source Quench*/Allow it outbound anyway, inbound is less likely to be a problem, unless youare doing some streaming or multicast feeding to the internet.#define ICMP_REDIRECT5

8、/* Redirect (change route)*/block!#define ICMP_ECHO8/* Echo Request*/you might allow it incoming for trusted addresses (note some NICs willrequire you to make your primary DNS Server pingable!)#define ICMP_TIME_EXCEEDED11/* Time Exceeded*/helpfull if you allow it incoming, could allow exploring your

9、 network if youallow it outbound.#define ICMP_PARAMETERPROB12/* Parameter Problem*/helpfull if you allow it incoming, could allow exploring your network if youallow it outbound.#define ICMP_TIMESTAMP13/* Timestamp Request*/#define ICMP_TIMESTAMPREPLY14/* Timestamp Reply*/#define ICMP_INFO_REQUEST15/

10、* Information Request*/#define ICMP_INFO_REPLY16/* Information Reply*/#define ICMP_ADDRESS17/* Address Mask Request*/#define ICMP_ADDRESSREPLY18/* Address Mask Reply*/Block those on the external interface/* Codes for UNREACH. */#define ICMP_NET_UNREACH0/* Network Unreachable*/ignored, so block it#de

11、fine ICMP_HOST_UNREACH1/* Host Unreachable*/allow it at least inbound, best would be if you can do that stateful#define ICMP_PROT_UNREACH2/* Protocol Unreachable*/you can block that#define ICMP_PORT_UNREACH3/* Port Unreachable*/you should allow that at least inbound. Be aware that some filter ruless

12、hould send PORT_UNREACH on connection request (at least 137,139 and auth),so make sure not to block those ICMP packetes which are generated by yourreject rule.#define ICMP_FRAG_NEEDED4/* Fragmentation Needed/DF set*/Allow it in, and possible out if you have different MTUs inside yournetwork.#define

13、ICMP_SR_FAILED5/* Source Route failed*/Not strictly needed. Nobody should asume SR works anywhere, anyway.#define ICMP_NET_UNKNOWN6block, its ignored#define ICMP_HOST_UNKNOWN7allow it at least inbound.#define ICMP_HOST_ISOLATED8block.#define ICMP_NET_ANO9#define ICMP_HOST_ANO10those are the new type

14、s returned by ipfilters. You may let them pass in andout.#define ICMP_NET_UNR_TOS11#define ICMP_HOST_UNR_TOS12block#define ICMP_PKT_FILTERED13/* Packet filtered */block, depricated#define ICMP_PREC_VIOLATION14/* Precedence violation */#define ICMP_PREC_CUTOFF15/* Precedence cut off */block.六、IP分帧的问题在路由时,如果IP数据包的内容大于MTU的大小,数据包将会被分帧,被分成几个更小的IP数据包。虽然分帧没有直接地应用于状态检测表,但是它仍然是非常重要的。那么是否在截获数据包后,发向系统的TCP/IP协议站之前,对收到的分帧后的数据包进行组装呢?在

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号