1.2 防火墙的体系结构
1.2.1 防火墙系统的构成
防火墙由一个或多个构件组成,这些构件有:
● 包过滤型路由器;
● 应用层网关(或代理服务器)。
根据构成,现有的防火墙主要分为包过滤型、代理服务器型、复合型,以及其他类型。包过滤型防火墙通常安装在路由器上,大多数路由器都提供了包过滤的功能。包过滤在网络层进行,以IP包信息为基础,对IP源地址、目标地址、协议类型、端口号等进行筛选。代理服务器型防火墙通常由两部分构成,即服务器端程序和客户端程序。客户端程序与中间节点连接,中间节点再与提供服务的服务器实际连接。复合型防火墙将包过滤和代理服务两种方法结合起来,形成新的防火墙,由堡垒主机提供代理服务。
1.包过滤型路由器
包过滤型路由器对所接收的每个数据包做允许或拒绝的决定。路由器审查每个数据报以便确定其是否与某一条包过滤规则相匹配。过滤规则基于可以提供给IP转发过程的包头信息。包头信息中包括IP源地址、IP目标端地址、封装协议(ICP、UDP、ICMP或IP Tunnel)、TCP/UDP目标端口、ICMP消息类型、包的进入接口和输出接口。如果可以匹配并且规则允许该数据包,那么该数据包就会按照路由表中的信息被转发。如果匹配但是规则拒绝该数据包,那么该数据包就会被丢弃。如果没有相匹配的规则,用户配置的默认参数会决定是转发还是丢弃数据包。
1)与服务相关的过滤
包过滤型路由器使得路由器能够根据特定的服务允许或拒绝流动的数据,因为多数的服务提供者都在已知的TCP/UDP端口号上监听请求包的到来。例如,Telnet服务器进程监听在TCP的23号端口,SMTP服务器进程监听在TCP的25号端口。为了阻塞所有进入的Telnet连接,路由器只需简单地丢弃所有TCP端口号等于23的数据包即可。为了将进来的Telnet连接限制到内部的数台机器上,路由器必须拒绝所有TCP端口号等于23并且目标IP地址不等于允许主机的IP地址的数据包。
一些常用的典型包过滤规则包括:允许进入的Telnet会话与指定的内部主机连接;允许进入的FTP会话与指定的内部主机连接;允许所有外出的Telnet会话;允许所有外出的FTP会话;拒绝所有来自特定的外部主机的数据包;等等。
2)与服务无关的过滤
有几种类型的攻击很难使用基本的包头信息来识别,因为这几种攻击是与服务无关的。它们很难被指定,因为过滤规则需要附加的信息只能通过审查路由表和特定的IP选项,或检查特定段的内容等才能得到。但是,可以对路由器进行配置,以防止这几种类型的攻击。下面是这几种攻击类型的例子:
● 源IP地址欺骗式攻击(Source IP Address Spoofing Attacks)
源IP地址欺骗式攻击的特点是入侵者从外部传输一个假装是来自内部主机的数据包,即数据包中所包含的IP地址为内部网络上的IP地址。入侵者希望借助于一个假的源IP地址渗透到一个只使用了源地址安全功能的系统中。在这样的系统中,来自内部信任主机的数据包被接受,而来自其他主机的数据包全部被丢弃。对于源IP地址欺骗式攻击,可以利用丢弃所有来自路由器外部端口的使用内部源地址的数据包的方法来挫败。
● 源路由攻击(Source Rowing Attacks)
源路由攻击的特点是源站点指定了数据包在Internet中所走的路线。这种类型的攻击是为了旁路安全措施并导致数据包循着一个对方不可预料的路径到达目的地。只需简单地丢弃所有包含源路由选项的数据包即可防范这种类型的攻击。
● 极小数据段式攻击(Tiny Fragment Attacks)
极小数据段式攻击的特点是入侵者使用了IP分段的特性,创建极小的分段并强行将TCP包头信息分成多个数据包段。这种攻击是为了绕过用户定义的过滤规则。黑客寄希望于过滤器路由器只检查第一个分段而允许其余的分段通过。对于这种类型的攻击,只要丢弃协议类型为TCP、IP Fragment Offset等于1的数据包就可安然无恙。
2.应用层网关
应用层网关使得网络管理员能够实现比包过滤型路由器更严格的安全策略。应用层网关不用依赖包过滤工具来管理Internet服务在防火墙系统中的进出,而是采用为每种所需服务安装在网关上特殊代码(代理服务)的方式。
如果网络管理员没有为某种应用安装代理编码,那么该项服务就不被支持而不能通过防火墙系统。同时,代理编码可以配置成为只支持网络管理员认为必需的部分功能。
这样增强的安全带来了附加的费用:购买网关硬件平台、代理服务应用、配置网关所需的时间和知识。提供给用户的服务水平的下降,由于缺少透明性而导致缺少友好性的系统。同以往一样,仍要求网络管理员在机构安全需要和系统的易于使用性方面做出平衡。允许用户访问代理服务是很重要的,但是用户是绝对不允许注册到应用层网关中的。假如允许用户注册到防火墙系统中,防火墙系统的安全就会受到威胁,因为入侵者可能会在暗地里进行某些损害防火墙有效性的动作。例如,入侵者获取Root权限,安装特洛伊木马来截取口令,并修改防火墙的安全配置文件。
与包过滤型路由器(允许数据包在内部系统与外部系统之间直接流入和流出)不同,应用层网关允许信息在系统之间流动,但不允许直接交换数据包。允许在内部系统和外部系统之间直接交换数据包的主要危险是驻留在受保护网络系统中的主机应用避免任何由所允许的服务带来的威胁。一个应用层网关常常被称做“堡垒主机”(Bastion Host)。因为它是一个专门的系统,有特殊的装备,并能抵御攻击。
堡垒主机的硬件执行一个安全版本的操作系统。例如,如果堡垒主机是一个UNIX平台,那么它执行UNIX操作系统的安全版本,其经过了特殊的设计,避免了操作系统的脆弱点,保证防火墙的完整性。
只有网络管理员认为必需的服务才能安装在堡垒主机上。原因是如果一个服务没有安装,它就不能受到攻击。一般来说,在堡垒主机上安装有限的代理服务,如Telnet、DNS、FTP、SMTP及用户认证等。
用户在访问代理服务之前,堡垒主机可能要求附加认证。比如,堡垒主机是一个安装严格认证的理想位置。在这里,智能卡认证机制产生一个唯一的访问代码。另外,每种代理可能在授予用户访问权之前进行其自己的授权。
对代理进行配置,使得其只支持标准应用的命令集合的子集。如果代理应用不支持标准的命令,那么很简单,被认证的用户没有使用该命令的权限。对代理进行配置,使得其只允许对特定主机的访问。这表明,有限的命令/功能只能适用于内部网络中有限数量的主机。每个代理都通过登记所有的信息、每一次连接,以及每次连接的持续时间来维持一个详细的审计信息。审计记录是发现和终止入侵者攻击的一个基本工具。
每个代理都是一个简短的程序,专门为网络安全目的而设计。因此可以对代理应用的源程序代码进行检查,以确定其是否有纰漏及安全上的漏洞。在堡垒主机上每个代理都与所有其他代理无关。如果任何代理的工作产生问题,或在将来发现脆弱性,只需简单地卸载,不会影响其他代理的工作。并且,如果一些用户要求支持新的应用,网络管理员可以轻而易举地在堡垒主机上安装所需的应用。
代理除了读取初始化配置文件之外,一般不进行磁盘操作。这使得入侵者很难在堡垒主机上安装特洛伊木马程序或其他危险文件。每个代理在堡垒主机上都以非特权用户的身份运行在其自己的并且是安全的目录中。
1.2.2 防火墙的类型与实现
目前,防火墙的类型主要有包过滤型防火墙、双宿主主机防火墙、屏蔽主机防火墙和屏蔽子网防火墙。
1.包过滤型防火墙
包过滤型防火墙也称包(分组)过滤型路由器,是最基本、最简单的一种防火墙,位于内部网络与外部网络之间。内部网络的所有出入都必须通过包过滤型路由器,包过滤型路由器审查每个数据包,根据过滤规则决定允许或拒绝数据包。
包过滤型防火墙可以在一般的路由器上实现,也可以在基于主机的路由器上实现,其配置如图1-1所示。除具有路由器功能外,再装上分组过滤软件,利用分组过滤规则完成基本的防火墙功能。
图1-1 包过滤型防火墙的配置
1)包过滤型路由器的优点
容易实现,所需费用少,如果被保护网络与外界之间已经有一个独立的路由器,那么只需简单地加一个分组过滤软件便可保护整个网络。
包过滤型路由器,除了要花费时间去规划过滤器和配置路由器之外,实现包过滤几乎不再需要费用(或极少的费用),因为这些都包含在标准的路由器软件中。
由于Internet访问一般都是在WAN接口上提供,因此在流量适中并定义较少过滤器时对路由器的性能几乎没有影响。另外,分组过滤在网络层实现,不要求改动应用程序,也不要求用户学习任何新的东西,用户感觉不到过滤服务器的存在,因而使用方便。
2)包过滤型路由器的缺点
定义数据包过滤器会比较复杂,因为网络管理员需要对各种Internet服务、包头格式,以及每个域的意义有非常深入的理解。如果必须支持非常复杂的过滤,过滤规则集合会非常大及复杂,因而难以管理和理解。另外,在路由器上进行规则配置之后,几乎没有什么工具可以用来检验过滤规则的正确性,因此会成为一个脆弱点。
任何直接经过路由器的数据包都有被用做数据驱动式攻击的潜在危险。已经知道数据驱动式攻击从表面上来看是由路由器转发到内部主机上没有害处的数据,该数据包括了一些隐藏的指令,能够让主机修改访问控制和与安全有关的文件,使得入侵者能够获得对系统的访问权。
一般来说,随着过滤器数目的增加,路由器的吞吐量会下降。可以对路由器进行这样的优化抽取每个数据包的目标IP地址,进行简单的路由表查询,然后将数据包转发到正确的接口上去传输。如果打开过滤功能,路由器不仅必须对每个数据包做出转发决定,还必须将所有的过滤器规则施用给每个数据包。这样就消耗了CPU时间并影响系统的性能。
IP包过滤器可能无法对网络上流动的信息提供全面的控制。包过滤路由器能够允许或拒绝特定的服务,但是不能理解特定服务的上下文环境/数据。例如,网络管理员可能需要在应用层过滤信息以便将访问限制在可用的FTP或Telnet命令的子集之内,或者阻塞邮件的进入及特定话题的新闻进入。这种控制最好在高层由代理服务和应用层网关来完成。
2.双宿主主机防火墙
这种防火墙系统由一种特殊的主机来实现,这台主机拥有两个不同的网络接口,一端接外部网络,另一端接需要保护的内部网络,并运行代理服务器软件,故被称为双宿主主机防火墙,如图1-2所示。它不使用包过滤规则,而是在外部网络和被保护的内部网络之间设置一个网关,隔断IP层之间的直接传输。两个网络中的主机不能直接通信,两个网络之间的通信通过应用层数据共享或应用层代理服务来实现。
图1-2 双宿主主机防火墙
1)双宿主主机防火墙的优点
双宿主主机防火墙将受保护网络与外界完全隔离,由于域名系统DNS的信息不会通过受保护系统传到外界,所以站点系统的名字和IP地址对Internet是隐蔽的。
由于双宿主主机防火墙本身是一台主机,可以使其具有多种功能。另外,代理服务器提供日志记录,有助于发现入侵记录。
2)双宿主主机防火墙的缺点
代理服务器必须为每种应用专门设计,所有的服务依赖于网关提供,在某些要求灵活的场合不太适用。
如果防火墙只采用双宿主主机一个部件,一旦该部件出现问题,将使网络安全受到危害。如果重新安装操作系统而忘记关掉路由器,将失去安全性。
3.屏蔽主机防火墙
屏蔽主机防火墙由一台包过滤型路由器和一台堡垒主机组成,如图1-3所示。在这种结构下,堡垒主机配置在内部网络上,包过滤型路由器则放置在内部网络和外部网络之间。外部网络的主机只能访问该堡垒主机,而不能直接访问内部网络的其他主机。内部网络在向外通信时,必须先到堡垒主机,由该堡垒主机决定是否允许访问外部网络。这样堡垒主机成为内部网络与外部网络通信的唯一通道。
图1-3 屏蔽主机防火墙
在内部网络和外部网络之间建立了两道安全屏障,既实现了网络层安全,又实现了应用层安全。来自Internet的所有通信都直接到包过滤型路由器,它根据所设置的规则过滤这些通信。在多数情况下与应用网关之外机器的通信都将被拒绝。网关的代理服务器软件用自己的规则,将被允许的通信传送到受保护的网络上。在这种情况下,应用网关只有一块网络接口卡,因此它不是双宿主网关。
1)屏蔽主机网关防火墙的优点
屏蔽主机网关比双宿主网关更灵活。屏蔽主机网关可以设置成为使包过滤型路由器将某些通信直接传到Intranet的站点,而不是传到应用网关。
屏蔽主机网关中的包过滤型路由器的规则比单独的包过滤型路由器防火墙要简单,这是因为多数的通信将直接到应用网关。
主机屏蔽网关具有双重保护,安全性更高的特点。
2)屏蔽主机网关防火墙的缺点
屏蔽主机网关要求对两个部件认真配置以便能协同工作,系统的灵活性可能会因为走捷径而破坏安全。
即使包过滤型路由器的规则较简单,配置防火墙的工作也会很复杂。一旦堡垒主机被攻破,内部网络将完全暴露。
4.屏蔽子网防火墙
屏蔽子网防火墙是在屏蔽主机网关防火墙的配置上加上另一个包过滤型路由器,如图1-4所示。堡垒主机位于两个包过滤型路由器之间,是整个防御体系的核心,可被认为是应用层网关,可以运行各种代理服务程序,对于出站服务不一定要求所有的服务都经过堡垒主机代理,但对于入站服务应要求所有服务都通过堡垒主机。
图1-4 屏蔽子网防火墙
在屏蔽主机网关防火墙中,堡垒主机最易受到攻击,而且内部网对堡垒主机是完全公开的,入侵者只要破坏了这一层的保护,那么入侵也就成功了。屏蔽子网防火墙就是在被屏蔽主机结构中再增加一台路由器的安全机制,这台路由器的意义就在于它能够在内部网和外部网之间构筑出一个安全子网,该子网又被称为非军事区(DMZ),从而使得内部网与外部网之间有两层隔断。用子网来隔离堡垒主机与内部网,就能减轻入侵者冲开堡垒主机后给内部网带来的冲击力。
1)屏蔽子网防火墙的优点
提供多层保护,一个入侵者必须通过两个包过滤型路由器和一个应用网关,是目前最为安全的防火墙系统,它可以对数据服务进行更为灵活的控制。
2)屏蔽子网防火墙的缺点
屏蔽子网防火墙要求的设备和软件模块最多,整个系统的配置所需费用高且复杂,适合大、中型企业,以及对安全性要求高的单位。