一种实现安全反向代理服务的方法

文档序号:7998804阅读:1347来源:国知局
专利名称:一种实现安全反向代理服务的方法
技术领域
本发明涉及安全反向代理服务器领域,更具体的是在内外部网络之间架设安全网关,在网关上设置安全反向代理服务器,保护内部应用服务器免于遭到破坏,增强内部应用服务器的安全性的方法和装置。
背景技术
目前国内外大中型企业均在企业内部设置多台应用服务器,为企业内部资源使用的便利性提供帮助,包括:企业内部邮件服务、协同办公系统、财务管理系统等等。当企业用户使用外部网络通过代理服务器访问各应用系统时,一般将此代理服务器成为反向代理服务器。对于此反向代理服务器来说,服务器上没有保存任何网页的真实数据,所有的静态网页及WEB程序,都依然保存在企业内部的应用服务器上。对反向代理服务器的攻击并不会使得企业内部的应用服务器遭到破坏,这样就增强了企业内部应用服务器的安全性。目前反向代理服务器均是支持HTTP的代理,但随着日益提高的安全等级,普通的HTTP反向代理已经不能满足大中型企业网络安全性的需要,其迫切的需要更加完善的安全机制来满足更高的安全需要,本方法提供一种在反向代理服务上增加认证及加解密的机制来增强外部访问的安全性,同时提供一种减少企业内部域名的方法。

发明内容
本发明提供了一种安全的反向代理的方法。附图1描述了其部属环境,即在网关设备上部署安全反向代理服务器,安全网关设备位于客户端与应用服务器之间,客户端与应用服务器的地址为不同网段地址,网关设备上设置两个网段的地址,同时在DNS服务器上指定网关的域名WWW.gateway, com和域名指向的地址,地址为网关设备与客户端交互的地址。网关设备启动反向代理服务器前,针对代理服务器和代理的应用服务器进行配置,配置主要内容如下:错误消息页面:由网关自行定义的简单HTML页面;(必选)服务端证书:由第三方信任机构签发的证书;(必选)公钥:与证书相匹配的公钥;(必选)/XXX:应用服务器的简称;(必选)Proxy_IP_P0RT:应用服务器的实际IP地址及端口号;(必选)设置头部信息:X-REAL_IP、X-Forwarded-For。(可选)上述配置除证书外可根据不同的应用服务器配置多个应用服务器的反向代理,同时网关配置防火墙开启443端口的访问授权。配置完成后启动反向代理服务器,反向代理服务器利用Socket技术监听443端口的TCP连接,等待客户端发起的安全连接请求。客户端在浏览器上键入https://www.gateway.com/XXX,发起目的端口为443的TCP连接。www.gateway, com为网关的域名,/XXX为访问应用服务期的简称,服务端应同时配置/XXX所指向应用服务期的地址与需要返回客户端的URL进行指定。客户端与服务端的TCP协商为正常的TCP三次握手,握手成功后在TCP的基础上开始SSL协商。SSL协商采用单向协商,附图2描述了其协商步骤,具体内容如下:1、客户端通过SSL Hello消息将它支持的加密算法、密钥交换算法、MAC算法等信息发送给服务器。2、网关将报文分为三部分,第一部分确定本次通信采用的加密套件,通过Hello消息通知给客户端;第二部分将自己公钥信息的数字证书通过Certificate消息通知给客户端,此证书为第三方信任机构签发的证书;第三部分网关通知客户端版本和加密套件协商结束,开始进行密钥交换。3、客户端验证网关的证书合法性,利用证书中的公钥加密客户端随机生成的前置安全数,并通过消息发送给服务端。客户端发送Change Cipher Spec消息,通知服务端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给服务端。4、服务端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。同样地,服务端发送Change CipherSpec消息,通知客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。服务端计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给客户端。客户端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。至此,SSL协商完成,加密信道建立。客户端发送SSL协商的密钥对HTTP报文进行加密,将加密后的数据发送到网关,网关反向代理模块调用SSL解密函数进行解密,解密后再进行HTTP报文的解析,加密信道的建立可保证客户端访问到网关这一阶段的数据为加密数据,如报文被拦截或泄露也不会对用户和企业产生影响。反向代理模块并不对整个HTTP报文进行解析,其仅解析HTTP报文的请求行、消息报头,而不对HTTP请求正文进行解析。对HTTP请求行的通用资源标识符(即HTTP URI)进行解析,确定URI为“/XXX” ;查找是否有/XXX应用服务器代理的配置选项,如果没有,则返回HTTP 502错误,此处返回的是自定义页面,避免客户端通过错误页面可以了解应用服务器的目录构造;如果有代理,则取出/XXX的相关配置,在对HTTP头进行解析。 解析HTTP消息报头,提取HTTP消息报头的所有选项,包括:"Acc印t、Accept-Language、User-Agent、Accept-Encoding、Host、Connection、Cookie 等所有选项,并将选项及选项内容保存;创建一个新的BUF,重新构造HTTP请求行与消息报头:重新构造HTTP选项Host,此选项内容为反向代理服务器配置域名;如配置了 protocolHeader选项,则创建HTTP选项protocolHeader,此选项内容为https://,此选项仅为标识,一般表示反向代理服务器接收了 HTTPS的协商,并对数据进行了解密,应用服务器一般不对其进行处理;
如配置了 X-Forwarded-For选项,则创建HTTP选项X-Forwarded-For,此选项内容为真实客户端IP地址,此处是否选择添加此选项应根据应用服务器来判断,如部署为以IP地址为限制的投票系统时,必须设置该选项,将HTTP的请求客户端端的真实IP发送到应用服务器,避免应用服务器以IP头的源地址进行统计而使统计数据不准确;如配置了 X-REAL-1P选项,则创建HTTP选项X-REAL-1P,此选项为实际直接访问地址;重新构造HTTP选项Connection,此选项内容为close。其他HTTP选项不予修改,完成HTTP报文头的封装后,根据/XXX指定的应用服务器地址和端口号将报文发送到应用服务期,应用服务期解析后将报文返回给网关,网关将数据透传给客户端,对于数据来说,应用服务器回传的数据,网关是不做更改的,因此网关对用户来讲是透明的。但如果应用服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何URL,然后再将消息发送给客户机。防止外部客户机获取内部内容服务器的重定向URL。由于在反向代理服务器中/XXX,可以解释为应用服务器的地址,因此,在实际的组网环境下可以在DNS服务器上删除此域名,避免域名被占用。网关的实现基于定制的硬件和操作系统,采用专为网关设计的工控机和裁减的Liunx操作系统,上述算法的实现基于我公司自有的实现,其主要实现为二个模块:1.数据处理子模块数据处理子模块是安全网关与外界交互的唯一出入口,其采用多进程并发处理模型,同时启动I个主进程和8个子进程进行工作,主进程负责控制反向代理引擎模块的基础配置信息,子进程并发接收数据和发送数据。数据处理子 模块利用Socket技术实现对端口的监控,当收到客户端发起的请求后,调用中间层子模块对协商报文进行处理(协商处理过程由中间层子模块协商负责处理)。数据的收发均采用流式Socket (面向连接的Socket)来完成。当数据处理子模块接收数据后,根据报文目的IP地址,进行判断,当目的IP地址满足系统ipTables中某一条规则时,将报文根据规则指向的接口进行转发。2.中间层子模块中间层子模块负责SSL协议的协商,协商通过后数据处理子模块调用open ssl的解密接口 SSL_read完成数据的解密操作。


