1.状态过滤概述:

使用状态过滤,防火墙不仅检查包头信息,还会检查包的状态:例如它可在外网卡检查包,并决定包是否是对内部发出的请求的响应;

状态过滤可以在传输层应用层执行;

状态过滤使用会话的相关信息以决定包被允许或是拒绝

2.以传输层过滤为例:它使用TCP会话的相关信息来做过滤

TCP会话使用三次握手来建立,三次握手的目的是为了同步连接两端的序列号和确认号并交换关于两个主机如何交换包的一些信息;

  • 客户机给服务器发TCP段,包括客户端选择的序列号,并要求服务器也出示序列号;
  • 服务器发送响应TCP段,包括服务器选择的序列号及对客户端发送的序列号的确认号;
  • 客户机再发送TCP段,包括对服务器序列号做确认的确认号;

这样服务器和客户端之间就完成了序列号的协商,它们会用这些序列号跟踪所有的包,并用于做包顺序调整和包丢失重传;

结束连接时也使用相似的握手过程,这样能够保证所有数据都已经被传送和接收。

防火墙使用这些TCP会话信息以及TCP会话的其他特性来做状态过滤:

  • 例如客户机发出三次握手的第一个包,ISA转发并记录包已发出,当响应到达时防火墙接受包因为它知道这个包是请求的响应,如果有个响应包过来,但是防火墙上没有记录有客户端请求,它会拒绝这个包;
  • 例如防火墙可在客户端初始化连接时设定一个计时器,会话只在指定时间里保持开启;

3.应用层上的状态过滤也类似:防火墙也通过分析应用层的相关信息来做状态过滤:比如客户端发送HTTP GET请求,防火墙可以跟踪请求并允许响应流量,没有相应客户端请求的响应包和数据包都被丢弃;

4.状态过滤的优点

  • 它确保所有防火墙转发的流量都是现有会话的一部分或者能够匹配创建新会话的规则;
  • 它可以实现动态包过滤,可以确保特定端口只在有可用会话时才可用:比如客户端请求服务器返回到一个特定端口,ISA会在会话存续期内监听该端口;

5.状态过滤的缺点

新的***一般都发生在应用层,状态过滤对这种***提供不了足够的保护:比如客户机在合法会话过程中下载的HTTP包中可能会包含恶意代码;

6.ISA与状态过滤/ISA的连接规则

ISA使用连接规则来跟踪会话,无论何时一个包到达ISA,它都会尝试把这个包和一个连接规则关联,可以基于协议,源或目的;

 如果包匹配了一个连接规则,则包被转发;

如果包没有匹配一个连接规则,ISA检查防火墙访问规则以决定是否可以创建一个新的连接规则:如果没有防火墙访问规则阻止连接规则的创建,则ISA创建连接并转发包; 如果有防火墙规则阻止连接规则的创建,则包被丢弃。

7.状态过滤考虑的问题

  • Create connection rule?
  • Is packet part of a connection?

8.总结:

检查包头和包的状态。