© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
学习 网络安全技术与应用
名 丁 已 八 口
什么是状态检测防火墙
北京 浪涛
讯 公司推出的新一代防火墙核心架构一状态
监测防火墙 , 目前已经成为防火墙的
。 这种防火墙在包过
滤防火墙的架构之上进行了改进 , 它摒弃了包过滤防火墙仅考
查进出网络的数据包 , 而不关心数据包状态的缺点 , 在防火墙
的核心部分建立状态监测
, 并将进出网络的数据当成一个个
的会话 , 利用状态表跟踪每一个会话状态 。 状态监测对每一个
包的检查不仅根据规则表 , 更考虑了数据包是否符合会话所处
的状态 , 因此提供了完整的对传输层的控制能力 。
这种防火墙具有非常好的安全特性 , 它使用了一个在网
关上执行网络安全策略的软件模块 , 称之为监测引擎 。 监测引
擎在不影响网络正常运行的前提下 , 采用抽取有关数据的方法
对网络通信的各层实施监测 , 抽取状态信息 , 并动态地保存起
来形成状态检测表作为以后执行安全策略的参考 。 监测引擎支
持多种
和应用程序 , 并可以很容易地实现应用和服务的扩
充 。 当用户访问请求到达网关的操作系统前 , 状态监视器要抽
取有关数据进行分析 , 结合网络配置和安全规定做出接纳
、
拒
绝
、
身份认证
、
报警或给该通信加密等处理动作 。 一旦某个访
问违反安全规定 , 就会拒绝该访问 , 并报告有关状态作 日志记
录 。状态监测的另一个优点是它会监测无连接状态的远程过程
调用 尔 和用户数据报 之类的端口信息 , 而包过滤
和应用网关防火墙都不支持此类应用 。
的角度出发 , 我们可以使用源地址
、
目的地址和端 口号来区
分是否是一个会话 。 当通过使用一个 包来建立一个会话
时 , 防火墙先将这个数据包和规则库进行比较 。 如果通过了
这个数据连接请求 , 它被添加到状态检测表里 。 这时需要设
置一个时间溢出值 , 一般将其值设定为 秒 。 然后防火墙期
待一个返回的确认连接的数据包 , 当接收到如此的包的时候 ,
防火墙将连接的时间溢出值设定为 秒 。 对于返回的连接
请求的数据包的类型需要做出判断 , 已确认其含有
标志 。 在进行状态监测时 , 对于一个会话的确认可以只
通过使用源地址
、
目的地址和端 口号来区分 , 在性能设计上
如果能满足要求 , 也应该考虑对于 连接的序列号的维
护 , 虽然这样可能需要消耗比较多的资源 。
三 、 连接会话的关闭
一 、 状态监测如何工作
当一个数据包经过防火墙时 , 防火墙接收到一个初始
化 的连接 包 同步序列值 。 这个带有 的数
据包被防火墙的规则库检查 。 该包在规则库里依次序比较 。
如果在检查了所有的规则后 , 该包都没有被接受 , 那么拒绝
此次连接 。 如果该包被接受 , 那么本次会话被记录到状态监
测表里 。 该表是位于内核模式中的 。 随后的数据包就和该状
态监测表的内容进行比较 。 如果会话是在状态表内 , 而且该
数据包是会话的一部分 , 该数据包被接受 。 如果不是会话的
一部分 , 该数据包被丢弃 。 这种方式提高了系统的性能 , 因
为每一个数据包不是和规则库比较 , 而是和状态监测表比较 。
只有在 的数据包到来时才和规则库比较 。 所有的数据包
与状态检测表的比较都在内核模式下进行所以应该很快 。
在连接被通讯双方关闭后 , 状态监测表中的连接应该
被维护一段时间 。
下面的处理方法可以作为在连接关闭后状态检测行为
的参考 。 当状态监测模块监测到一个 终止连接 或
一个 连接复位 包的时候 , 则减少时间溢出值 , 从
我们缺省设定的值 秒减少到 秒 。 如果在这个周期内
没有数据包交换 , 这个状态检测表项将会被删除 , 如果有
数据包交换 , 这个周期会被重新设置到 秒 。 如果继续通
讯 , 这个连接状态会被继续地以 秒的周期维持下去 。 这
种设计方式可以避免一些 攻击 , 例如 , 一些人有意地
发送一些 或 包来试图阻断这些连接 。
四 、 的连接维护
二 、 如何建立状态监测表
虽然 是无连接服务 , 但是仍然可以用类似的方法
来维护这些连接 。 当一个完成规则检查的数据包通过防火墙
时 , 这次会话被添加到状态检测表内 , 并设置一个时间溢出
值 , 任何一个数据包在这个时间溢出值内返回都会被允许通
过 , 当然它的 源 目的 的工 地址和
源 目的 的端口号是必须匹配的 。
部分状态检测型防火墙还支持多种用户认证方式 , 提供
了应用级的安全认证手段 , 增加了某些应用的代理功能 , 使
得安全控制力度更为细致 。
首先 , 对于一个会话我们使用什么来区分 。 从最简单
习亚亘