配置反向代理服务器确保企业网络服务安全
反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
值得注意的是:通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。
当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
反向代理方式和包过滤方式或普通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供最佳的安全访问方式。
目前有许多反向代理软件,比较有名的有 Nginx 和 Squid .其他还包括Socks、Apache、Jigsaw、Delegate等。
使用Squid配置反向代理服务器
Squid作为反向代理服务器使用时,其工作原理为:客户端请求访问 Web 服务时,DNS 将访问的域名解析为 Squid 反向代理服务器的 IP 地址,这样客户端的 URL 请求将被发送到反向代理服务器。如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的 Web 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。
Squid反向代理一般只缓存可缓冲的数据(比如 HTML网页和图片等),而一些 CGI 脚本程序或者 ASP、JSP 之类的动态程序默认不缓存。它根据从 Web 服务器返回的 HTTP 头标记来缓冲静态页面。有四个最重要HTTP头标记:
Last-Modified:告诉反向代理页面什么时间被修改
Expires:告诉反向代理页面什么时间应该从缓冲区中删除
Cache-Control:告诉反向代理页面是否应该被缓冲
Pragma:用来包含实现特定的指令,最常用的是Pragma:no-cache
要配置反向代理服务器,需要在squid的主配置文件里面添加如下内容:
http_port 80 accel vhost vport
cache_peer 192.172.1.133 parent 80 0 no-query originserver
cache_peer_domain www.test.com 192.172.1.133
acl sites dstdomain www.test.com
http_access allow sites
http_access deny all
cache_dir ufs /var/spool/squid3 100 16 256
cache_mgr yourmail@somesite.com
cache_mem 64 MB
maximum_object_size_in_memory 1028 KB
access_log /var/log/squid3/access.log squid
上述配置的详细解释如下:
http_port 80 accel vhost vpor:指定Squid所服务的端口为80,vhost和vport指的是所采用的虚拟主机的方式:基于IP地址和基于端口的;
cache_peer 192.172.1.133 parent 80 0 no-query originserver:指定真实Web Server的IP地址;
cache_peer_domain www.test.com 192.172.1.133:告诉反向代理服务器,当客户端有对www.test.com的访问请求时,需要从真实Web Server 192.172.1.133上取得数据;
acl sites dstdomain www.test.com:定义客户端能够通过反向代理服务器访问的主机;
http_access allow sites、http_access deny all:限制客户端通过反向代理服务器能够访问的范围;
cache_dir ufs /var/spool/squid3 100 16 256、cache_mgr yourmail@somesite.com、cache_mem 64 MB、maximum_object_size_in_memory 1028 KB、access_log /var/log/squid3/access.log squid:代理服务器的常规配置。