常见防火墙的类型主要有两种:包过滤和代理防火墙,每种都有各自的优缺点:
包过滤(Packet Filtering)
数据包过滤是一个网络安全保护机制,它用来控制流出和流入网络的数据。通过控制存在于某一网段的网络流量类型,包过滤可以控制存在于某一网段的服务方式。不符合网络安全的那些服务将被严格限制。基于包中的协议类型和协议字段值,过滤路由器能够区分网络流量;基于协议特定的标准,路由器在其端口能够区分包和限制包的能力叫包过滤(Packet Filtering)。正是因为这种原因,过滤路由器也可以称作包过滤路由器(Packet Filter Router)。
包过滤的优点:
* 一个过滤路由器能协助保护整个网络
数据包过滤的主要优点之一是,一个单个的、恰当放置的包过滤路由器有助于保护整个网络。如果仅有一个路由器连接内部与外部网络,不论内部网络的大小、内部拓朴结构,通过那个路由器进行数据包过滤,在网络安全保护上就取得较好的效果。
* 数据包过滤对用户透明
不像在后面描述的代理(Proxy),数据包过滤不要求任何自定义软件或者客户机配置,它也不要求用户任何特殊的训练或者操作。当数据包过滤路由器决定让数据包通过时,它与普通路由器没什么区别。比较理想的情况是:甚至用户将没有认识到它的存在,除非他们试图做过滤规则中所禁止的事。较强的“透明度”是包过滤的一大优势。
* 过滤路由器速度快、效率高
较Proxy而言,过滤路由器只检查报头相应的字段,一般不查看数据报的内容,而且某些核心部分是由专用硬件实现的,故其转发速度快、效率较高。
包过滤的缺点:
* 不能彻底防止地址欺骗
大多数包过滤路由器都是基于源IP地址、目的IP地址而进行过滤的。而IP地址的伪造是很容易、很普遍的。过滤路由器在这点上大都无能为力。即使按MAC地址进行绑定,也是不可信的。对于一些安全性要求较高的网络,过滤路由器是不能胜任的。
* 一些应用协议不适合于数据包过滤
即使是完美的数据包过滤实现,也会发现一些协议不很适合于经由数据包过滤安全保护。如RPC、X- Window和FTP。而且,服务代理和HTTP的链接,大大削弱了基于源地址和源端口的过滤功能。
图3 代理的工作方式
* 正常的数据包过滤路由器无法执行某些安全策略
数据包过滤路由器上的信息不能完全满足我们对安全策略的需求。例如,数据包说它们来自什么主机(这点还有隐患),而不是什么用户,因此,我们不能强行限制特殊的用户。同样地,数据包说它到什么端口,而不是到什么应用程序;当我们通过端口号对高级协议强行限制时,不希望在端口上有别的指定协议之外的协议,恶意的知情者能够很容易地破坏这种控制。
* 数据包工具存在很多局限性
除了各种各样的硬件和软件包普遍具有数据包过滤能力外,数据包过滤仍然算不上是一个完美的工具。许多这样的产品都或多或少地存在局限性,如数据包过滤规则难以配置。
从以上分析可以看出,包过滤防火墙技术虽然能确保一定的安全保护,且也有许多优点,但是包过滤毕竟是第一代防火墙技术,本身存在较多缺陷,不能提供较高的安全性。在实际应用中,现在很少把包过滤技术当作单独的安全解决方案,而是把它与其它防火墙技术揉合在一起使用。
代理防火墙(Proxy)
代理防火墙是一种较新型的防火墙技术,它分为应用层网关和电路层网关。
应用层网关
这种防火墙的工作方式和过滤数据包的防火墙、以路由器为基础的防火墙的工作方式稍有不同。它是基于软件的。
代理防火墙的原理
代理防火墙工作于应用层,且针对特定的应用层协议。代理防火墙通过编程来弄清用户应用层的流量,并能在用户层和应用协议层提供访问控制。而且,还可用来保持一个所有应用程序使用的记录。记录和控制所有进出流量的能力是应用层网关的主要优点之一。那么,代理防火墙是怎样工作的呢?如图3所示:
从图中可以看出,代理服务器作为内部网络客户端的服务器,拦截住所有要求,也向客户端转发响应。代理客户(Proxy Client)负责代表内部客户端向外部服务器发出请求,当然也向代理服务器转发响应。
当某用户(不管是远程的还是本地的)想和一个运行代理的网络建立联系时,此代理(应用层网关)会阻塞这个连接,然后对连接请求的各个域进行检查。如果此连接请求符合预定的安全策略或规则,代理防火墙便会在用户和服务器之间建立一个“桥”,从而保证其通讯。对不符合预定的安全规则的,则阻塞或抛弃。换句话说,“桥”上设置了很多控制。
电路层网关
另一种类型的代理技术称为电路层网关(Circuit Gateway)。在电路层网关中,包被提交用户应用层处理。电路层网关用来在两个通信的终点之间转换包,如图4所示:
电路层网关是建立应用层网关的一个更加灵活和一般的方法。虽然它们可能包含支持某些特定TCP/IP应用程序的代码,但通常要受到限制。如果支持应用程序,那也很可能是TCP/IP应用程序。
在电路层网关中,特殊的客户机软件可能要安装,用户可能需要一个可变用户接口来相互作用或改变他们的工作习惯。
代理技术的优点:
* 代理易于配置
代理因为是一个软件,所以它较过滤路由器更易配置,配置界面十分友好。如果代理实现得好,可以对配置协议要求较低,从而避免了配置错误。
* 代理能生成各项记录
因代理工作在应用层,它检查各项数据,所以可以按一定准则,让代理生成各项日志、记录。这些日志、记录对于流量分析、安全检验是十分重要和宝贵的。当然,也可以用于记费等应用。
* 代理能灵活、完全地控制进出流量、内容
通过采取一定的措施,按照一定的规则,我们可以借助代理实现一整套的安全策略,比如可说控制“谁”和“什么”还有“时间”和“地点”。
* 代理能过滤数据内容
我们可以把一些过滤规则应用于代理,让它在高层实现过滤功能,例如文本过滤、图像过滤(目前还未实现,但这是一个热点研究领域),预防病毒或扫描病毒等。
* 代理能为用户提供透明的加密机制
用户通过代理进出数据,可以让代理完成加解密的功能,从而方便用户,确保数据的机密性。这点在虚拟专用网中特别重要。代理可以广泛地用于企业外部网中,提供较高安全性的数据通信。
* 代理可以方便地与其它安全手段集成
目前的安全问题解决方案很多,如认证(Authentication)、授权(Authorization)、帐号(Aclearcase/" target="_blank" >ccouting)、数据加密、安全协议(SSL)等。如果把代理与这些手段联合使用,将大大增加网络安全性。这也是近期网络安全的发展方向。
代理技术的缺点:
* 代理速度较路由器慢
路由器只是简单察看TCP/IP报头,检查特定的几个域,不作详细分析、记录。而代理工作于应用层,要检查数据包的内容,按特定的应用协议(如HTTP)进行审查、扫描数据包内容,并进行代理(转发请求或响应),故其速度较慢。
* 代理对用户不透明
许多代理要求客户端作相应改动或安装定制客户端软件,这给用户增加了不透明度。为庞大的互异网络的每一台内部主机安装和配置特定的应用程序既耗费时间,又容易出错,原因是硬件平台和操作系统都存在差异。
* 对于每项服务代理可能要求不同的服务器
可能需要为每项协议设置一个不同的代理服务器,因为代理服务器不得不理解协议以便判断什么是允许的和不允许的,并且还装扮一个对真实服务器来说是客户、对代理客户来说是服务器的角色。挑选、安装和配置所有这些不同的服务器也可能是一项较大的工作。
* 代理服务通常要求对客户、过程之一或两者进行限制
除了一些为代理而设的服务,代理服务器要求对客户与/或过程进行限制,每一种限制都有不足之处,人们无法经常按他们自己的步骤使用快捷可用的工作。由于这些限制,代理应用就不能像非代理应用运行得那样好,它们往往可能曲解协议的说明,并且一些客户和服务器比其他的要缺少一些灵活性。
* 代理服务不能保证免受所有协议弱点的限制
作为一个安全问题的解决方法,代理取决于对协议中哪些是安全操作的判断能力。每个应用层协议,都或多或少存在一些安全问题,对于一个代理服务器来说,要彻底避免这些安全隐患几乎是不可能的,除非关掉这些服务。
代理取决于在客户端和真实服务器之间插入代理服务器的能力,这要求两者之间交流的相对直接性。而且有些服务的代理是相当复杂的。
* 代理不能改进底层协议的安全性
因为代理工作于TCP/IP之上,属于应用层,所以它就不能改善底层通信协议的能力。如IP欺骗、SYN泛滥,伪造ICMP消息和一些拒绝服务的攻击。而这些方面,对于一个网络的健壮性是相当重要的。试想,如果网络都不能正常运行,代理服务从何谈起呢?
防火墙技术发展动态和趋势
防火墙产品正向以下趋势发展:
1.优良的性能
新一代防火墙系统不仅应该能更好地保护防