通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请 求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而 不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够 代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作 一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web 服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
反向代理方式和包过滤方式或普 通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访 问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供最佳的安全访问方式。
综合反向代理功能和普通拒绝外部访问的普通 防火墙软件相结合,就能构成一个既具有保护内部网络、又能对外提供Web信息发布的能力的防火墙系统。由于反向代理能力需要软件实现,因此不能使用现有的 防火墙系统,需要使用相关软件进行开发改进。Unix显然是首选平台,我们基于FreeBSD系统,提出一种基于ipfw、natd与squid的防火墙 设置方式。其中ipfw可以基于ip地址、端口、协议等对ip包进行过滤,natd提供网络地址转换功能,这样就隐藏了内部网络的拓扑等信息,ipfw和 natd结合就构成了强大的包过滤网关。而squid是Internet上最流行的Web代理服务器之一,虽然它提供的是普通的正向代理能力,但其为开放 源代码软件,并且具有强大的可配置性,因此很容易可以将其更改为反向代理服务器。
这种方式对内部网络的保护能力,要小于双层防火墙软 件,等于普通的单层防火墙软件,然而其对Web服务器的保护却大于双层防火墙系统中对位于对停火区内的Web服务器的保护。然而其本身为单层系统,因此比 双层系统配置起来更方便,是一种简单有效的方案。其中反向代理功能能够提供丰富的连接记录,可以用来提供预防和捕获攻击的能力,而包过滤和网络地址翻译可 以让内部网络的主机可以使用多种协议访问外部网络,不需要考虑防火墙对应用协议的支持问题。这种方式适用于大多数Intranet系统。