FreeBSD防火墙技术
将本地网络连接到Internet之后,Internet上的计算机就能自由访问本地网络中的计算机了。显然,由于本地网络属于同一个组织,本地网络中的计算机相互之间都可以信任,而外部Internet上的计算机可能来自任意地方,因此不可信任。如何给可信任的本地网络中的计算机提供资源,而不给其他Internet上的计算机提供访问或入侵的机会,同时又不妨碍本地网络中的计算机正常访问Internet,就成为了建立内部网络的一个要求。当然,针对每个计算机进行设置,也可以达到屏蔽外部网络访问的目的。然而这样做一方面不太方便,对每个计算机都要进行设置,另一方面不太安全,内部网络中不是每台计算机使用的操作系统都具备良好的保护措施,而外部网络中的计算机可以通过这些不安全的操作系统进入内部网络,提供了攻击的途径。因此更好的办法是御入侵者于网络之外,在内部网络和外部网络中架设一个防火墙,所有的访问都需要经过它进行验证,对内部网络提供了保护作用。
- 包过滤技术
为了对内部网络提供保护,就有必要对通过防火墙的数据包进行检查,例如检查其源地址和目的地址、端口地址、数据包的类型等,根据这些数据来判断这个数据包是否为合法数据包,如果不符合预定义的规则,就不将这个数据包发送到其目的计算机中去。由于包过滤技术要求内外通信的数据包必须通过使用这个技术的计算机,才能进行过滤,因而包过滤技术必须用在路由器上。因为只有路由器才是连接多个网络的桥梁,所有网络之间交换的数据包都得经过它,所以路由器就有能力对每个数据包进行检查。
通常的路由器都支持基本的包过滤能力,路由器在转发IP数据包的时候,缺省状态并不涉及数据包中的内容,只是按照IP包的目的地址和本身的路由表进行转发。为了使得它进行包过滤,就必须定义一系列过滤规则,使得路由器能进行过滤。通常情况下,过滤能针对IP地址、端口地址、连接类型等进行设定,还能够针对数据包进行转发,将数据包转发到合适的计算机中。
在包过滤的条件下,内部网络的计算机还是直接和外部计算机相通信的。由于这是直接在IP层工作,可以适合所有的应用服务,灵活性和效率都较高。但也存在缺点,比如不能了解应用协议的具体形式,也不能提供清晰的日志记录等。
- 代理服务
代理服务是另一种防火墙技术,与包过滤不同,它直接和应用服务程序打交道。它不会让数据包直接通过,而是自己接收了数据包,并对其进行分析。当代理程序理解了连接请求之后,它将自己启动另一个连接,向外部网络发送同样的请求,然后将返回的数据发送回那个提出请求的内部网计算机。
虽然代理服务器不必连接到两个网络上就能提供代理服务,然而要想通过代理服务器限制网络之间的通信,提供代理服务的计算机必须连接到两个网络上,所有的网络之间通信都需要通过它的代理才行,而不能直接连接到Internet上。因此代理服务器也不能打开包转发能力,如果代理服务器同时也是路由器,那么内部计算机就可以通过它的路由能力而非代理能力在不同的网络之间通信,代理服务器就起不到防火墙的作用。除非特定情况下,才能设置路由能力,此时也应该配置了更严格的包过滤规则,以保护网络安全。
在有代理服务的情况下,内部网络的计算机必须配置具体的代理服务使用的代理服务器,它只同代理服务器打交道,而由代理服务器发送请求并返回结果。代理服务器必须要了解它要代理的服务,并为每一种服务都提供详细的访问日志记录,并能针对不同的使用者进行认证。
一般来讲,由于代理服务器要针对一个请求启动一个代理服务连接,因此代理服务器效率不高,但是如果针对具体的服务应用,可以在代理服务器上配置大量的缓冲区,通过缓冲区可以提高其工作效率,提供更高的性能。例如对于使用HTTP 代理服务器时,代理服务器就能在缓冲区中查找到同样的数据,因而不必再次访问Internet,减少了对宝贵的Internet 带宽的占用。代理服务器不仅是一个防火墙技术,它还能用来提高访问Internet的效率。
常用的代理服务器有http代理,ftp代理等,所有的代理服务能力都需要客户软件的支持,这也意味着当用户要使用代理功能的时候,需要设置客户软件,如浏览器,如果客户软件不支持代理功能,就无法使用代理服务器。然而,为了减轻配置负担、利用代理服务器的缓冲能力,可以设置一种透明代理服务器,这种方式不需要设置客户软件,通过设置路由器,将本来发送到其他计算机的IP数据包,依据IP地址和端口转发到代理服务器中。
- 网络地址翻译
在TCP/IP开始开发的时候,没有人会想象到它发展的如此之快。当前使用的IPv4地址空间为32位大小,因而地址资源已经十分紧张了。而下一代的IPv6还没有得到大家的认可。FreeBSD虽然有支持IPv6的开发计划,正由于整个Internet上IPv6还没有实施,因此FreeBSD还没有将以开发的IPv6合并入正式发布的系统中去。
为了解决地址紧张的问题,提出了网络地址翻译(Network Address Translation, NAT)的方法。NAT能处理每个IP数据包,将其中的地址部分进行转换,将对内部和外部IP进行直接映射,从一批可使用的IP地址池中动态选择一个地址分配给内部地址,或者不但转换IP地址,也转换端口地址,从而使得多个内部地址能共享一个外部IP地址。
动态分配外部IP地址的方法只能有限的解决IP地址紧张的问题,而让多个内部地址共享一个外部IP地址的方式能更有效的解决IP地址紧张的问题。让多个内部IP地址共享一个外部IP地址,就必须转换端口地址,这样内部不同IP 地址但具有同样端口地址的数据包就能转换为同一个IP地址而端口地址不同,这种方法又被称为端口地址转换(Port Address Translation, PAT),或者称为IP伪装(IP masquerading)
网络地址翻译也是一个重要的防火墙技术,因为它对外隐藏了内部的网络结构,外部攻击者无法确定内部计算机的连接状态。并且不同的时候,内部计算机向外连接使用的地址都是不同的,给外部攻击造成了困难。同样NAT也能通过定义各种映射规则,屏蔽外部的连接请求,并可以将连接请求映射到不同的计算机中。
网络地址翻译都和IP数据包过滤一起使用,就构成一种更复杂的包过滤型的防火墙。仅仅具备包过滤能力的路由器,其防火墙能力还是比较弱,抵抗外部入侵的能力也较差,而和网络地址翻译技术相结合,就能起到更好的安全保证。
- 主动监测技术
无论是包过滤,还是代理服务,都是根据管理员预定义好的规则提供服务或者限制某些访问。然而在提供网络访问能力和防止网络安全方面,显然存在矛盾,只要允许访问某些网络服务,就有可能造成某种系统漏洞,然而如果限制太严厉,合法的网络访问就受到不必要的限制。代理型的防火墙的限制就在这个方面,必须为一种网络服务分别提供一个代理程序,当网络上的新型服务出现的时候,就不可能立即提供这个服务的代理程序。事实上代理服务器一般只能代理最常用的几种网络服务,可提供的网络访问十分有限。
为了在开放网络服务的同时也提供安全保证,必须有一种方法能监测网络情况,当出现网络攻击时就立即告警或切断相关连接。主动监测技术就是基于这种思路发展起来的,它维护一个记录各种攻击模式的数据库,并使用一个监测程序时刻运行在网络中进行监控,当一旦发现网络中存在与数据库中的某个模式相匹配时,就能推断可能出现网络攻击。由于主动监测程序要监控整个网络的数据,因此需要运行在路由器上,或路由器旁能获得所有网络流量的位置。由于监测程序会消耗大量内存,并会影响路由器的性能,因此最好不在路由器上运行。
主动检测方式作为网络安全的一种新兴技术,由于需要维护各种网络攻击的数据库,因此需要一个专业性的公司维护。理论上这种技术能在不妨碍正常网络使用的基础上保护网络安全,然而这依赖于网络攻击的数据库和监测程序对网络数据的智能分析,而且在网络流量较大时,使用sniffing技术的监测程序可能会遗漏数据包信息,因此这种技术主要用于要求较高,只用于对网络安全要求非常高的网络系统中,常用的网络并不需要使用这种方式。