防火墙分类:
1.包过滤防火墙
2.代理型防火墙
3.状态检测防火墙
ASPF技术背景
防火墙和传统网络设备路由器有一个很大的区别就是:路由器设备只关注网络层的内容,根据IP地址查找出接口完成报文的正确转发,对于应用层的内容路由器是不关心的,完成异构网的互联互通是路由器本质的一个功能。由于IP协议本身的特点,因此非常容易在应用层携带很多有害于网络的内容,造成网络的安全隐患
防火墙的主要功能是保证网络的安全,防火墙除了关注网络层的安全,同时还关注应用层的安全,关注应用层安全可以实现更智能的安全防范保证网络的安全,更准确的识别非法的访问。在提供应用层的安全同时,高效、准确等方面也是防火墙产品很重要的一个方面,因此对于业务支持的特性是防火墙很重要的一个方面
ASPF概念:
ASPF ( Application Specific Packet Filter) 是一种高级通信过滤,它检查应用层协议信息并且监控连接的应用层协议状态。对于特定应用协议的所有连接,每一个连接状态信息都将被ASPF维护并用于动态的决定数据包是否被允许通过防火墙或丢弃
ASPF不仅能够根据连接的状态对报文进行过滤还能够对应用层报文的内容加以检测,以对一部分***加以检测和防范
状态检测技术在网络层实现所有需要的防火墙能力,它既有包过滤机制的速度和灵活,也有代理型防火墙安全的优点
ACL VS ASPF
比较内容 |
ACL |
ASPF |
原理 |
对每个IP数据包按照用户所定义的策略规则(访问控制列表,ACL)进行过滤。包过滤不管会话的状态,也不分析数据 |
对于每一个应用层协议建立会话信息以及状态信息,实时检测数据流的状态信息,并动态的根据状态信息决定数据包的动作 |
配置 |
较繁琐 |
简单 |
设计实现 |
简单 |
复杂,必须支持尽可能多的应用层协议,以保证用户的正常使用。并且需要实时增加协议的支持 |
对系统性能影响 |
速度快,但策略过多会导致性能急剧下降 |
需要进行状态检测等复杂处理,效率相对于ACL低,并且消耗部分系统资源 |
对多通道协议的支持 |
不支持 |
非常适用于需要动态建立连接的应用协议 |
安全性 |
低,无法检测某些来自于应用层的***行为 |
高,能够根据连接的状态及应用层报文内容进行过滤,有效防范*** |
ASPF基本概念:
会话表(Session)
在状态防火墙中会动态维护着一个Session表项。Session表标识一个“完整连接”,一个完整的连接由5元组构成(源地址、目的地址、源端口、目的端口、协议号),Session表中记录了连接的状态信息,可以用来监控会话的状态跃迁,不符合状态跃迁的报文会被丢弃
单通道协议可以使用Session表来检查连接状态的变化,但对连接未完全建立起来的多通道协议来说,还不够,因此引入了Servermap表来处理多通道连接的状态检查
多通道协议
某个应用协议通话时需要建立两个以上的会话(通道),其中有一个控制通道,其他的通道根据控制通道中双方协商的信息动态创建,一般称为数据通道或子通道
多通道协议在防火墙以及NAT设备的应用中需要特殊处理,因为数据通道的端口是不固定的(协商出来的),其报文方向也是不固定的
多通道协议主要包括:数据传输协议(FTP、TFTP等)、 音视频相关(H.323协议族、SIP、MGCP等)、聊天通讯软件(MSN,QQ,ICQ等)
Servermap表项
在多通道协议中,如FTP,控制通道和数据通道是分开的。数据通道是在控制报文中动态协商出来的,为了避免协商出来的通道不因其他规则的限制(如ACL)而中断,需要临时开启一个通道,而Servermap就是为了满足这种应用而设计的一种数据结构
Servermap表是标识一个“不完整连接”的。不完整连接的含义是:在防火墙上建立表项的时候,五元组不能完全知道,只能知道目的地址、目的端口、协议号三元组
Servermap是一个“临时通道”,利用该“临时通道”,外部连接可以进入内部网络
NAT ALG(Application Level Gateway,应用级网关)
对报文中数据部分的IP地址解析并进行NAT转换,如FTP的数据报文
端口映射PAM(Port to Application Mapping)
?是解决端口和服务类型映射关系的一个配置功能,对于使用非知名端口提供知名服务时的业务识别非常有用。例如ftp的服务端口是21,如果有些用户将1021端口作为ftp的服务端口,可以通过Port Mapping来绑定该对应关系,这样1021端口的服务就被自动识别成ftp服务了。此时防火墙显示的映射关系如下:
SERVICE PORT ACL TYPE
-------------------------------------------------
ftp 21 system defined
smtp 25 system defined
http 80 system defined
rtsp 554 system defined
h323 1720 system defined
ftp 1021 2010 user defined
?配置端口映射时,必须通过ACL指定主机范围
?不能删除或修改系统定义的端口号,但可以重新定义
?对于同一协议,可以多次使用命令配置多个识别端口
?对于同一端口,可以配置识别不同的协议,但需要通过ACL来为不同的协议定义不同的主机范围
ASPF处理流程:
报文转发
?对于单通道协议,首包查ACL,通过后建立session表,后续包命中session表不再查ACL
?对于多通道协议,采用了5元组的session表+3元组的servermap表项的结合方式实现,先建立控制通道连接及对应的session表,并建立servermap表,使得数据通道的首包,命中servermap表,不再查ACL,首包通过后建立数据通道的session表,后续包就通过该session表进行转发,不再查ACL或者servermap表
?防火墙对于应用协议采用一种通用的模式,根据应用协议注册不同的编解码函数,即ASPF处理函数。ASPF功能的使能开关为域间或者域上配置的detect命令,只要ASPF功能使能开关打开,防火墙提取报文的对应信息查找servermap表,确定报文的应用协议类型,以调用各自的编解码函数,进行状态检测及NAT ALG的处理
?对于多通道协议,当数据通道建立了之后, servermap表项就删除了,后续报文基于session表转发。这样就避免了产生一个永久的通道,从而确保未经授权的报文不能随便透过防火墙
ASPF提供对以下应用协议的支持
?FTP(File Transfer Protocol)
?H.323( H.323 Protocol )
?HTTP(Hyper Text Transport Protocol)
?GTP ( GPRS Tunnel Protocol)
?MGCP(Media Gateway Control Protocol)
?MMS(Mircosoft Media Server)
?MSN(MSN Protocol)
?NetBIOS(Network Basic Input/Output System)
?PPTP(Point to Point Tunneling Protocol)
?QQ(QQ Protocol)
?RPC (RPC Protocol )
?RTSP(Real-Time Streaming Protocol)
?SIP(Session initiation Protocol)
?SQLNET (SQL*NET Protocol )
ASPF还提供的功能:
?支持对FTP中的get/put关键字过滤
?支持对HTTP中的 Activex/JAVA Appelt 进行过滤
?端口映射(port-mapping),为基于应用层协议的服务指定非通用端口
?User-define:用户定义应用层协议识别