`
wbj0110
  • 浏览: 1603355 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

使用反向代理技术保护Web服务器

阅读更多

为了增加网络的安全和保护内部网络上的重要数据,需要将内部网与Internet相隔离,当前主要通过防火墙技术来完成这个目的。然而为了保护内部主机,防火墙软件就必须限制外部网络中的主机对内部网络的访问。因此普通防火墙软件的设置中,外部网络无法访问内部主机。然而,为了向外发布自己的信息,就需要允许外部网络访问自己的Web服务器。最简单的处理方法是将Web服务器放在防火墙之外,这样就将Web服务器和内部网络区分开,Web服务器暴露在网络外部,就有可能招受攻击而导致服务器瘫痪或网页被更改等潜在的问题。而当前,Web服务器上面的信息越来越丰富和重要,Web服务器的重要性也非常明显。因此就需要使用防火墙来保护它,如果要将Web服务器放在防火墙之内,则需要防火墙的支持。

当前防火墙主要有两种类型,一种为包过滤型防火墙,这种防火墙针对每个IP包识别它是否符合管理员设定的过滤规则,符合一定要求的才被正确转发。可以使用的过滤规则包括源和目的主机的名字和IP地址,端口地址,使用的网络界面,以及IP包的类型。通常包过滤型的防火墙软件根据IP包的类型屏蔽所有的由外部发起的连接请求,从而保护内部网络。如果要将Web服务器放在放火墙之内,就需要允许对这个Web服务器和它使用的TCP端口的访问。

另一种类型的防火墙为应用代理型的防火墙,这种防火墙针对每种应用协议提供相应的代理服务,由代理服务器访问网络,并将结果返回给客户机。标准的http协议的代理服务,客户端的浏览器必须配置代理服务器的IP地址,不可能要求其他外部主机为访问这个内部网络上的主机而重新设置代理服务器的地址。代理服务器并不区分外部网络和内部网络,但是代理服务器使用Internet上的名字解析来确定Web服务器的位置,而通常防火墙内使用内部地址,这也决定了普通代理型防火墙不支持外部网络对内部Web服务器的http访问请求。因此普通代理服务器简单的屏蔽外部地址的访问,因此最简单的保护对外发布信息的Web服务器的方式是使用包过滤型的防火墙。

一旦允许外部网络中的主机可以向内部网络发起连接请求,攻击者就可以在网络外部尝试进行连接,这增加了攻击者攻击内部网络的方式,降低了整个网络的安全系数。如果不允许外部主机向内部网络发起连接请求,攻击者就只好在外部发起攻击,使用特洛伊木马或者IP spoof等技术,这些方式与发起主动连接的攻击方式相比,没有现成的工具供利用,因此使得攻击的复杂性大大增加,因此网络被攻击的可能性大为减少,几乎成为不可能。一旦攻击者进入内部网络中的Web服务器,整个内部网络就暴露在攻击者的面前,防火墙就不能起到应有的作用了。因此通过重新定义包过滤型防火墙的过滤规则,并将Web服务器放在内部网络内,只是一种简单的保护Web服务器的方法,然而不利于保护整个内部网络的安全。

因此,为了在保护Web服务器和内部网络的安全,当前使用的更安全的做法是实现双层防火墙。外层防火墙实现包过滤功能,然而却允许外部网络访问其中的Web服务器,内部防火墙允许最中间的内部网络可以访问外部网络。在外部防火墙和内部防火墙之间称为停火区,提供外部网络访问的服务器就位于这个区域,表明即使攻击者通过外部防火墙进入这个区域,也无法攻入内部网络。双层防火墙通过设置了两层防火墙,使得内部网络更为安全。然而,它在保护Web服务器方面的作用,与单层防火墙相似。因为此时Web服务器仍然只受到一层防火墙的保护,同样也无法对外部隐藏防火墙内主机的各种信息,例如服务器的ip等。而且这层防火墙是对应用协议一无所知的包过滤防火墙,由于包过滤的方式不识别应用协议,通常为http协议,那么就无法正确识别外部的连接请求是否属于正常连接,通常也无法进行详尽的连接记录。为了更好的保护Web服务器不被外部攻击者破坏,就应该屏蔽内部服务器的IP地址等信息,并且防火墙能够识别连接协议,显然这是代理型防火墙的任务。

通常的代理服务器,只用于代理内部网络对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系统。

当需要对内部网络提供更进一步的保护时,仍然可以使用双层防火墙模式,这样兼具反向代理对Web服务器的保护能力,和双层防火墙对内部数据的更大的保护能力。

当组织向外提供信息发布的时候,并不仅仅要提供一些静态的网页,更大的可能是要根据实际的数据动态发布信息。因此发布的网页便需要通过访问数据库动态生成,通常使用的动态生成技术有CGI或服务器端文档解析等方式生成的。然而无论那种方式,都需要使得Web服务器能够和数据库服务器进行连接、通信。然而系统数据库应该是内部网络中应该首要保护的系统,因此要求安全性要求不高的对外发布信息的Web服务器和内部数据库服务器放置在同一个网段,就会造成相应的安全问题。

为了提高访问数据库服务器的安全性,就需要对能够访问数据库的CGI程序进行限制,这就要求对启动CGI的URL请求比对普通url进行更严格的限制。与普通包过滤型防火墙不同,反向代理能够理解http协议,能区分出不同的url请求,从而能够实现对cgi请求比普通http请求更严格的控制,甚至可以将cgi请求发送到一台专用的CGI服务器进行处理,从而分别处理普通url请求和cgi请求。这台cgi服务器可以具有访问数据库的能力,保证数据库的安全。

总结本文中的论述,可以看出,反向代理方式是一种对外提供Web发布时使用的有效的防火墙技术,使用它和传统防火墙技术相结合,就能实现简单有效的防火墙系统。

分享到:
评论

相关推荐

    Web APP 如何实现类似Nginx反向代理转发功能-zhangyannan1

    Web APP 如何实现类似 Nginx 反向代理转发功能是指在 Web 应用程序中实现反向代理转发的功能,以便将用户的请求转发到其他服务器或应用程序上。反向代理转发是一种常用的技术,用于将用户的请求转发到其他服务器或...

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,...

    反向代理服务器 Nginx

    Nginx (engine x) 是一个轻量级的、高性能的、基于 Http 的、反向代理服务器,静态 web 服务器。 Nginx 最初是由俄罗斯人 Igor Sysoev(伊戈尔·赛索耶夫)使用 C 语言为俄罗斯访问量第 二的 Rambler.ru 站点开发的...

    详细解析用Squid实现反向代理的方法

    反向代理服务器是提高WEB服务器性能和安全性的解决方案。它位于本地WEB服务器和Internet之间,承担对原始WEB服务器的静态页面的请求,防止原始服务器过载。反向代理服务器可以降低WEB服务器的负载,提高访问速度,...

    Nginx搭建反向代理服务器过程详解

    许多知名的网站如淘宝、新浪博客、网易新闻等都使用了Nginx作为他们的Web服务器或反向代理服务器,以确保网站的高可用性和良好的用户体验。在国内,Nginx的应用同样广泛,众多大型网站都选择了Nginx,它逐渐成为市场...

    用apache配置反向代理服务器

    Apache不仅能够作为传统的Web服务器使用,还能够配置成反向代理服务器(R-Proxy)。作为反向代理,Apache可以与Web Application Server (WAS)、WebLogic Server (WLS)等其他应用服务器协同工作,但不支持与Microsoft...

    Linux系统下Web网站服务器反向代理设计与实现.pdf

    Linux系统下Web网站服务器反向代理设计与实现.pdf

    Web服务器nginx虚拟主机与反向代理.docx

    Nginx 是一个高性能的 Web 服务器,可以作为虚拟主机和反向代理服务器使用。下面是关于 Nginx 虚拟主机和反向代理的知识点。 1. Nginx 介绍 Nginx 是一个免费的开源软件,运行在类 Unix 和 Windows 上。它是一个高...

    Nginx反向代理服务器

    Nginx 是一个很牛的高性能Web和反向代理服务器,它具有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 ...

    Nginx反向代理Tomcat服务器.pdf

    常用于静态资源的处理,以及作为反向代理服务器使用,减轻后端服务器的压力。 3. Tomcat的介绍: Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,是一个开源的轻量级Web...

    应用服务器、Web容器和反向代理技术架构解析.docx

    应用服务器、Web容器和反向代理技术架构解析.docx

    基于Linux-nginx-反向代理服务器的应用研究-毕业论文.doc

    在 Linux 平台下,可以使用 Nginx 实现反向代理服务器,通过搭建多台 Web 服务器实现负载均衡,提高系统性能和解决服务器瓶颈问题。 5. MySQL 数据库和 FTP 服务器的应用 MySQL 数据库和 FTP 服务器可以用于实现动...

    反向代理服务器,用于WEB服务器或者其他服务器测试

    本软件适用于微信公众号,小程序本地调试。或者其他TCP协议调试。此程序原理是将访问公网的IP的链接回传到本地电脑访问,无需映射路由,使用此工具必须要有公网服务器IP。方便本地代码发布到公网调试使用。

    7ghostPHP反向代理脚本

    在Web服务器架构中,反向代理扮演着至关重要的角色,它隐藏了后端服务器的真实身份,增强了系统的安全性和可扩展性。7ghostPHP反向代理脚本通过将HTTP请求重定向到其他服务器,实现了这一目的,尤其适用于负载均衡和...

    Nginx是一个高性能的HTTP和反向代理web服务器,同时也是一个IMAP/POP3/SMTP服务代理服务器 Nginx由伊戈

    nginxNginx是一个高性能的HTTP和反向代理web服务器,同时也是一个IMAP/POP3/SMTP服务代理服务器。Nginx由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发,其源代码以类BSD许可证的形式发布。Nginx因其稳定...

    一个高性能的HTTP和反向代理web服务器

    一个高性能的HTTP和反向代理web服务器

Global site tag (gtag.js) - Google Analytics