3.4.8 防火墙
几乎所有的组织都需要连接互联网,以便给顾客或其他外部用户提供服务,同时使内部用户可以访问信息和服务。大多数组织中的计算机是完全不同的,它们运行不同的操作系统和应用软件。软件的安全性差别更大,有些软件提供了先进的安全措施,但大多数软件没有能力或有很少的能力保证进入的通信是可靠的,向外的通信是私密的。总之,在一个有很多计算机和多种软件的企业内部网中,系统的有些部分在安全攻击下会非常地脆弱是不可避免的。攻击的形式将在第11章中详细讨论。
图3-21 防火墙配置防火墙的目的在于监视和控制进出企业内部网的所有通信。防火墙由一组进程实现,它作为通向企业内部网的网关(参见图3-21a),应用了组织规定的安全策略。
防火墙安全策略的目标可能包括下面的某些或所有内容:
服务控制:用于确定内部主机上的哪些服务可以接受外部访问,并拒绝其他的服务请求。外发服务请求和应答也受到控制。这些过滤行为可以基于IP数据包的内容以及其中包含的TCP和UDP请求来完成。例如,到达的HTTP请求的目的地应该是官方的Web服务器主机,否则该请求会被拒绝。
行为控制:用于防止破坏公司策略的行为、反社会的行为,或者找不到可辨认的合法目的的行为,这些行为被怀疑为构成了攻击的一部分。其中的某些过滤动作(action)可在IP或TCP层进行,但其他动作(action)可能需要在更高层对消息进行解释。125例如,过滤垃圾邮件攻击需要检查消息头中发送方的邮件地址,甚至是消息内容。
用户控制:组织可能希望在用户之间加以区分,允许某些用户访问外部服务,而其他用户则禁止访问外部服务。另一个大家更易接收的用户控制的例子是,避免接收系统管理组成员以外的其他用户的软件,以免感染病毒或是维护软件标准。这是个特殊的例子,如果不禁止普通用户使用Web,要想实现上述目的是很困难的。
用户控制的另一个实例是拨号以及其他为不在站点的用户提供连接的管理。如果防火墙同时也是通过调制解调器连接的主机,它可以在连接时认证用户,并且对所有通信使用一个安全通道(防止外来的窃听、伪装和其他攻击)。这是本节后面将要描述的虚拟私网(VPN)技术的目的。
这些策略必须以过滤操作的方式表达,而这些操作由在不同层操作的过滤进程执行:
IP数据包过滤:这是一个检查单个IP数据包的过滤进程,它会根据源地址和目的地址进行决策。它也会检查IP数据包的服务类型域,并根据服务类型解释数据包的内容。例如,它可以根据目的端口号过滤TCP数据包,因为服务通常位于大家熟知的端口上,从而可以根据请求的服务过滤数据包。例如,很多站点禁止外部客户使用NFS服务器。
从性能方面考虑,IP过滤通常由路由器的操作系统内核中的进程执行。如果使用多个防火墙,第一个防火墙可能标识某些数据包以便后面的防火墙做更彻底的检查,同时让“干净”的数据包继续发送,也有可能基于IP数据包的顺序进行过滤,例如,在执行登录命令前,禁止对FTP服务器进行访问。
TCP网关:TCP网关进程检查所有的TCP连接请求以及数据片的传输。安装了TCP网关进程后,可控制TCP连接的创建,检查TCP片断的正确性(一些服务拒绝攻击用残缺的TCP片断来破坏客户的操作系统)。在需要时,它们可以被路由到应用层网关进行内容检查。
应用层网关:应用层网关进程作为应用进程的代理。例如,用户希望有这样的策略:允许特定内部用户的Telnet连接创建到特定外部主机。当一个用户在本地运行Telnet程序时,程序试图和远程主机建立一个TCP连接,该请求被TCP网关截获。TCP网关启动一个Telnet代理进程,原有的TCP连接被路由到该进程。如果代理通过了Telent操作(用户被授权使用所请求的主机),那么它会建立另一个通向所请求的主机的连接,并由它中转所有来往的TCP数据包。一个类似的代理进程将代表每个Telnet客户而运行,而类似的代理可能被FTP和其他服务所采用。
一个防火墙通常由工作在不同协议层的多个进程组成。考虑到性能和容错,通常在防火墙中使用一台以上的计算机。在下面描述的并由图3-21说明的所有配置中,我们给出了一个不受保护的Web服务器和FTP服务器。它只包含一些已发布的信息,这些信息对公共访问不加防范,而服务器软件必须确保只能由授权的内部用户修改。
IP数据包过滤通常由路由器(一台至少有两个位于不同IP网络的网络地址的计算机)执行,该路由器运行一个RIP进程,一个IP数据包过滤进程以及个数尽可能少的其他进程。路由器/过滤器仅运行可信的软件,其运行方式要保证过滤策略的执行。这涉及不能运行特洛伊木马进程,以及路由器和过滤器软件不被修改或破坏。图3-21a显示了仅依赖于IP过滤并只使用了一个路由器的简单的防火墙配置,图3-10中的网络配置包含两个作为此类防火墙的路由器/过滤器。127该配置中有两个路由器/过滤器,以确保性能和可靠性。它们遵循同样的过滤策略,而第二个没有增加系统的安全性。
当需要TCP和应用层网关进程时,这些进程通常会运行在单独的计算机上,该计算机称为堡垒(这个术语源于城堡的构筑,城堡有一个突出的瞭望塔用来保护城堡)。堡垒计算机是一台位于企业内部网中由IP路由器/过滤器保护的主机,它运行TCP和应用层网关(参见图3-21b)。与路由器/过滤器类似,堡垒只运行可信的软件。在一个足够安全的企业内部网内,代理必须用于访问所有的外部服务。读者可能已经对用于Web访问的代理很熟悉了,它们都是防火墙代理的应用实例,并且通常和Web缓存服务器(见第2章的描述)以某种方式集成构建。这些代理以及其他代理可能需要大量的存储和处理资源。
应用以串联方式部署的两台路由器/过滤器以及堡垒和位于与路由器/过滤器相链接的单独子网内的公共服务器可以提高安全性能(见图3-21c),这种配置在安全方面有以下优势:
- 如果堡垒策略严格的话,企业内部网内主机的IP地址根本不需要对外界公开,企业内部网计算机也无须知道外部地址,因为所有的外部通信都要通过堡垒内的代理进程完成,而代理进程可以访问两端的计算机。
- 如果第一个路由器/过滤器被攻破,那么第二个路由器/过滤器(由于原本外部不可见而不易受攻击)会继续承担挑选和拒绝不可接收的IP数据包的责任。
虚拟私网 通过使用IP层的密码保护安全通道,虚拟私网(VPN)将防火墙保护的界限延伸到本地企业内部网之外。在3.4.4节中,我们概述了使用IPSec隧道技术对IPv6和IPv4进行的IP安全扩展[Thayer 1998],这些都是实现VPN的基础。VPN可用于外部个人用户,或者在使用公共互联网链接的位于不同站点的企业内部网之间实现安全连接。
例如,一个员工需要通过ISP连接到组织的企业内部网。一旦连接成功,他就应该拥有和防火墙内部用户同样的权利。若本地主机实现了IP安全,则上面的要求可以完成。本地主机保存了与防火墙共享的一个或多个密钥,这些密钥用来在连接时建立安全通道。安全通道机制将在第11章中详细介绍。