第八章防火墙的构造与选择8.1防火墙概述8.1.1什么是防火墙防火墙是在内部网与外部网之间实施安全防范的系统,可被认为是一种访问控制机制,用于确定哪些内部服务允许外部访问,以及允许哪些外部服务访问内部服务。图8.1防火墙示意图一个网络防火墙通常安装在被保护的内部网与互联网的连接点上。各站点的防火墙的构造是不同的,通常一个防火墙由一套硬件(一个路由器,或路由器的组合,一台主机)和适当的软件组成。组成的方式可以有很多种。这要取决于站点的保安要求、经费的多少以及其他的综合因素。8.1.2防火墙的基本类型防火墙的基本类型有:(1)包过滤型(PacketFilter):包过滤功能通常由路由器来完成,大多数商用路由器都提供了包过滤的功能。另外,PC机上同样可以安装包过滤软件。包过滤规则以IP包信息为基础,对IP源地址、IP目标地址、封装协议(TCP/WP/ICMP/IPTunne1)、端口号等进行筛选。包过滤在OSI协议的网络层进行。(2)代理服务型(ProxyService):代理服务型防火墙通常由两部分构成;服务器端程序和客户端程序。客户端程序与中间节点(Proxyserver)连接,中间节点再与要访问的外部服务器实际连接。与包过滤防火墙不同的是,内部网与外部网之间不存在直接的连接,同时提供日志(Log)及审计(Audit)服务。代理服务运行在OSI协议的应用层。(3)复合型(Hybrid)防火墙:把包过滤和代理服务两种方法结合起来,构成复合型的防火墙。所用主机称为堡垒主机(BastionHost),负责提供代理服务。防火墙基本的安全保护规则可以分为以下两种:(1)一切未被允许的就是禁止的。(2)一切未被禁止的就是允许的。8.2防火墙相关概念与定义8.2.1一些有关的定义(1)防火墙:限制被保护的网络与互联网络之间,或者与其他网络之间相互进行信息存取传递操作的部件或部件集。(2)主机:与网络系统相连的计算机系统。(3)堡垒主机:是指一个计算机系统,它对外部网络(互联网络)暴露户的主要连接点,所以非常容易被侵入,因此这个系统需要严加保护。(4)双宿主主机:具有至少两个网络接口的通用计算机系统。(5)包:在互联网络上进行通信时的基本信息单位。(6)路由:为转发的包分组选择正确的接口和下一个路径片段的过程。(7)包过滤:设备对进出网络的数据流进行有选择的控制与操作。包过滤操作通常在选探路由的同时对数据包进行过滤操作(通常是对从互联网络到内部网络的包进行过滤)。用户可以设定一系列的规则,指定允许哪些类型的数据包可以流人或流出内部网络(例如只允许来自某些指定的IP地址的数据包或者内部网络的数据包可以流向某些指定的端口),哪些类型的数据包的传输应该被阻断。包过滤操作可以在路由器上进行,也可以在网桥.甚至在一个单独的主机上进行。(8)参数网络;为了增加一层安全控制,而在外部网络与内部网络之间增加的一个网络。参数网络有时也被称为停火带(非军事区)。(9)代理服务器:代表内部网络用户与外部网络服务器进行信息交换的程序。它将内部用户的请求送达外部服务器,同时将外部服务器的响应再回送给用户。8.2.2包过滤包过滤系统是有选择地让数据包在内部与外部主机间进行交换。包过滤系统将根据站点的安全规则允许某些数据包流过同时又阻断某些数据包,即有选择的路由,如图8.2所示。这种在包过滤防火墙中使用的路由器称为过滤路由器。图8.2用过滤路由器进行包过滤普通路由器与包过滤路由器间的区别表现为:普通路由器仅仅是简单检查一下每个数据包的目标地址,同时为数据包选择一个它所知道的最佳路囱,将这个数据包发往目的地址;路由器对数据包的操作完全由数据包的目的地址决定。而过滤路由器对数据包的检查将更为仔细。除了决定该数据包能否被它路出到目的地址之外,过滤路由器还要决定是否应该对这个包进行路由。是否对这个包进行路由是依据站点的安全规则而定。地点可依据自己的安全规则来配置路由器。每个数据包的头部信息主要包含以下内容:(1)IP源地址。(2)IP目标地址。(3)协议(表明该数据包是TCP、WP或ICMP包)。(4)TCP或者UDP源接口。(5)TCP或者UDP目标接口。(6)ICMP信息类型。另外,路由器也会得到一些在数据包头部信息中没有的、关于数据包的其他信息。●数据包要到达的端口。●数据包要出去的端口。一个过滤路由器的包过滤规则可以像下面这样来设定:●除了是进人内部网络的SMTP连接外,阻断所有来自干外部的连接。●阻断内部网络与某些认为不可靠的外部网络的所有连接。●允许使用电子邮件和文件传输服务,但是阻断诸如:TFTP、XWindowsSystem、RPC和R类服务(如RLOGIN、RSB、RCP)等较为危险的服务。8.2.3代理服务代理服务是运行在防火墙主机上的一些特定的应用程序或者服务器程序。而所谓的防火墙主机是指有一个网络接口连接互联网络而另一个接口连接内部网络的双宿主主机;或其他既能连接互联网络又能连接内部网络的堡垒主机。这些程序将用户对互联网络的服务请求依据已制定的安全规则向外提交。代理服务替代了用户与互联网络的直接连接。对于用户请求的外界服务而言,代理服务相当于一个网关。代理服务位于内部网络的用户和外部网络的服务(一般是互联网络)之间,它在很大程度上是透明的。在代理服务中,内外部各站点之间的直接连接被切断了,所有的数据包都必须经过代理服务器转发。代理服务给用户的假象是:用户是直接与真正的外部服务器相连的;而在服务器端代理服务给出的假象是:外部服务器是直接面对连在代理服务器上的用户。图8.3用一个双宿主主机执行代理服务如图8.3所示,代理服务要求有两个部件,一个代理服务器和一个代理客户。在这种情况下,代理服务器是一个运行代理服务程序的双宿主主机;而代理客户是普通客户程序(如一个Telnet或FTP客户)的特别版本,它与代理服务器交互而并不与真正的外部服务器相连。如若普通客户按照一定的步骤操作,普通客户的程序就直接可用作代理客户程序。代理服务器依据一定的安全规则来评测代理客户的网络服务请求,然后决定是支持还是否决该请求。如果代理服务器支持该请求,代理服务器就代表客户与真正的外部服务器相连,并将外部服务器的响应传送回给代理客户。代理服务是一种软件防火墙的解决方法,而不是防火墙的完整结构。一般做法是把代理服务和后而将要讨论到的任何一种防火墙结构进行组合。8.2.4多种技术的混合使用仅使用某种单个技术往往是不足构建一个正确完整的防火场的。实用中要根据提供给客户的服务种类和安全保护级别,分析由此而产生的各类问题.混合使用多种技术方可保障安全。具体采用何种技术主要是依据资金、开发时间的限制和其他一些因素。对于某些协议(如Telnet和SMTP)用包过滤技术比较有效;而对子其他的一些协议(如FTP、Archie和)则用代理服务比较有效。许多防火墙产品混合使用包过滤与代理服务这两种技术。8.3防火墙的基本体系结构8.3.1双宿主主机结构双宿主主机结构是围绕着至少具有两个网络接口的双宿主主机而构成的。这种主机还可以充当与这台主机相连的若干网络之间的路由器。它能将一个网络的IP数据包在无安全控制下传递给另外一个网络。但是,在将一台双宿主主机安装到防火墙结构中时,首先要使双宿主主机的这种路由功能失效。从一个外部网络(如互联网络)来的IP数据包不能无条件地传递给另外的一个网络(如内部网络)。双宿主主机内外的网络均可与双宿主主机实施通信,但内外网络之间不可直接通信。内外部网络之间的IP数据流放双宿主主机完全切断。基于双宿主主机的防火墙结构相当简单,双宿主主机位于内部网络之间并与内外部网络相连。图8.4双宿主主机结构8.3.2主机过滤结构双宿主主机结构是由一台同时连接内外部网络的双宿主主机提供安全保障的,而主机过滤结构则不同,在主机过滤结构中提供安全保护的主机仅仅与内部网相连。另外,主机过滤结构还有一台单独的路由器(过滤路由器)。图8.5主机过滤结构8.3.3子网过滤结构这种结构中的堡垒主机位于内部网络,而过滤路由器按如下规则过滤数据包:任何外部网(互联网络)的主机都只能与内部网的堡垒主机建立连接,甚至只有提供某些类型服务的外部网的主机才被允许与堡垒主机建立连接。任何外部系统对内部网络的操作都必须经过堡垒主机。图8.6子网过滤结构子网过滤结构就是在主机过滤结构中再增加一层参数网络的安全机制,使得内部网与外部网之间有二层隔断。用参数网络来隔离堡垒主机与内部网.就能减轻入侵者冲开堡垒主机后而给内部网的冲击力。入侵者即使冲过堡垒主机也不能对内部网进行任意操作.而只可进行部分操作。在最简单的子网过滤结构中,有两台都与参数网络相连的过滤路由器。一台位于参数网络与内部网之间,而另一台位于参数网络与外部网之间。在这种结构下,入侵者要攻击到内部网必须通过两台路由器的安全控制。即使入侵者通过了堡垒主机,他还必须通过内部路由器才能抵达内部网。这样,整个网络安全机制就不会因一点破攻破而全部瘫痪。8.4防火墙体系结构的种种变化和组合8.4.l使用多堡垒主机可以在防火墙结构中配置多台堡垒主机,这样做的道理在于:提高系统效能,增加系统冗余,分离数据和程序。图8.7使用两台堡垒主机的结构8.4.2合并内外部路由器如果路由器具有足够的功能与灵活性,可将内、外部路由器的功能合并由一台路由器来完成。这样做需要一台各端口可以分别设置输入/输出的路由器。如图8.8所示,使用内、外部路由器合一的路由器,仍需参数网络(与路由器的一个端口相连)。该路由器的另一端口与内部网相连。凡符合路由器安全规则的数据包可在内、外部网间互传。图8.8使用内、外部路由器合并的结构8.4.3合并堡垒主机与外部路由器在防火墙结构中也可以采取让双宿主主机同时充当堡垒主机和外部路由器的结构。举例如下:假定只有一个拨号方式的SLIP或PPP与互联网络相连,那可在堡垒主机上运行一个诸如晨星(MorningStar)的软件包而让该主机同时充当堡垒主机与外部路由器的角色。这样做在功能上与前面讨论的三组件(内部路由器、堡垒主机、外部路由器)结构完全一样。图8.9堡垒主机与外部路由器合并的结构8.4.4将堡垒主机与内部路由器合并如果将堡垒主机与内部路由器合并,其实已从根本上改变了防火堵的结构。在第一种结构中(分别用一台内部路由器与一台堡垒主机)会拥有一个过滤子网,参数网络上不传输任何纯粹的内部信息流。即使入侵者成功地穿过堡垒主机.他还必须穿过内部路由器方可抵达内部网。在第二种结构中(堡垒主机与内部路由器合并)就只有一个屏蔽主机.如果堡垒主机校击破,那在内部网与堡垒主机之问就再也没有对内部网的保护机制了。参数网络的一个主要功能是防止从堡垒主机上偷看内部信息流,而将堡垒主机与内部路由器合二为一会使所有的内部信息流对堡垒主机公开。图8.10堡垒主机与内部路由器合并的结构8.4.5采用多内部路由器结构图8.11使用多内部路由器结构用多台内部路由器连接参数网络与内部网的各个部分会引发许多问题。比如,内部网上某站点可能选定经由参数网络到达另一个内部站点作为最快路由。有时,由于某台路由器的包过滤的阻断而使站点间不能建立连接。内部信息流因为经过参数网络,而会让突破堡垒主机的人侵者偷看到。另一个可能是需要采用多个内部网,由于技术和组织结构的原因或出于其他因素的考虑,它们不能共享一台路由器而需使用多台路由器。针对这种情况一个最简单的解决方法是让每个内部网分别接到一台内部路由器的不同端口(如图8.12所示)。这台路由器的配置将比较复杂,但不会产生因多台内部路由器而引起的麻烦。如果内部网的数目太多,或其他不可克服的原因必须使用多台内部路由器,则可以考虑建立一个内部骨干网,由它再通过一台路由器连到参数网络上(如图8.13所示)。图8.12多个内部网(一个合路由器)图8.13多个内部网(多台路由器)8.4.6使用多外部路由器图8.14多外部路由器结构在有些情况下,把一个参数网络用多台外部路由器与外界相连也是一个好方案。比如:系统与外部网间多个连接,或系统与互联网络间有一个连接,同时与其他网络还