防火墙的实现从层次上大体上可以分两种:包过滤和应用层网关。
包过滤 是在IP层实现的,因此,它可以只用路由器完成。报文过滤根据报文的源IP地址、目的IP地址、协议类型(TCP包、UDP包、ICMP包)、 源端口、目的端口及报文传递方向等报头信息来判断是否允许报文通过。现在也出现了一种可以分析报文数据区内容的智能型报文过滤器。
报文过滤器的应用非常广泛,因为CPU用来处理报文过滤的时间可以忽略不计。而且这种防护措施对用户透明,合法用户在进出网络时,根本感觉不到它的存在,使用起来很方便。报文过滤另一个也是很关键的弱点是不能在用户级别上进行过滤,即不能识别不同的用户和防止IP地址的盗用。如果攻击者把自己主机的IP地址设成一个合法主机的IP地址,就可以很轻易地通过报文过滤器。
报文过滤的弱点可以用应用层网关解决。在应用层实现防火墙,方式多种多样,下面是几种应用层防火墙的设计实现。
1、应用代理服务器(Application Gateway Proxy)
在网络应用层提供授权检查及代理服务。当外部某台主机试图访问受保护网络时,必须先在防火墙上经过身份认证。通过身份认证后,防火墙运行一个专门为该网络设计的程序,把外部主机与内部主机连接。在这个过程中,防火墙可以限制用户访问的主机、访问时间及访问的方式。同样,受保护网络内部用户访问外部网时也需先登录到防火墙上,通过验证后,才可访问。
应用网关代理的优点是既可以隐藏内部IP地址,也可以给单个用户授权,即使攻击者盗用了一个合法的IP地址,也通不过严格的身份认证。因此应用网关比报文过滤具有更高的安全性。但是这种认证使得应用网关不透明,用户每次连接都要受到认证,这给用户带来许多不便。这种代理技术需要为每个应用写专门的程序。
2、回路级代理服务器
即通常意义的代理服务器,它适用于多个协议,但不能解释应用协议,需要通过其他方式来获得信息,所以,回路级代理服务器通常要求修改过的用户程序。
套接字服务器(Sockets Server)就是回路级代理服务器。套接字(Sockets)是一种网络应用层的国际标准。当受保护网络客户机需要与外部网交互信息时,在防火墙上的套服务器检查客户的User ID、IP源地址和IP目的地址,经过确认后,套服务器才与外部的服务器建立连接。对用户来说,受保护网与外部网的信息交换是透明的,感觉不到防火墙的存在,那是因为网络用户不需要登录到防火墙上。但是客户端的应用软件必须支持 “Socketsified API”,受保护网络用户访问公共网所使用的IP地址也都是防火墙的IP地址。
3、代管服务器
代管服务器技术是把不安全的服务如FTP、Te.net等放到防火墙上,使它同时充当服务器,对外部的请求作出回答。与应用层代理实现相比,代管服务器技术不必为每种服务专门写程序。而且,受保护网内部用户想对外部网访问时,也需先登录到防火墙上,再向外提出请求,这样从外部网向内就只能看到防火墙,从而隐藏了内部地址,提高了安全性。
4、IP通道(IP Tunnels)
如果一个大公司的两个子公司相隔较远,通过Internet通信。这种情况下,可以采用IP Tunnels来防止Internet上的黑客截取信息,从而在Internet上形成一个虚拟的企业网。
5、网络地址转换器(NAT Network Address Translate)
当受保护网连到Internet上时,受保护网用户若要访问Internet,必须使用一个合法的IP地址。但由于合法Internet IP地址有限,而且受保护网络往往有自己的一套IP地址规划(非正式IP地址)。网络地址转换器就是在防火墙上装一个合法IP地址集。当内部某一用户要访问Internet时,防火墙动态地从地址集中选一个未分配的地址分配给该用户,该用户即可使用这个合法地址进行通信。同时,对于内部的某些服务器如Web服务器,网络地址转换器允许为其分配一个固定的合法地址。外部网络的用户就可通过防火墙来访问内部的服务器。这种技术既缓解了少量的IP地址和大量的主机之间的矛盾,又对外隐藏了内部主机的IP地址,提高了安全性。
6、隔离域名服务器(Split Domain Name Server )
这种技术是通过防火墙将受保护网络的域名服务器与外部网的域名服务器隔离,使外部网的域名服务器只能看到防火墙的IP地址,无法了解受保护网络的具体情况,这样可以保证受保护网络的IP地址不被外部网络知悉。
7、邮件技术(Mail Forwarding)
当防火墙采用上面所提到的几种技术使得外部网络只知道防火墙的IP地址和域名时,从外部网络发来的邮件,就只能送到防火墙上。这时防火墙对邮件进行检查,只有当发送邮件的源主机是被允许通过的,防火墙才对邮件的目的地址进行转换,送到内部的邮件服务器,由其进行转发。