图1:安全网关部署环境图2:单向SSL协商过程
权利要求
1.一种网关作为安全反向代理服务器的方法,所述的网关设置在用户与服务器之间网络上,所述方法包括步骤: (1)客户端连接反向代理服务器在网关上开放的443端口,三次握手后建立TCP连接,在TCP连接基础上建立SSL安全信道; (2)安全信道建立后,网关接收客户端向应用服务器发送的被加密的HTTP请求,网关对此请求进行解密处理; (3)解密后网关对HTTP报文进行解析,根据解析的URI,判定反向代理指定的应用服务器; (4)继续解析HTTP头信息,对HTTP头进行改造,增加部分头信息后将报文发送到应永服务器。
2.如权利要求1所述的方法,其特征在于网关可接收443端口的TCP连接。
3.如权利要求1所述的方法,其特征在于TCP连接建立后,客户端与网关进行SSL协商。
4.如权利要求1所述的方法,其特征在于SSL协商完成后,客户端发送的HTTP数据为加密数据,网关对数据解密后才可以进行解析。
5.如权利要求1所述的方法,其特征在于网关包括识别HTTP请求,并对请求头部进行解析的装置。
6.如权利要求1所述的方法,其特征在于网关可构造部分头信息,并根据应用服务器的实际需要构造不同的头部信息。
7.如权利要求1所述的方法,其特征在于网关包括代替Web服务器对客户端HTTP请求进行应答的装置。
8.如权利要求1所述的方法,其特征在于网关包括对数据包进行端口转发的装置。
全文摘要
本发明公开了一种安全的反向代理的方法。即在网关设备上部署安全反向代理服务器,安全网关设备位于客户端与应用服务器之间,客户端与网关之间进行SSL连接,构建安全信道,使客户端与网关之间的数据为加密数据,避免数据被窃听。在反向代理服务器上支持简单的URI域名识别,减少组网环境下的域名设置。
文档编号H04L29/08GK103139185SQ20111039491
公开日2013年6月5日 申请日期2011年12月2日 优先权日2011年12月2日
发明者李洪宇 申请人:中科信息安全共性技术国家工程研究中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1