反向代理在电子商务网站安全中的应用
[摘要] 商务网站是开展电子商务的基础平台,网站资源的安全是企业能否成功实施电子商务的关键,本文介绍了一种利用反向代理技术来保证网站资源安全的方法。
[关键词] 电子商务 反向代理 网站资源 安全 DNS
一、引言
电子商务是利用先进的电子技术进行商务活动的总称。它通过、使用先进的信息处理工具,利用机这种载体,将买卖双方的商务信息、产品信息、销售信息、服务信息,以及电子支付等活动,用相互认同的交易标准来实现。进行电子商务活动的最基础平台是电子商务网站,电子商务网站在企业的电子商务体系中有着重要的作用,其安全直接关系企业实施电子商务能否成功。
目前,对电子商务网站的保护,采用最多的方法是使用防火墙技术,只允许用户访问网站的WEB服务,过滤掉对网站服务器其他服务的访问。这种方法有一个问题:网站的WEB服务对外来说是完全暴露的,用户可以直接和网站服务器通信。
二、反向代理技术
通常的代理一般称为正向代理,只用于代理内部网络对外部网络的连接请求,不支持外部网络对内部网络的访问请求(因为内部网络对外部网络来说是不可见的)。当一个代理服务器能够代理外部网络上的主机访问内部网络时,这种代理的方式称为反向代理。
反向代理就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和外部网络之间增加一个高速的WEB缓冲服务器来降低实际的WEB服务器的负载的一种技术。反向代理是针对WEB服务器提供加速功能的,作为代理缓存,它并不是针对浏览器用户,而针对一台或多台特定WEB服务器,它可以代理外部网络对内部网络的访问请求。
反向代理服务器会强制将外部网络对要代理的服务器的访问经过它,这样反向代理服务器负责接收客户端的请求,然后到源服务器上获取内容,把内容返回给用户并把内容保存到本地,以便日后再收到同样的信息请求时,它会把本地缓存里的内容直接发给用户,以减少后端WEB服务器的压力,提高响应速度,代理的服务器对外部网络来说是不可见的。
反向代理服务器的工作流程归纳如下:
1.用户通过域名发出访问WEB服务器的请求,该域名被DNS服务器解析为反向代理服务器的IP地址,因此用户的请求被重定向到反向代理服务器。
2.反向代理服务器接受用户的请求。
3.反向代理服务器在本地缓存中查找请求的内容,找到后直接把内容发送给用户。
4.如果本地缓存里没有用户所请求的信息内容,反向代理服务器会代替用户向源WEB服务器请求同样的信息内容,并把信息内容转发给用户,如果信息内容是可缓存的还会把它保存到缓存中。
实施反向代理,只要将反向代理服务器放置在要代理的WEB服务器前端并在DNS系统中将要代理的服务器域名解析为反向代理服务器IP地址(达到强制将外部网络对要代理服务器的访问经过反向代理服务器的目的)即可,如图1所示:
在企业的电子商务网站建设中采用反向代理技术后,解决了网站服务器对外可见的问题,还有如下几个突出优点:
1.节约了有限的IP地址资源。企业内所有的网站共享一个在Internet中注册的IP地址,这些服务器分配私有地址,采用虚拟主机的方式对外提供服务。
2.保护了真实的WEB服务器。企业内所有网站服务器对外都不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有存放实际的资源,因此,可以保证真实WEB服务器上资源的安全。
3.加快了对网站的访问速度,减轻WEB服务器的负担。反向代理服务器具有缓存网页的功能,如果用户需要的内容在缓存中,则可以直接从代理服务器中取得,减轻了WEB服务器的负荷,同时也加快了用户的访问速度。
三、反向代理服务器的部署
目前,能够实现反向代理的软件有很多,但用的最多还是由美国政府大力助的Squid开源免费软件,该软件可运行在任何平台上,本文选择Linux操作系统来部署Squid,因为Linux系统也是开源免费的。
1.Squid软件的获取。可以从http://www.squid-cache.org网站下载squid软件的最新版本,本文下载的是squid-2.6.STABLE13.tar.gz。
2.Squid软件的安装。
(1)将获取的文件squid-2.6.STABLE13.tar.gz拷贝到/tmp目录;
(2)解压该文件,运行tar xvzf squid-2.6.STABLE13.tar.gz命令,在/tmp目录中生成名为squid-2.6.STABLE13的目录;
(3)进入该目录,执行./configure,系统缺省将软件安装在/usr/local/Squid目录,用户也可以用--prefix=目录,指定安装目录;
(4)运行make;
(5)运行make install;
(6)如没有错误,安装结束,Squid的可执行文件在安装目录的bin子目录下,配置文件在ctc子目录下。
3.Squid软件的配置。通过squid配置反向代理主要就是配置“squid.conf”这个配置文件,Squid2.6中和反向代理配置相关的主要包含以下三项
(1)http_port 配置反向代理服务器的IP地址(和外网相连地址)和监听端口http_port 202.115.144.30:80 vhost vport。
(2)cache_peer配置内部的WEB服务资源,该资源可以是真实WEB服务器的IP地址,也可以是的域名(内部可见的域名),一般都采用IP地址,需要反向代理几个WEB服务器就要有几个对应。的配置cache_peer 192.168.1.254 parent 80 0 no-query originserver
(3)cache_peer_domain指定对外部发布的资源(外网可见的域名)与真实资源的对应关系,同样,需要反向代理几个WEB服务器就要有几个对应的配置cache_peer_domain 192.168.1.254 www.example.com。
4.DNS系统的配置。在DNS服务器中将所有需要代理的真实WEB服务器的域名对应于反向代理服务器的IP地址www.example.com IN A 202.115.144.30,经过这样对Squid配置和DNS的修改后,对www.example.com的访问都会由反向代理服务器202.115.144.30定向到192.168.1.254这台真实的WEB服务器。
四、反向代理服务器的安全
Squid本身不具有认证程序,但是可以通过外部认证程序来实现用户认证,最常用的是采用NCSA认证,因为NCSA认证是Squid源代码包自带的一个外部认证程序。操作方法如下:
1.cd /tmp/squid-2.6.STABLE13/auth-modules/NCSA。
2.make;make install。
3.编译成功后,会生成ncsa-auth的可执行文件,拷贝生成的执行文件ncsa-auth到/usr/local/squid/bin目录cp ncsa_auth /usr/local/squid/bin。
4.修改squid.conf中的相关选项如下所示:
Authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd。
5.定义相关的用户类acl auth_user proxy_auth REQUIRED。
注意,REQUIRED关键字指明了接收所有合法用户的访问。
6.设置http_access。
http_access allow auth_user。
7.利用apache携带的工具软件htpasswd在/usr/local/squid/etc下生成密码文件并添加相应的用户信息,该密码文件每行包含一个用户的用户信息,即用户名和密码; htpasswd -c /usr/local/squid/etc/passwd test test。这样就在密码文件passwd中添加用户和密码都是test的用户。然后重新启动Squid,密码认证就生效了,访问代理服务器就需要输入账号和密码。
五、结束语
反向代理方式不单是一种WEB服务器加速器,而且使也一种对外提供WEB发布时使用的有效的防火墙技术,使用它不但能节约紧缺的IP地址资源,加速WEB服务器的访问速度,而且能够保护WEB服务器,因此能够适应多种应用场合,特别是应用在商务这种对安全要求特别高的场合。
:
[1]何世晓田钧:Linux系统管理员.北京:机械出版社, 2007
[2]孙青:代理服务器安装配置与应用.北京:冶金工业出版社,2002
[3]http://www.squid-cache.org