一、包过滤技术
首先要明白:状态检测防火墙的基础就是包过滤技术
包过滤
对主要转发的数据包,获取包头信息,和设定的规则进行比较,根据比较的结果对数据包进行转发或者丢弃
实现包过滤的核心技术是访问控制列表ACL
包过滤的基础是:五元组(源/目IP,源/目端口,和协议)
安全策略
安全策略是按一定规则检查数据流是否可以通过防火墙的基本安全控制机制
规则的本质就是包过滤
安全策略的原理
数据流经过防火墙,查找安全策略判断是否允许下一步操作,防火墙根据安全策略定义的规则对数据包进行处理(转发/丢弃)
安全策略分类
安全策略是基于安全区域的,可以分为三类
域间安全策略、域内安全策略、接口包过滤
二、防火墙的转发原理(重点)
数据包流经防火墙,先判断会话表是否命中,命中会话表则直接转发+刷新会话表,如果没命中会话表,判断是否是首包,如果不是首包直接丢弃,是首包则进行首包流程
首包流程
在状态检测防火墙中,只有首包能进行包过滤
首包流程其实就是前面提到的检查五元组,如果安全策略允许通过则将查到的信息存入到会话表中,并且转发首包,后续的数据包则直接命中刚才创建的会话表条目,不用在进行包过滤而是直接转发并刷新会话表
会话表
会话是状态检测防火墙的基础,每一个通过防火墙的数据流都会在防火墙上建立一个会话表项,以五元组(源目的IP地址、源目的端口、协议号)为Key值,通过建立动态的会话表提供域间转发数据流更高的安全性。
状态检测机制
状态检测机制开启状态下,只有首包通过设备才能建立会话表项,后续包直接匹配会话表项进行转发。
状态检测机制关闭状态下,即使首包没有经过设备,后续包只要通过设备也可以生成会话表项。
对于TCP报文
开启状态检测机制时,首包(SYN报文)建立会话表项。对除SYN报文外的其他报文,如果没有对应会话表项(设备没有收到SYN报文或者会话表项已老化),则予以丢弃,也不会建立会话表项。
关闭状态检测机制时,任何格式的报文在没有对应会话表项的情况下,只要通过各项安全机制的检查,都可以为其建立会话表项。
对于UDP报文
UDP是基于无连接的通信,任何UDP格式的报文在没有对应会话表项的情况下,只要通过各项安全机制的检查,都可以为其建立会话表项。
对于ICMP报文
开启状态检测机制时,没有对应会话的ICMP应答报文将被丢弃。
关闭状态检测机制时,没有对应会话的应答报文以首包形式处理
会话在转发流程中的位置
这个图非常重要, 当防火墙收到报文后,根据五元组信息查询会话表,并根据具体情况进行操作。
多通道协议技术
单通道协议:通信过程中只需占用一个端口的协议。
如:WWW只需占用80端口
多通道协议:通信过程中需占用两个或两个以上端口的协议。
如FTP被动模式下需占用21号端口以及一个随机端口
思考一下多通道协议在过防火墙的情况,首先客户端发一个SYN报文给服务器建立FTP的控制通道,这时候因为存在首包SYN包,所以可以通过防火墙,控制通道也能成功建立起来
但是,当客户端再次向服务器发建立数据通道的时候就出问题了,这时TCP的三次握手已经结束,也就是客户端和服务器已经建立连接了,所以客户端发建立数据通道的数据包不会再发一个SYN,也就是,不是首包了,但是因为数据通道需要占用另一个端口,所以这时候的数据包的源端口已经改变了,在防火墙看来这五元组跟会话表里的都不一样啊,未命中,又不是首包,则会被防火墙丢弃
ASPF
为了解决上述问题,ASPF诞生了
ASPF ( Application Specific Packet Filter) 是一种高级通信过滤,它检查应用层协议信息并且监控连接的应用层协议状态。对于特定应用协议的所有连接,每一个连接状态信息都将被ASPF维护并用于动态的决定数据包是否被允许通过防火墙或丢弃。
在多通道协议中,如FTP,控制通道和数据通道是分开的。数据通道是在控制报文中动态协商出来的,为了避免协商出来的通道不因其他规则的限制(如ACL)而中断,需要临时开启一个通道,Servermap就是为了满足这种应用而设计的一种数据结构。
FTP包含一个预知端口的TCP控制通道和一个动态协商的TCP数据通道,对于一般的包过滤防火墙来说,配置安全策略时无法预知数据通道的端口号,因此无法确定数据通道的入口,这样就无法配置准确的安全策略。ASPF技术则解决了这一问题,它检测IP层之上的应用层报文信息,并动态地根据报文的内容创建和删除临时的servermap表项,以允许相关的报文通过
端口识别对多通道协议的支持
端口识别是把非标准协议端口映射成可识别的应用协议端口
分片缓存
分片缓存功能用来缓存先于首片分片报文到达的后续分片报文,避免分片报文被防火墙丢弃。
三、防火墙的安全策略配置实验
传送门
版权归原作者 白帽Chen_D 所有, 如有侵权,请联系我们删除。