什么是SPI/Keep State?

2. "SPI" / "Keep State" 介绍

数据包状态检测技术是上世纪九十年代开始发展起来的一个新技术,用来克服静态数据包过滤技术的局限性。下面我们来介绍静态数据包过滤技术的局限性。假设我们有以下的网络环境和IP Filter规则。

连接规则:

1. 只允许内部IP1 的TCP 1433端口访问任何IP的TCP 80端口。
2. 允许任何IP的TCP 80端口连接内部网罗IP1的TCP 1433端口。
3. 阻止其他的数据包通过。

 



第一条规则表示允许内部IP1使用TCP 1433端口连接外部任意IP的TCP 80端口。同时,第二条规则用来限制只有外部的Web站点可以访问内部的MSSQL服务器,这种情况下,该规则将阻止外部黑客访问内部MSSQL服务器。 但是,黑客可以将自己的源端口改为TCP 80端口,这样就可以直接访问内部MSSQL服务器。

另外还有很多其他的应用程序会造成诸如此类的漏洞,比如FTP等。进一步讲,黑客可以利用静态过滤防火墙的此类弱点,去构造一些特殊的数据包,这些数据包 可能会是一个完整程序的分段,这些分段可以很容易的通过防火墙的检测,但是,在接受完所有分段之后,这些分段会重新组装起来,你会发现这个完整的程序是非 法或是有害的。因此,为了克服诸如此类的问题,发展了数据包状态检测技术,有时候我们也称之为动态数据包过滤技术。

数据包状态检测技术可以简单的理解如下:

该技术只检查通过该防火墙的连接的第一个数据包,一旦连接建立,该技术会记录此连接的状态。每当后续数据包到达防火墙,首先会检查状态表,如果该数据包符合状态表中某条状态的信息,则允许通过防火墙。

这里我们需要重新设定刚才例子中的防火墙规则:

1.   只允许内部IP1 TCP 1433端口访问任何IP的TCP 80端口,同时设定Keep State。

2.    阻止所有外部对内部IP1 TCP 1433端口的访问。

这 种情况下,只有被内部IP1访问过的外部Web站点,因为在状态表里有该连接的状态记录,所以才可以访问内部MSSQL服务器。而黑客则不可能通过改变端 口来连接内部MSSQL服务器。同时如果有大批文件需要传送,因为防火墙只需要检查第一个数据包,后续数据包只需要检查状态表,可以极大的提高数据通过防 火墙的速度。

Vigor的路由器采用了数据包状态检测技术,在Web Configurator中,我们称之为“keep State”而有些生产商称之为“简化SPI”。

已读次数:3318