ASPF是一种应用层状态检测技术,它通过与NAT和ALG等技术的组合应用,实现对应用层协议状态的处理和检测。

1.1  产生背景

随着计算机技术和网络技术的普及,网络安全问题也越来越得到关注。防火墙作为一种控制两个网络之间IP通信的安全机制,已成为网络安全部署的首要选择。防火墙的目的就是在信任网络(区域)和非信任网络(区域)之间建立一道屏障,并实施相应的安全策略。应该说,在网络中应用防火墙是一种非常有效的网络安全手段。

通常,防火墙的实现技术分为两类:包过滤技术和应用层报文过滤技术。

包过滤技术的核心是定义ACL规则来过滤IP数据包。对于需要转发的数据包,包过滤防火墙首先获取其包头信息(包括IP层所承载的上层协议的协议号、数据包的源地址、目的地址、源端口和目的端口等),然后与用户设定的ACL规则进行比较,根据比较的结果对数据包进行处理(允许通过或者丢弃)。

包过滤技术的优点在于它只进行网络层的过滤,处理速度较快,尤其是在流量中等、配置的ACL规模适中的情况下对设备的性能几乎没有影响。而且,包过滤技术的实现对于上层应用以及用户来讲都是透明的,无须在用户主机上安装特定的软件。尽管包过滤技术具有以上优势,但其却具有明显的弊端,主要表现在以下几个方面:

(1)        基于IP包头的静态数据过滤

通常,IP数据包中的目的地址、源地址、源端口和目标端口被用来判断是否允许数据包通过。这种基于IP包头的静态匹配,虽然可以允许或拒绝特定的应用层服务,但是无法理解特定服务的上下文会话。例如,对于多通道的应用层协议,由于传统的包过滤防火墙只能知晓控制通道的连接信息,而无法预知后续动态协商的数据通道信息,因此就无法对其制定完善的安全过滤策略。

(2)        无法检测来自于应用层的攻击行为

由于包过滤防火墙仅对网络层进行检查和过滤,不对报文的应用层内容进行解析和检测,因此无法对一些来自于应用层的威胁进行防范,例如无法防范来自不可信网站的Java applet或Active X插件对内部主机的破坏。

(3)        维护比较困难

网络管理人员为了满足企业网络安全的需要以及各种Internet应用服务的需求,必须配置复杂繁琐的ACL以实现对数据包的过滤,一旦ACL的配置出现错误,将会导致安全漏洞的产生。而且,由于缺少有效的工具对配置规则的正确性进行验证,也会增加维护的难度。

(4)        缺乏有效的日志功能

包过滤防火墙仅对静态的报文特征信息进行过滤和输出日志记录,不能对整个应用连接输出日志记录,因此无法实现对于应用连接的跟踪。

由于包过滤防火墙在应用层报文过滤方面具有以上先天的不足,因此提出了应用层报文过滤的概念――ASPF。

1.2  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技术不仅弥补了包过滤防火墙应用中的缺陷,提供针对应用层的报文过滤,而且还具有多种增强的安全特性,是一种智能的高级过滤技术。

2  ASPF运行机制

ASPF不仅能够对IP层的数据包根据ACL规则来进行过滤,还能对传输层、应用层的报文进行检测。ASPF在TCP/IP协议栈中所处的位置如下图所示。

图1 ASPF在协议栈中的位置

2.1  协议检测

ASPF支持的协议检测包括:传输层协议检测和ICMP、RAWIP协议检测。ASPF的传输层协议检测通常指通用TCP/UDP检测。通用TCP/UDP检测是对报文的传输层信息(如报文的源地址、目的地址、端口号、传输层状态等)进行的检测。下文将对ASPF的传输层协议检测原理做详细介绍。

2.1.1  TCP检测

TCP检测是指,ASPF检测TCP连接发起和结束的状态转换过程,包括连接发起的3次握手状态和连接关闭的4次握手状态,然后根据这些状态来创建、更新和删除设备上的连接状态表。TCP检测是其它基于TCP的应用协议检测的基础。

TCP检测的具体过程为,当ASPF检测到TCP连接发起方的第一个SYN报文时,开始建立该连接的一个连接状态表,用于记录并维护此连接的状态,以允许后续该连接的相关报文能够通过防火墙,而其它的非相关报文则被阻断和丢弃。

如图2所示,ASPF对Host A向Host B发起的TCP连接进行状态检测,对于建立连接的TCP的3次握手报文,允许其正常通过,并建立TCP连接。在该过程中,对于来自其它主机的TCP报文,或者来自Host B的不符合正确状态的报文,则被防火墙丢弃。

