利用反向代理保护WEB服务器(下)

日期: 2008-07-20 来源:TechTarget中国

  三、调整DNS服务器设置


  假设DNS服务器(以下称标准DNS服务器)将test.com.cn解析为202.99.157.10,将test1.com.cn解析为 202.99.157.18,那么我们在配置反向代理服务器这台机器的DNS服务时(我们以下称为内部DNS服务器),可以针对内部地址的WEB做如下变换:


  主机名 标准DNS解析为 内部


  DNS解析为


  www.test.com.cn 202.99.157.10 192.168.1.10


  www.test1.com.cn 202.99.157.18 192.168.1.18


  然后把202.99.157.10和202.99.157.18这两个IP绑定到反向代理服务器上,这样,外界对 www.test.com.cnwww.test1.com.cn 的访问就会由标准DNS解析到反向代理服务器上,默认WEB服务器的服务端口是80,但是由于反向代理服务器的80端口的http服务已经终止,此时的访问会没有结果。为了能使该访问请求能够成功完成,需要在反向代理服务器和真实的www.test.com.cnwww.test1.com.cn 的WEB服务器之间建立联系。要和有内部地址的真实WEB服务器建立联系,首先反向代理服务器上需要再绑定一个内部IP,比如192.168.1.2,其余部分由transproxy这个透明代理软件来完成。Transproxy服务软件通过设置,启用端口81和squid建立联系,把内部DNS对 www.test.com.cnwww.test1.com.cn的解析地址传给squid服务器,然后通过squid.conf里面关于服务器端口的设置,将服务端口设置为80,这样,squid就访问内部真实WEB服务器192.168.1.10和192.168.1.18的80端口,把需要访问的 WEB内容取回来,放在squid的cache里供外界访问。透明代理软件transproxy设置完成后,需要通过设置ipchains规则,将外界发往反向代理服务器的80端口的http请求转发到transproxy 的81端口,这样就建立了外界通过反向代理间接和真实WEB服务器之间的联系。


  四、安装透明代理软件


  透明代理服务器安装分如下几步:下载、解压、编译、安装、配置几步。首先需要到 http://www.transproxy.nlc.net.au/transproxy-1.3.tgz下载transproxy软件包,也放在 /usr/local/src目录里,然后用gzip解压该软件包。具体命令是:


  gzip -dc transproxy-1.3.tgz |tar -xvf –


  解压后在/usr/local/src目录下面生成tproxy目录,里面是transproxy的源程序。


  进入该目录,用make命令编译该软件,用make install命令安装transproxy。Transproxy的编译和安装都很简单,下面就需要配置transproxy。根据系统负荷的轻重不同,transproxy可以配置为两种运行方式:负荷轻时,用inetd方式,负荷重时,用standalone server方式。具体配置方法如下:


  1.inetd方式:


  在/etc/services文件中添加下面一行:


  tproxy 81/tcp #transproxy


  在/etc/inetd.conf文件中添加下面一行:


  tproxy stream tcp nowait nobody /usr/sbin/tcpd tproxy 202.99.157.10 3128


  或


  tproxy stream tcp nowait nobody /usr/sbin/tcpd tproxy 202.99.157.18 3128


  2.standalone server方式:


  在/etc/rc.d/rc.local文件中加入下面一行:


  /usr/local/sbin/tproxy -s 81 -r nobody 202.99.157.10 3128


  或


  /usr/local/sbin/tproxy -s 81 -r nobody 202.99.157.18 3128


  设置完毕后重新启动反向代理服务器,所有新设置的功能即可实现。


  五、设置转发规则


  ipchains -A input -p tcp -d 202.99.157.10/255.255.255.255 80 -j REDIRECT 81


  ipchains -A input -p tcp -d 202.99.157.18/255.255.255.255 80 -j REDIRECT 81


  这里将送往202.99.157.10和202.99.157.18的80端口的所有http请求转发给由transproxy管理的端口81。


  到此为止,透明反向代理配置完成了。


  让我们模拟一下一位因特网用户访问www.test.com.cn这台拥有内部IP(192.168.1.10)的WEB服务器的过程。首先,该用户的请求由标准DNS服务器解析为202.99.157.10,则用户的机器向202.99.157.10的80端口发出请求,要求浏览 www.test.com.cn这台WEB服务器的页面,而202.99.157.10这台机器正是我们的反向代理服务器,按照反向代理服务器的 ipchains规则发往该服务器80端口的请求被转发到81端口,而81端口由transproxy 控制,transproxy把请求发给squid,让squid去取www.test.com.cn这个页面。而反向代理服务器上的内部DNS服务器把 www.test.com.cn解析为192.168.1.10,默认的反向代理端口是80,这样,squid就到192.168.1.10的端口80上请求WEB服务。而192.168.1.10正是我们的www.test.com.cn的真实WEB服务器,它的80端口开放着http服务。这样,squid从192.168.1.10服务器上取回页面传回给202.99.157.10 然后再传回给因特网上的对www.test.com.cn有访问请求的用户,并把该页面放在squid的cache中。这样就完成了一次因特网用户到拥有内部IP的WEB服务器的访问过程。以后再有因特网用户再访问www.test.com.cn这个页面时,squid就直接从cache里提取缓存的页面,这样可以提高WEB服务器的访问效率。


  因特网用户对www.test1.com.cn的访问也和对www.test.com.cn的访问一样,原理是相同的,只不过访问的真实服务器不同而已。


  从上面的访问例子我们可以看出,因特网上的用户在访问www.test.com.cn这个WEB 服务器时,根本不和真正提供www.test.com.cn页面的服务器打交道,只和反向代理服务器打交道,这样,在破坏互联网主机的黑客行为日益猖獗的情况下,只要正确设置反向代理服务器,确保反向代理服务器不被攻破,就会很大程度上杜绝因特网上的黑客对内部服务器的攻击。万一代理服务器被攻破,也不会对您的WEB服务器造成什么损害,您只要恢复反向代理服务器就行了。因此,本方法对您的WEB服务器起到一定程度的保护作用。而且在WEB浏览量较多的情况下,由于squid的反向代理有加速功能,可以加快页面的浏览速度。


  六、其他


  反向代理应用过程中,要注意访问控制功能,应该只允许访问你开放的内部服务器,而不允许访问其他服务器,否则,你的反向代理服务器就会成为互联网上一台公开的不用验证的代理服务器,那就危险啦。另外,如果您有多台WEB服务器,可以选一台性能较好的作为反向代理服务器,内部的若干WEB服务器可以用PC或低档服务器代替,因为外部的访问压力主要集中在反向代理服务器上。


  另外此方案如果和linux下面的防火墙方案结合使用会更加完美。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