服务器的网络安全中从头部署新的防火墙策略是一件复杂的事情,你要综合考虑许多方面。一般来说,防火墙有两种工作模式,称为路由模式和透明模式,在路由模式下,防火墙就象一个路由器,能进行数据包的路由。
不同的是,它能识别网络第四层协议(即传输层)的信息,因此它能基于TCP/UDP端口来进行过滤。在该模式下,防火墙本身要配备2个或多个网络地址,你的网络结构会被改变。在透明模式下,防火墙更象一个网桥,它不干涉网络结构,从拓扑中看来,它似乎是不存在的(因此称为透明)。但是,透明模式的防火墙同样具备数据过滤的功能。透明模式的防火墙不具备IP地址。这2种模式的防火墙都提供网络访问控制功能,例如你可以在防火墙上设置,过滤掉来自因特网的对服务器的NFS端口的访问请求。
在网络中使用哪种工作模式的防火墙取决于你的网络环境。一般来说,如果你的服务器使用真实IP地址(一般是IDC分配给你的),会选择防火墙的透明模式。因为在该模式下,你的服务器看起来象直接面对互联网一样,所有对服务器的访问请求都直接到达服务器。当然,在数据包到达服务器之前会经过防火墙的检测,不符合规则的数据包会被丢弃掉(从服务器编程的角度看,它不会觉察到数据包实际已被处理过)。
实际上为了安全起见,很多服务器都采用私有IP地址 (例如172.16.0.0/16和192.168.0.0/24都属于私有IP地址),如果这些服务器不必对外提供服务,那么就最安全不过了,如果要对外提供服务,就有必要通过防火墙的NAT(网络地址转换)来满足来自因特网的访问要求。NAT是防火墙的一项功能,它实际上工作在路由模式下。
大多数防火墙都会区分所谓的正向NAT和反向NAT,所谓正向NAT就是指从内网出去的数据包,在经过防火墙后,包头会被改写,源IP被改写成防火墙上绑定的IP地址(或地址池,肯定是公网真实IP),源端口也会有所改变,回来的数据包经过同样处理,这样就保证内网具有私有IP的主机能够与因特网进行通信。在反向NAT的实现中,会将服务器的公网IP绑定在出口处的防火墙上,服务器只会使用一个私有IP,防火墙会在它的公网IP和这个私有IP之间建立一个映射,当外网对这台服务器的请求到达防火墙时,防火墙会把它转发给该服务器。当然,在转发之前,会先匹配防火墙规则集,不符合规则的数据包将被丢弃。
使用反向NAT,会大大提高服务器的安全性。因为任何用户的访问都不是直接面对服务器,而是先要经过防火墙才被转交。而且,服务器使用私有IP地址,这总比使用真实地址要安全。在抗拒绝服务攻击上,这种方式的成效更显然。但是,相对于透明模式的防火墙,采用反向NAT方式的防火墙会影响网络速度。如果你的站点访问流量超大,那么就不要使用该种方式。值得一提的是,CISCO 的PIX 在NAT的处理上性能异常卓越。
另外一种情况是,服务器使用真实IP地址,防火墙配置成路由模式,不使用它的NAT功能。这种情况虽然可以实现,但会使你的网络结构变得很复杂,似乎也不会带来效益的提高。
大多数IDC的机房不提供防火墙服务,你需要自己购买和配置使用防火墙。你完全可以按透明模式或NAT模式来配置,具体怎么配取决于你的实际情况。有些IDC公司会提供防火墙服务,作为他们吸引客户的一个手段。一般来说,他们的防火墙服务会收费。
如果你的服务器在IDC提供的公共防火墙后面,那么就有必要仔细考虑你的内网结构了。如果IDC提供给你的防火墙使用透明模式,也即是你的服务器全部使用真实IP地址,在这种情况下,除非你的服务器数量足够多(象我们在北京有500多台),那么在你的逻辑网段里肯定还有其他公司的主机存在。
这样,虽然有防火墙,你的系统管理任务也不会轻松多少,因为你要受到同一网段里其他公司主机的威胁。例如,你的服务器的IP地址段是211.139.130.0/24,你使用了其中的几个地址,那么在这个网段里还会有200多台其他公司的主机,它们与你的主机同处于一个防火墙之后,虽然防火墙可以屏蔽来自因特网的某些访问,然而,内部这些主机之间的相互访问却没有任何屏蔽措施。于是,其他公司不怀好意的人可以通过他们的主机来攻击你。
或者,网络中一台主机被黑客入侵,则所有服务器都会面临严重威胁。在这样的网络中,不要运行NFS、Sendmail、BIND这样的危险服务。
这种问题的解决方法是自己购买防火墙,并配置使用透明模式,不要使用公用防火墙的透明模式。
有的IDC公司会给你提供NAT方式的防火墙,你需要在服务器上设置私有IP地址,然后由防火墙来给服务器做地址转换。这种情况与上述情况存在同样的问题,那就是,在你的服务器所在的逻辑网段里还有其他公司的主机。
例如在172.16.16.0/24这个网段可容纳254台主机,你的服务器使用了其中的几个IP,那么可能还有200多台其他公司的主机与你的服务器在同一个网段里。这样,虽然对外有防火墙保护,但无法防范来自内网的攻击。
要解决这个问题,你不必自己购买防火墙。既然私有IP是可以任意分配的,那么你可以向IDC单独要一个网段,例如172.16.19.0/24网段,把你的服务器都放在这个网段里,其中不要有其他公司的主机。这样一来,你的内网也无懈可击了。
实际上,如果你有一个大的UNIX主机的网络,那么没必要让每台主机都在防火墙上打开登陆端口。你可以特别设置一台或两台主机做为登陆入口,对其他主机的访问都必须使用入口主机作为跳板。这样做牺牲了使用的方便性,但带来更强的安全性。当然,前提是你必须管理好入口主机。
有一种电子令牌卡适合这种应用,它是一张随身携带的卡,每隔一段时间(这个时间通常很小,几分钟或者几十秒)动态产生一个口令,你只有使用这个口令才能登陆主机,并且该口令很快就会失效。
不仅是UNIX主机,对Windows主机的终端管理也可以采用这种跳板的方式。但Windows的终端比UNIX的shell要麻烦得多,如果你不愿牺牲太多的方便性,那么就不要这样做。
网络安全是服务器安全中重要的部分,希望大家已经掌握以上的内容,另外,还希望大家多多关注防火墙的知识,以更明白的了解服务器网络安全。