目前常用的防火墙有两种结构:即子网过滤结构的防火墙和主机过滤的防火墙。对于这两种结构的防火墙我们所提供的基本服务包括:终端访问、文件传输、电子邮件、Usenet新闻、www(万维网)浏览以及域名服务DNS。
一、子网过滤结构的防火墙
子网过滤结构的防火墙有双路由器和单路由器等不同形式的结构,也可以使用两个双端口的路由器或者一个三端口的路由器。对于单路由器子网过滤结构与双路由器子网过滤结构的防火墙工作原理是一样的,其效果都很好,但单路由器子网过滤结构在价格上要便宜一些。我们从使用双路由器子网过滤结构为例,因为它在概念上要简单一些。
双路由器结构的子网过滤结构防火墙结构如图1所示。这种结构提供了良好的安全性(包括多层次冗余),而且已被大多数用户采用。
1)参数网络――将堡垒主机与内部网络隔离开来,这样,即使堡垒主机出现安全缺口,也不会马上影响内部网络;
2)外部路由器――将屏蔽连接到外部世界。如有可能,外部路由器也提供对堡垒主机、内部路由器和内部网络的某些保护;
3)内部路由器――保护内部网络,使之不受来自外部世界、及来自堡垒主机(当堡垒主机被侵袭后)的攻击;
4)堡垒主机――作为屏蔽与外界的主要接触点。除了构成防火墙本身的机器外,假定在内部网络中的计算机(内部主机)还担任如下角色(任意一台内部计算机都可能担负如下的任意一种、甚至全部的任务):
邮件服务器;
Usenet新闻服务器;
DNS域名服务器;
各种因特网服务的客户。
每一种内部服务都可直接提供(通过包过滤)或间接提供(通过运行在堡垒主机上的代理服务器)。
提供服务的条件:
假定系统中的内部用户是可信的,他们不会故意去试图绕过防火墙,并且也没有必要去监视和记录他们的因特网活动;
在屏蔽的内部网和参数网中,使用的是被授权赋予的正确的IP地址,并且已通过恰当的路由来引导(即屏蔽被授予地址,而且被网络服务供应商恰当地路由和通告到因特网),如果没有这样的授权地址,那么唯一的选择是通过代理服务,因为不能允许具有未授权IP地址的包被发到因特网上,即使它们已被发出了,相应的回答也没办法返回;
假定参数网和内部网使用了不同的网络号码,从而可以很容易地检测出伪造的包。
二、主机过滤结构的防火墙
主机过滤结构的防火墙,它没有参数网络,也没有内部路由器,通常也没有堡垒主机,而是由一台路由器和一台服务主机组成的。由一台服务主机向内部和外部客户提供因特网服务,路由器则用来保护内部网络和控制对它的访问。我们把这种结构称之为服务主机而不是堡垒主机,是因为它通常还要担任其它许多角色。比如,它可能是邮件服务器、Usenet新闻服务器和本站点的DNS服务器,它还可能是文件服务器、打印服务器等等,甚至它可能是本站点的唯一一台计算机。
把主机过滤结构的防火墙与子网过滤结构的防火墙进行比较,就不难发现主机过滤结构是一种安全性能低、价格便宜的一种选择,主机过滤结构通常被费用有限的比较小的站点采用。
服务主机也是本站点的邮件服务器、新闻服务器和域名服务器,但它不是本站点的唯一机器;
与子网过滤结构的防火墙相同,内部用户是可信赖的,他们不会主动去试图绕过防火墙,也没有特别的需要去监视或记录他们的因特网活动;
本站点中使用的是被授权赋予的合法IP地址,并且由服务提供商正确地路由和通告到因特网的其余部分。
下面我们来讨论主机过滤结构的防火墙应当提供那些基本的因特网服务。
Telnet:通过包过滤可以安全、方便地提供Telnet。本例将按此方法做。在前一节里我们曾经讨论过,在较大型的配置中,通过代理服务来提供Telnet,尽管有其优点,但通常来讲太昂贵了,在主机过滤结构中则显得更加笨拙。类似地,在较大配置中难于提供进入的Telnet服务,在这里还这样做简直等于自取灭亡,因为这将危及服务主机,实际上就是危及了整个网络系统。因此,我们不提供外部用户进入的Telnet服务。
FTP:与子网过滤结构一样,如果我们的内部FTP客户程序支持被动模式FTP,那么通过包过滤就可以安全、方便地提供FTP服务。如果想要支持禁止使用被动模式的FTP客户程序,那么就需要在服务主机上建立FTP代理服务器。如果需要,可以支持被动模式和普通模式的FTP客户程序,但对一个较小的站点来讲就没有必要。对较小的站点而言,最好只提供其中的某一种,而不是试图两样都提供。在此例中,我们仅支持被动模式的FTP。
注意,为了使用在服务主机上的FTP代理服务器,用户的过滤路由器必须允许这样的TCP连接,它们源自外部系统的23号端口,目的端口是服务主机的大于1023的端口。对一个通常的堡垒主机,这不成问题,因为其它服务不使用这个端口。然而,对服务主机而言就可能不是这样,这些端口也有可能保留做其它用途。
在任何配置中,进入的用户FTP与进入的Telnet走的是同样的路,在Telnet服务中我们已经决定禁止外部用户进入的Telnet,同样也要禁止外部用户进入的FTP。为什么?因为在子网过滤结构中,当进入的匿名FTP到达堡垒主机时,其风险是可以承受的,然而,进入的匿名FTP到达服务主机时,这种服务所造成的危险是不可估量的,因为这里可能有机密数据和对内部网络的安全访问权限,所以我们也必须禁止它。
SMTP:在主机过滤结构中,可能只有一种办法来建立SMTP服务。进入的邮件应当通过DNSMX记录被引导到服务主机上,外出邮件应当通过服务主机发出。事实上没有其它更合适的办法。正如我们在上面所讨论的那样,让进入邮件直接到达所有的内部机器是不适宜的。同样,一旦已将进入邮件通过一个单一的点引导进来,那么要将外出邮件通过那里发出,比把邮件直接发出实际上更容易(注意不是指更安全)。
NNTP:与SMTP一样,在主机过滤结构中也许只有一种建立NNTP的办法,这就是用另外一台内部机器作为Usenet新闻服务器,并且允许NNTP服务直接通向它。我们将把服务主机当作新闻服务器。然而,最好是干脆放弃新闻服务,当然,这取决于新闻服务会给机器带来多大的负载,以及服务主机的重要程度。
HTTP:正如在前面例子中所说的那样,HTTP可以通过包过滤直接提供,或者通过代理服务器间接地提供。然而,最有意义的还是通过带有缓冲的代理服务器,比如CERNHTTP服务器来间接地提供HTTP服务。这样做的理由是:由于缓冲的作用,性能也就提高了。
在此例中,假定将要通过运行在服务主机上的一个CERN代理服务器来提供HTTP服务。由于风险的原因(这种风险由于服务主机的敏感位置而进一步复杂化了),只提供本地用户向外的服务,对外部来的客户将关闭此项服务。
DNS:与其它大多数服务一样,在主机过滤结构中,实际上只有一个比较合适的地方可以安放DNS服务器,即放在服务主机上。