■传统防火墙
防火墙的主要功能是控制内部网络和外部网络的连接。利用它既可以阻止非法的连接、通讯,也可以阻止外部的攻击。一般来讲,防火墙物理位置位于内部网络和外部网络之间。
常见防火墙的类型主要有三种:包过滤、应用层网关、电路层网关。
包过滤
数据包过滤是一个网络安全保护机制,用来控制流出和流入网络的数据。它通过控制存在于某一网络段的网络流量类型,可以控制存在于某一网络段的服务方式。不符合网络安全的那些服务将被严格限制。路由器在其端口能够区分包和限制包的能力叫包过滤(Packet Filtering)。因此,过滤路由器也可以称作包过滤路由器(Packet Filter Route)。
应用层网关
代理(Proxy)是一种较新型的防火墙技术,这种防火墙有时被称为应用层网关,这种防火墙的工作方式同过滤数据包的防火墙和以路由器为基础的防火墙的工作方式稍有不同。它是基于软件的。
代理工作于应用层,且针对特定的应用层协议。代理通过编程来弄清用户应用层的流量,并在用户层和应用协议层提供访问控制。而且,它还可用来保持一个所有应用程序使用的记录。记录和控制所有进出流量的能力是应用层网关的主要优点之一。
电路层网关
另一种类型的代理技术称为电路层网关(Circuit Gateway)。在电路层网关中,包被提交到用户应用层处理。电路层网关用来在两个通信的终点之间转换包。
电路层网关是一个建立应用层网关更加灵活的方法。虽然它们包含支持某些特定TCP/IP应用程序的代码,但通常要受到限制。如果支持应用程序,那也很可能是TCP/IP应用程序。
在电路层网关中,可能要安装特殊的客户机软件,用户需要一个可变用户接口来相互作用或改变他们的工作习惯。
■新型防火墙技术
我们的目标是设计并实现一种新型防火墙,使它既有包过滤的功能,又能在应用层进行代理。它应该具备以下特点:
● 综合包过滤和代理技术,克服二者在安全方面的缺陷;
● 能从数据链路层一直到应用层施加全方位的控制;
● 实现TCP/IP协议的微内核,从而在TCP/IP协议层进行各项安全控制;
● 基于上述微内核,使速度超过传统的包过滤防火墙;
● 提供透明代理模式,减轻客户端的配置工作;
● 支持数据加密、解密(DES和RSA),提供对虚拟网VPN的强大支持;
● 内部信息完全隐藏;
● 产生一个新的防火墙理论。
从图1可知,该防火墙既不是单纯的代理防火墙,又不是纯粹的包过滤。它能从数据链层、IP层、TCP层到应用层都施加安全控制,且能直接进行网卡操作,对出入的数据进行透明加密、解密。
设计与实现的关键技术
● Application Proxy:提供TCP/IP应用层的服务代理,例如HTTP、 FTP、 Email等代理。它接收用户的请求,在应用层对用户加以认证,并可由安全控制模块加以控制。
● DES和RSA:这部分主要是针对进出防火墙的数据进行加密、解密,并可产生密钥。这是一个可选项,采用DES和RSA两种加密算法。
● TCP/IP协议处理:该模块能在TCP/IP协议层进行各项处理。例如:TCP UDP IP和ICMP ARP等。利用它,可以避免TCP/IP协议本身的安全隐患,增强网络的安全性。它可以提供比过滤路由器更广泛的检查。
● Raw Acess to NIC: 该模块的功能主要是对网卡的直接读写,使我们可以能控制底层协议。它对收到的数据进行MAC层的封装与拆封,并可监听网上数据。
● 安全、日志:这个模块分为二个层次,一个是在应用层,另一个是在TCP/IP协议层。前者可以在应用层施加预定的各项安全控制,产生各种日志;后者则是在底层(TCP/IP协议层)。
● 配置、报表:通过这个模块,我们可以配置该防火墙系统,制定安全规则,并可产生各种报表。
无论是Unix还是Windows平台,都提供有TCP/IP协议处理模块,那么,我们自己再实现TCP/IP内核目的又何在呢?这主要是基于以下考虑:
1. 操作系统的TCP/IP内核大都只能在上层调用,我们不能进入协议底层(TCP、IP、ARP等);
2. 要实现一个完备、有效的包过滤功能,必须要在TCP/IP底层加以控制;
3.增加TCP/IP的安全性,抛弃一些危及安全的服务,如禁止ICMP、ARP,只实现必需的服务;
4. 与应用层代理集成起来,增加控制范围;
5. 一旦TCP/IP协议能自行处理,其灵活性及强大的控制能力,可以让该防火墙实施几乎所有的安全策略、安全规则。
TCP/IP协议
数据包格式的定义及实现
我们利用Raw Aclearcase/" target="_blank" >ccess to NIC模块,开发一个协议分析软件,从而能修正、达到与标准事实上的一致(如图2所示)。
数据链路层(Data Link)
数据链路层是TCP/IP协议的最低层,它的常规功能是对上层数据(IP或ARP)进行物理帧的封装与拆封,当然还包括硬件寻址、管理等功能。它既可以监听本主机的网络数据,也可以监听所有子网上任何一台主机的全部网络流量,这点对于一个防火墙产品是很实用的。利用这些功能,任何人进入本防火墙或本子网,都将留下“痕迹”。我们可以按安全策略,对这些“痕迹”进行更进一步的处理。如记录、产生报表,也可进行“跟踪”。换句话说,即使本系统遭到入侵,我们也能确定是“谁”在“什么时间”干了“什么”。这一点是过滤路由器不能做到的,可恰恰又是非常重要的。从学术的观点来讲,利用它,我们能设计一个完善的协议分析软件,大大推动网络通信协议的实现与设计。
IP层处理
从一般的概念来说,ARP和ICMP都属于IP层。实际上,ICMP在IP层之上,利用IP层收、发数据包;而ARP/RARP则在IP层之下,它们本身并不使用IP层,而是直接在数据链路层上进行收发。但是ARP和ICMP所提供的功能是为IP服务的(当然,ICMP也利用了ARP和IP),为便于讨论,我们把这三者放在一起。
IP层的处理较复杂,且可做许多安全方面的工作。若在极端的情况下,我们可以修改IP报头,增加安全机制(如认证)。考虑到系统的性能及兼容性,我们没有选择这种方法,而是利用了包过滤技术和ICMP、ARP提供的功能,提供安全机制。目前,大部分路由器只能处理常规的IPV4,对于新出台的IPV6,路由器还未能支持。
ICMP
ICMP是为了允许路由器向主机报告投递出错的原因和一些控制而设计的。但事实上,任何一台主机都可以向任何其他机器发送ICMP报文,如Ping。ICMP在本系统中的作用主要是:隐藏子网内主机信息和施加一些控制。
ICMP虽然有一定的作用,如差错报告,但也有很大的安全隐患,即隐藏子网内主机信息。
从安全的角度来说,子网主机的信息不应过多地暴露。在通常的路由器中,要么内部主机“Ping”到外部主机的同时,外部主机也能“Ping”到内部主机;要么二者都禁止。若是前者,会暴露主机信息,不利于安全;若是后者,又给用户带来不便。我们利用ICMP协议可以做到能“Ping”到外面,而外面“Ping”不到内部,实现隐藏子网的同时又为用户增加了透明度。
我们主要是采用了三种策略:
1.对内部主机的ICMP包,虽然转发,但改写ICMP包中的源IP地址,使外部不能看到内部的IP地址;
2.外部ICMP请求包一律抛弃;
3.对内部有请求时,才动态地接收外部主机的响应, 且抛弃一些ICMP威胁安全的响应,如改变路由的ICMP包。
TCP/UDP
TCP/UDP是TCP/IP协议最高层(除应用层外),它们存在如下安全隐患:
● 数据包伪装 (TCP/UDP);
● SYN Flood攻击,造成拒绝服务(TCP);
● TCP/UDP数据包是作为IP层数据发出,而IP数据包要在不同的网络中寻址转发,这就不能保证IP的有效性、正确性,因为仅凭一个IP地址验证其合法性是远远不够的。再说在广域中,我们也无法把MAC地址与IP地址绑定。
为避免上述情况,必须要增加一定的验证措施,TCP报文头部中,有两个元素可以用于验证TCP报文的有效性。一个是序号,另一个是确认号。序号指出发送者的TCP数据第一个字节序号,而确认号是指收方收到的最高字节序号加1,也就是下次希望收到的第一个字节序号。这两个序号基准一般是随机产生的,不易被伪造、猜测。我们利用这二个TCP的特征,设计了一种较有效的过滤手段,对TCP报文的有效性进行确认。
至此,我们论述了新型防火墙所采用的部分技术及其实现方法。这些技术不但使我们覆盖了传统包过滤防火墙的全部功能,而且在全面对抗IP欺骗、SYN Flood、ICMP、ARP等攻击手段方面取得优势,赋予包过滤防火墙新的生命力。
图1 系统构成
图2 TCP/IP协议处理模块的功能