2.1.2  UDP检测

UDP协议没有状态的概念,ASPF的UDP检测是指,针对UDP连接的地址和端口进行的检测。UDP检测是其它基于UDP的应用协议检测的基础。

UDP检测的具体过程为,当ASPF检测到UDP连接发起方的第一个数据报时,ASPF开始维护此连接的信息。当ASPF收到接收方回送的UDP数据报时,此连接才能建立,其它与此连接无关的报文则被阻断和丢弃。

图3所示,ASPF对UDP报文的地址和端口进行检测,在UDP连接建立过程中,来自其它地址或端口的UDP报文将被防火墙丢弃。

2.2  应用层状态检测和多通道检测

基于应用的状态检测技术是一种基于应用连接的报文状态检测机制。ASPF通过创建连接状态表来维护一个连接某一时刻所处的状态信息,并依据该连接的当前状态来匹配后续的报文。目前,ASPF支持进行状态检测的应用协议包括FTP、H.323、ILS、NBT、PPTP、RTSP、SIP和SQLNET。

除了可以对应用协议的状态进行检测外,ASPF还支持对应用连接协商的数据通道进行解析和记录,用于匹配后续数据通道的报文。比如,部分多媒体应用协议(如H.323)和FTP协议会先使用约定的端口来初始化一个控制连接,然后再动态的选择用于数据传输的端口。包过滤防火墙无法检测到动态端口上进行的连接,而ASPF则能够解析并记录每一个应用的每一个连接所使用的端口,并建立动态防火墙过滤规则让应用连接的数据通过,在数据连接结束时则删除该动态过滤规则,从而对使用动态端口的应用连接实现有效的访问控制。

下面以FTP协议为例,说明ASFP如何进行应用层的状态检测以及多通道的报文解析和检测:

如图5所示,ASPF在Host登录FTP server的过程中记录并维护该应用的连接信息。当Host向FTP server发送PORT报文协商数据通道后,ASPF记录PORT报文中数据通道的信息,建立动态过滤规则,允许双方进行数据通道的建立和数据传输,同时拒绝其它不属于该数据通道的报文通过,并在数据通道传输结束后,删除该动态过滤规则。

2.3  ASPF的安全特性

除了上述通用TCP/UDP检测和基于应用的状态检测功能外,ASPF还支持一些增强性的安全特性。

2.3.1  端口到应用的映射

通常情况下,应用层协议使用通用的端口号进行通信,而端口到应用的映射(PAM)允许用户为不同的应用协议定义一组新的端口号。用户可以通过配置端口到应用的映射,建立应用层协议和应用到该协议上的自定义端口之间的映射关系。PAM独立于ASPF,ASPF支持PAM即表示可以对这些自定义端口对应的应用连接进行检测。

PAM提供了对应用层协议的非标准端口应用的支持,包括两类映射机制:通用端口映射和基于基本访问控制列表的主机端口映射。

1. 通用端口映射

通用端口映射是将用户自定义端口号和应用层协议建立映射关系,例如:将8080端口映射为HTTP应用时,所有目的端口是8080的TCP报文都被认为是HTTP报文,这样就可以通过端口号来识别应用层协议。通用端口映射不仅可以支持一个端口与一个应用的映射,也可以支持多个端口到一个应用的映射。

2. 主机端口映射

主机端口映射是将某一主机范围的某一端口和一个应用层协议建立映射关系。主机范围可以通过标准ACL来指定。例如:将目的地址为10.110.0.0/24网段的、使用8080端口的TCP报文映射为HTTP报文。

主机端口映射支持如下两种映射方式:

l              同一个主机范围内,一个或多个端口到一个应用的主机映射方式;

l              不同主机范围内,一个端口到多个应用的映射。

2.3.2  Java阻断和ActiveX阻断

在用户访问网页的过程中,若携带恶意代码的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插件。

2.3.3  ICMP差错报文丢弃

包过滤防火墙无法识别来自网络中伪造的ICMP差错报文,从而无法避免ICMP的恶意攻击。由于正常ICMP差错报文中均携带有本报文对应连接的相关信息,ASPF可根据这些信息匹配到相应的连接。如果匹配失败,就可以根据当前配置决定是否丢弃该ICMP报文。

2.3.4  TCP首包非SYN报文丢弃

