ASPF技术白皮书
关键词:ASPF,包过滤
摘 要:ASPF是一种应用层状态检测技术,它通过与NAT和ALG等技术的组合应用,实现对应用层协议状态的处理和检测。本文详细介绍了ASPF技术的工作机制以及典型组网应用。
缩略语:
缩略语 | 英文全名 | 中文解释 |
ACL | Access Control List | 访问控制列表 |
ALG | Application Level Gateway | 应用层网关 |
ASPF | Application Specific Packet Filter | 基于应用层包过滤 |
DMZ | Demilitarized Zone | 非军事区 |
FTP | File Transfer Protocol | 文件传输协议 |
HTTP | Hypertext Transfer Protocol | 超文本传输协议 |
ICMP | Internet Control Message Protocol | Internet控制报文协议 |
ILS | Internet Locator Server | Internet定位服务 |
NBT | Network Basic Input/Output System | 网络基本输入/输出系统 |
NAT | Network Address Translation | 网络地址转换 |
PAM | Port to Application Mapping | 端口到应用的映射 |
PPTP | Point-to-Point Tunneling Protocol | 点到点隧道协议 |
RTSP | Real Time Streaming Protocol | 实时流协议 |
SIP | Session Initiation Protocol | 会话发起协议 |
SQLNET | - | 一种Oracle数据库语言 |
目 录
随着计算机技术和网络技术的普及,网络安全问题也越来越得到关注。防火墙作为一种控制两个网络之间IP通信的安全机制,已成为网络安全部署的首要选择。防火墙的目的就是在信任网络(区域)和非信任网络(区域)之间建立一道屏障,并实施相应的安全策略。应该说,在网络中应用防火墙是一种非常有效的网络安全手段。
通常,防火墙的实现技术分为两类:包过滤技术和应用层报文过滤技术。
包过滤技术的核心是定义ACL规则来过滤IP数据包。对于需要转发的数据包,包过滤防火墙首先获取其包头信息(包括IP层所承载的上层协议的协议号、数据包的源地址、目的地址、源端口和目的端口等),然后与用户设定的ACL规则进行比较,根据比较的结果对数据包进行处理(允许通过或者丢弃)。
包过滤技术的优点在于它只进行网络层的过滤,处理速度较快,尤其是在流量中等、配置的ACL规模适中的情况下对设备的性能几乎没有影响。而且,包过滤技术的实现对于上层应用以及用户来讲都是透明的,无须在用户主机上安装特定的软件。尽管包过滤技术具有以上优势,但其却具有明显的弊端,主要表现在以下几个方面:
(1) 基于IP包头的静态数据过滤
通常,IP数据包中的目的地址、源地址、源端口和目标端口被用来判断是否允许数据包通过。这种基于IP包头的静态匹配,虽然可以允许或拒绝特定的应用层服务,但是无法理解特定服务的上下文会话。例如,对于多通道的应用层协议,由于传统的包过滤防火墙只能知晓控制通道的连接信息,而无法预知后续动态协商的数据通道信息,因此就无法对其制定完善的安全过滤策略。
(2) 无法检测来自于应用层的攻击行为
由于包过滤防火墙仅对网络层进行检查和过滤,不对报文的应用层内容进行解析和检测,因此无法对一些来自于应用层的威胁进行防范,例如无法防范来自不可信网站的Java applet或Active X插件对内部主机的破坏。
(3) 维护比较困难
网络管理人员为了满足企业网络安全的需要以及各种Internet应用服务的需求,必须配置复杂繁琐的ACL以实现对数据包的过滤,一旦ACL的配置出现错误,将会导致安全漏洞的产生。而且,由于缺少有效的工具对配置规则的正确性进行验证,也会增加维护的难度。
(4) 缺乏有效的日志功能
包过滤防火墙仅对静态的报文特征信息进行过滤和输出日志记录,不能对整个应用连接输出日志记录,因此无法实现对于应用连接的跟踪。
由于包过滤防火墙在应用层报文过滤方面具有以上先天的不足,因此提出了应用层报文过滤的概念――ASPF。
ASPF是针对应用层的报文过滤,即基于状态的报文过滤。它具有以下优点:
l 支持传输层协议检测(通用TCP/UDP检测)和ICMP、RAWIP协议检测。
l 支持对应用层协议的解析和连接状态的检测,这样每一个应用连接的状态信息都将被ASPF维护并用于动态地决定数据包是否被允许通过防火墙或丢弃。
l 支持PAM(Port to Application Map,应用协议端口映射),允许用户自定义应用层协议使用非通用端口。
l 可以支持Java阻断和ActiveX阻断功能,分别用于实现对来自于不信任站点的Java applet和ActiveX的过滤。
l 支持ICMP差错报文检测,可以根据ICMP差错报文中携带的连接信息,决定是否丢弃该ICMP报文。
l 支持TCP连接首包检测,通过检测TCP连接的首报文是否为SYN报文,决定是否丢弃该报文。
l 提供了增强的会话日志和调试跟踪功能,可以对所有的连接进行记录,可以针对不同的应用协议实现对连接状态的跟踪与调试。
可见,ASPF技术不仅弥补了包过滤防火墙应用中的缺陷,提供针对应用层的报文过滤,而且还具有多种增强的安全特性,是一种智能的高级过滤技术。
ASPF不仅能够对IP层的数据包根据ACL规则来进行过滤,还能对传输层、应用层的报文进行检测。ASPF在TCP/IP协议栈中所处的位置如下图所示。
图1 ASPF在协议栈中的位置
ASPF支持的协议检测包括:传输层协议检测和ICMP、RAWIP协议检测。ASPF的传输层协议检测通常指通用TCP/UDP检测。通用TCP/UDP检测是对报文的传输层信息(如报文的源地址、目的地址、端口号、传输层状态等)进行的检测。下文将对ASPF的传输层协议检测原理做详细介绍。
TCP检测是指,ASPF检测TCP连接发起和结束的状态转换过程,包括连接发起的3次握手状态和连接关闭的4次握手状态,然后根据这些状态来创建、更新和删除设备上的连接状态表。TCP检测是其它基于TCP的应用协议检测的基础。
TCP检测的具体过程为,当ASPF检测到TCP连接发起方的第一个SYN报文时,开始建立该连接的一个连接状态表,用于记录并维护此连接的状态,以允许后续该连接的相关报文能够通过防火墙,而其它的非相关报文则被阻断和丢弃。
图2 ASPF的TCP状态检测
如图2所示,ASPF对Host A向Host B发起的TCP连接进行状态检测,对于建立连接的TCP的3次握手报文,允许其正常通过,并建立TCP连接。在该过程中,对于来自其它主机的TCP报文,或者来自Host B的不符合正确状态的报文,则被防火墙丢弃。
UDP协议没有状态的概念,ASPF的UDP检测是指,针对UDP连接的地址和端口进行的检测。UDP检测是其它基于UDP的应用协议检测的基础。
UDP检测的具体过程为,当ASPF检测到UDP连接发起方的第一个数据报时,ASPF开始维护此连接的信息。当ASPF收到接收方回送的UDP数据报时,此连接才能建立,其它与此连接无关的报文则被阻断和丢弃。
图3 ASPF对UDP的连接检测
如图3所示,ASPF对UDP报文的地址和端口进行检测,在UDP连接建立过程中,来自其它地址或端口的UDP报文将被防火墙丢弃。
基于应用的状态检测技术是一种基于应用连接的报文状态检测机制。ASPF通过创建连接状态表来维护一个连接某一时刻所处的状态信息,并依据该连接的当前状态来匹配后续的报文。目前,ASPF支持进行状态检测的应用协议包括FTP、H.323、ILS、NBT、PPTP、RTSP、SIP和SQLNET。
除了可以对应用协议的状态进行检测外,ASPF还支持对应用连接协商的数据通道进行解析和记录,用于匹配后续数据通道的报文。比如,部分多媒体应用协议(如H.323)和FTP协议会先使用约定的端口来初始化一个控制连接,然后再动态的选择用于数据传输的端口。包过滤防火墙无法检测到动态端口上进行的连接,而ASPF则能够解析并记录每一个应用的每一个连接所使用的端口,并建立动态防火墙过滤规则让应用连接的数据通过,在数据连接结束时则删除该动态过滤规则,从而对使用动态端口的应用连接实现有效的访问控制。
下面以FTP协议为例,说明ASFP如何进行应用层的状态检测以及多通道的报文解析和检测:
图4 ASPF对应用层进行状态检测
如图4所示,ASPF在Host登录FTP server的过程中记录并维护该应用的连接状态。在FTP应用的TCP连接建立后,只允许Host向FTP server发送用户名。在发送用户名之后,只允许Host向FTP server发送密码。FTP连接过程中所有不符合FTP协议交互过程的报文都被ASPF拒绝,防止外部恶意用户对服务器资源的占用以及攻击。
图5 ASPF进行动态通道的检测
如图5所示,ASPF在Host登录FTP server的过程中记录并维护该应用的连接信息。当Host向FTP server发送PORT报文协商数据通道后,ASPF记录PORT报文中数据通道的信息,建立动态过滤规则,允许双方进行数据通道的建立和数据传输,同时拒绝其它不属于该数据通道的报文通过,并在数据通道传输结束后,删除该动态过滤规则。
除了上述通用TCP/UDP检测和基于应用的状态检测功能外,ASPF还支持一些增强性的安全特性。
通常情况下,应用层协议使用通用的端口号进行通信,而端口到应用的映射(PAM)允许用户为不同的应用协议定义一组新的端口号。用户可以通过配置端口到应用的映射,建立应用层协议和应用到该协议上的自定义端口之间的映射关系。PAM独立于ASPF,ASPF支持PAM即表示可以对这些自定义端口对应的应用连接进行检测。
PAM提供了对应用层协议的非标准端口应用的支持,包括两类映射机制:通用端口映射和基于基本访问控制列表的主机端口映射。
通用端口映射是将用户自定义端口号和应用层协议建立映射关系,例如:将8080端口映射为HTTP应用时,所有目的端口是8080的TCP报文都被认为是HTTP报文,这样就可以通过端口号来识别应用层协议。通用端口映射不仅可以支持一个端口与一个应用的映射,也可以支持多个端口到一个应用的映射。
主机端口映射是将某一主机范围的某一端口和一个应用层协议建立映射关系。主机范围可以通过标准ACL来指定。例如:将目的地址为10.110.0.0/24网段的、使用8080端口的TCP报文映射为HTTP报文。
主机端口映射支持如下两种映射方式:
l 同一个主机范围内,一个或多个端口到一个应用的主机映射方式;
l 不同主机范围内,一个端口到多个应用的映射。
在用户访问网页的过程中,若携带恶意代码的Java applet或者ActiveX插件被客户端下载到本地执行,则可能会对用户的计算机系统资源造成破坏,因而需要限制未经用户允许的Java applet和ActiveX插件下载到用户的网络中。Java阻断和ActiveX阻断功能分别用于实现对来自于不信任站点的Java applet和ActiveX的过滤。
Java阻断功能是通过配置ACL来标识可信任的与不可信的主机或网段。当防火墙配置了支持Java阻断功能的HTTP协议检测时,受保护网络内的用户如果试图通过Web页面访问不可信站点,则Web页面中为获取包含Java applet程序而发送的请求指令将会被ASPF阻断。
ActiveX阻断功能启动后,所有对Web页面中ActiveX插件的请求将被过滤掉。如果用户仍然希望能够获取部分Web页面的ActiveX插件,必须配置ACL规则来允许用户获取该Web页面的ActiveX插件。
包过滤防火墙无法识别来自网络中伪造的ICMP差错报文,从而无法避免ICMP的恶意攻击。由于正常ICMP差错报文中均携带有本报文对应连接的相关信息,ASPF可根据这些信息匹配到相应的连接。如果匹配失败,就可以根据当前配置决定是否丢弃该ICMP报文。
包过滤防火墙对于TCP连接均要求其首报文为SYN报文,非SYN报文的TCP首包将被丢弃。在这种处理方式下,当防火墙设备首次加入网络时,网络中原有TCP连接的非首包在经过新加入的防火墙设备时均被丢弃,这会中断已有的连接。ASPF可实现根据当前配置决定对TCP首包非SYN报文是否丢弃。
与包过滤防火墙相比,ASPF提供了增强的会话日志功能,可以对所有的连接进行记录,包括:连接的时间、源地址、目的地址、使用的端口和传输的字节数。此外,通过调试和日志信息,ASPF可以针对不同的应用协议实现对连接状态的跟踪与调试,为系统故障诊断提供了丰富的信息。
传统防火墙的策略配置通常都是围绕报文入接口、出接口进行的。随着防火墙的不断发展,它已经不再是仅连接外网和内网,而是可以连接内网/外网/DMZ多个网络区域。一台高端防火墙通常能够提供十个以上的物理接口,同时连接多个逻辑网段。在这种组网环境中,传统基于接口的策略配置方式需要为每一个接口配置安全策略,给网络管理员带来了极大的负担,安全策略的维护工作量成倍增加,从而也增加了因为配置引入安全风险的概率。
和传统防火墙基于接口的策略配置方式不同,H3C防火墙的ASPF可以支持通过安全域来配置安全策略,即支持域间的访问控制策略。安全域是一个虚拟的概念,通常将拥有相同安全策略的接口划分在同一个安全域中,然后对各域进行安全策略的配置和安全管理。
如图6所示,内部网络受保护的主机属于可信任的Trust域,对外提供FTP等服务的服务器属于DMZ域,外部公网属于不可信的Untrust域。
l 通过在Trust域和Untrust域之间配置ASPF策略,对Trust域到Untrust域的所有连接进行传输层协议以及应用层协议状态的检测,从而实现域间的访问控制以及应用状态监控。
l 通过在DMZ域和Untrust域之间配置ASPF策略,对DMZ域和Untrust域之间的连接进行状态检测,保护内部服务器不受外部网络的攻击。
域间ASPF的策略能够通过Web页面进行配置,可实现图形化的安全配置管理,简单易用。
图7 ASPF典型组网应用图
如图7所示,私网侧某公司通过启用了ASPF功能的防火墙设备连接到Internet,公司内部对外提供FTP服务和Web服务。通过在防火墙上配置ASPF策略,检测公司内部主机通过防火墙的应用流量。如果报文是内部网络用户主动发起连接的返回报文,则允许其通过防火墙进入内部网络,其它外部未知网络流量将被拒绝;如果该报文是外部网络用户主动访问内部服务器的请求报文,则允许其通过防火墙。
另外,在本地用户需要访问远程网络服务的情况下,还可以通过在防火墙上配置Java阻断功能来过滤掉来自外部Web服务器的HTTP报文中的Java Applets,达到保护企业内部网络的目的。
Copyright ©2009 杭州华三通信技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
本文档中的信息可能变动,恕不另行通知。