随着计算机技术和网络技术的普及,网络安全问题也越来越得到关注。防火墙作为一种控制两个网络之间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技术不仅弥补了包过滤防火墙应用中的缺陷,提供针对应用层的报文过滤,而且还具有多种增强的安全特性,是一种智能的高级过滤技术。