反向代理与防火墙的集成应用
不过话又说回来了,即使使用了防火墙技术,我们还有可能遭受入侵攻击导致服务器瘫痪或网页被篡改,这是因为无法避免Web服务器的真实数据暴露在网络外部。而大多管理员都在使用包过滤型的防火墙保护对外发布Web的信息,但传统意义上的包过滤防火墙有很多弊病,归纳起来有三点:?
通信方面:包过滤防火墙只能访问部分数据包的头信息;?
状态监管:包过滤防火墙是无状态的,所以它不可能保存来自于通信和应用的状态信息;?
信息处理:包过滤防火墙处理信息的能力是有限的。
比如,教科书上都讲IIS Unicode攻击,以及最近流行的“注入技术”,因为这种攻击是选择了防火墙所允许的80端口,而包过滤的防火墙无法对数据包内容进行核查,此时防火墙等同于虚设,即使在防火墙的屏障之后,也会被攻击者轻松拿下超级用户的管理权限。
另外一种做法就是使用反向代理技术,反向代理服务器可以避免有效的减少上述攻击。它对外就表现为一个Web服务器,不同之处在于的这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
反向代理方式和包过滤方式或普通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供非常好的的安全访问方式。
综合反向代理功能和普通拒绝外部访问的普通防火墙软件相结合,就能构成一个既具有保护内部网络、又能对外提供Web信息发布的能力的防火墙系统。由于反向代理能力需要软件实现,因此不能使用现有的防火墙系统,需要使用相关软件进行开发改进。Unix显然是首选平台,我们基于FreeBSD系统,提出一种基于ipfw、natd与squid的防火墙设置方式。其中ipfw可以基于ip地址、端口、协议等对ip包进行过滤,natd提供网络地址转换功能,这样就隐藏了内部网络的拓扑等信息,ipfw和natd结合就构成了强大的包过滤网关。而squid是Internet上最流行的Web代理服务器之一,虽然它提供的是普通的正向代理能力,但其为开放源代码软件,并且具有强大的可配置性,因此很容易可以将其更改为反向代理服务器。