包过滤防火墙对于TCP连接均要求其首报文为SYN报文,非SYN报文的TCP首包将被丢弃。在这种处理方式下,当防火墙设备首次加入网络时,网络中原有TCP连接的非首包在经过新加入的防火墙设备时均被丢弃,这会中断已有的连接。ASPF可实现根据当前配置决定对TCP首包非SYN报文是否丢弃。

2.3.5  会话日志与调试跟踪

与包过滤防火墙相比,ASPF提供了增强的会话日志功能,可以对所有的连接进行记录,包括:连接的时间、源地址、目的地址、使用的端口和传输的字节数。此外,通过调试和日志信息,ASPF可以针对不同的应用协议实现对连接状态的跟踪与调试,为系统故障诊断提供了丰富的信息。

3  H3C实现的技术特色

传统防火墙的策略配置通常都是围绕报文入接口、出接口进行的。随着防火墙的不断发展,它已经不再是仅连接外网和内网,而是可以连接内网/外网/DMZ多个网络区域。一台高端防火墙通常能够提供十个以上的物理接口,同时连接多个逻辑网段。在这种组网环境中,传统基于接口的策略配置方式需要为每一个接口配置安全策略,给网络管理员带来了极大的负担,安全策略的维护工作量成倍增加,从而也增加了因为配置引入安全风险的概率。

和传统防火墙基于接口的策略配置方式不同,H3C防火墙的ASPF可以支持通过安全域来配置安全策略,即支持域间的访问控制策略。安全域是一个虚拟的概念,通常将拥有相同安全策略的接口划分在同一个安全域中,然后对各域进行安全策略的配置和安全管理。

图6所示,内部网络受保护的主机属于可信任的Trust域,对外提供FTP等服务的服务器属于DMZ域,外部公网属于不可信的Untrust域。

l              通过在Trust域和Untrust域之间配置ASPF策略,对Trust域到Untrust域的所有连接进行传输层协议以及应用层协议状态的检测,从而实现域间的访问控制以及应用状态监控。

l              通过在DMZ域和Untrust域之间配置ASPF策略,对DMZ域和Untrust域之间的连接进行状态检测,保护内部服务器不受外部网络的攻击。

域间ASPF的策略能够通过Web页面进行配置,可实现图形化的安全配置管理,简单易用。

       声明:转载于网络

ASPF简介的更多相关文章

  1. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  2. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  3. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  4. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  5. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  6. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  7. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  8. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  9. Cesium简介以及离线部署运行

    Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...

随机推荐

  1. mac下brew install 报错

    mac下brew install 报错 错误提示: 原因:是这个brew的权限不正确 修改一下这个brew的权限 chown root:wheel /usr/local/bin/brew

  2. Javascript做模糊查询

    <html> <head> <title>Javascript模糊查找</title> </head> <body> <l ...

  3. Go语言 关于go error处理风格的一些讨论和个人观点(上)

    原创文章.转载请注明出处:server非业余研究-sunface 近期看谷歌go group里面有非常多讨论go error处理风格的问题,颇有启示.如今跟大家分享一下.首先请看一个提问: Hi fo ...

  4. python 获取当前日期 星期

    from datetime import datetime d =datetime.today()     #获取当前日期时间 d.isoweekday()           #获取时间周几

  5. 挑战一下吧!C#测试开发工程师英语面试题

    1. Given a rectangular (cuboidal for the puritans) cake with a rectangular piece removed (any size o ...

  6. hdu 1262 寻找素数对 数论 打表。

    寻找素数对 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. SINGLETON(单例模式)---(孤独的人)

    很多时候,我们都很彷徨,因为,在身边的朋友,很少. package patterns.createable.singleton; /** * 孤独的人啊 * 我为你写了一个类 * 这个类,在我们的程序 ...

  8. 一个计算器的C语言实现

    今天在读<编译原理及实践>时.看到了一个简单的整数计算器的实现. 依照书上的思路,我略微进行了扩展: 1.从整数计算器扩展到小数计算器. 2.支持除法 3.支持空字符. 执行效果例如以下: ...

  9. Suse 创建NFS共享目录

    Suse 创建NFS共享目录 服务端的配置: 1.编辑nfs服务的配置文件 /software/suse11 *(rw,sync,no_root_squash,no_all_squash) 凝视: / ...

  10. 贪心算法-找零钱(C#实现)

    找零钱这个问题很清楚,无非就是始终拿可以取的最大面值来找,最后就使得张数最小了,这个实现是在假设各种面值足够多的情况下. 首先拖出一个界面来,最下面是一个listbox控件 对应的代码:问题比较简单, ...