IPv6环境下反向代理IPv4网站及安全防护的研究与实现
2019-04-04吴金堂耿方方
吴金堂 耿方方
【摘 要】如何把基于IPv4的 Web应用切换到IPv6环境下,实现IPv4与IPv6的Web应用共享互通,并实现Web应用的安全防御,是当前网站管理人员急需解决的问题。论文提出一种基于Nginx的双栈反向代理技术,总结出Ipv4应用向IPv6转换的方法以及网站安全防护的实施方案。该方案为未来IPv6在Web应用方面的推广提供了部署依据。
【Abstract】How to switch the Web application based on the IPv4 to the IPv6 environment, realize the sharing and interworking between the Web application of IPv4 and IPv6, and realize the security defense of the Web application, is the urgent problem that the website administrator needs to solve at present. This paper presents a dual-stack reverse proxy technology based on Nginx, summarizes the method of converting Ipv4 application to IPv6 and the implementation scheme of website security protection. This scheme provides the basis for the future promotion of IPv6 in Web application.
【關键词】IPv6 反向代理;Web应用;安全防护
【Keywords】 IPv6 reverse proxy; Web application; security protection
【中图分类号】TP393.04 【文献标志码】A 【文章编号】1673-1069(2019)01-0108-04
1 引言
IPv6作为下一代互联网关键技术,是网络信息技术发展和互联网演化升级的必然趋势。2018年9月教育部发布《推进IPv6规模部署行动计划》,主要目标是要求到2020年底,教育系统的各类网络、门户网站和重要应用系统完成升级改造,支持IPv6访问。为了降低各类网站及业务应用向IPv6升级转换的难度,实现现有Web应用的IPv6访问,本文提出基于Nginx的反向代理实现IPv4网站应用的转换及网站的安全防御。
2 现有网站应用部署现状
现阶段由于网站规划、应用开发均基于IPv4网络,将业务直接由IPv4部署到IPv6中,可能会出现网站、应用无法访问或出现错误的情况。IPv4到IPv6环境的转换,需要经历网络改造、软硬件更新以及对业务系统内核的重构、测试及重新编译上线。如果想在短时间内基于IPv6对网站、应用系统进行重新开发部署,对于普通内容类网站较为容易实现,但对于一些业务应用系统,如财务、教务等系统则需要较长的时间。
目前,正处于IPv4向IPv6过渡阶段,网站及业务应用系统需同时满足IPv4/IPv6用户访问IPv4/IPv6网站应用服务的需求,这就需要从应用服务端实现IPv4和IPv6用户的访问。现在已经实现IPv6部署的网站应用,其服务器通常是基于原生IPv4/IPv6双栈提供Web服务,它可避免因转换导致的复杂性。但是,基于IPv6的应用安全防御设备不够成熟,这就增加了IPv6环境下的网站应用服务的安全风险。
3 反向代理技术
反向代理是指某台服务器用来接受网络上用户的连接请求,然后将请求转发给网络上对应的应用服务,并将从应用服务上得到的结果返回给网络上请求的用户客户端,此时这台服务器对外表现即为一个反向代理服务器[1]。用户通过代理服务器访问网站应用时,并不需要更改任何配置,正常访问网站即可。常见的反向代理工具有HAProxy、Fikker、Squid、Nginx等。
本文主要以Nginx为反向代理工具进行研究,实现在不更改原有网站应用系统的前提下,网站应用能够在IPv6下的访问。
4 反向代理配置
4.1 反向代理服务器的网络配置
反向代理服务器需要支持用户能够同时访问IPv4地址与IPv6地址,因此,在反向代理服务器上需配置IPv4地址与IPv6地址。IPv4地址除了为用户提供IPv4的服务外,主要是让代理服务器将请求的IPv4应用系统转换为IPv6服务。反向代理服务可以同时为多个应用系统提供代理服务,因此,可以在代理服务器上配置多个IPv4或IPv6地址,方便不同业务使用不同的IP地址进行访问。
反向代理服务器只需部署在用户可以访问到的网络下即可,不需要改造网络结构。如果内部网络暂时没有IPv6网络,可以把代理服务器部署在其他支持IPv4与IPv6的网络机房,从而实现IPv4与IPv6的同时访问。
4.2 反向代理Web应用域名解析配置
Web应用支持IPv6网络访问时,需要网站具有相对应的DNS解析,即AAAA记录。当网站支持IPv4与IPv6同时访问时,需要有对应的A记录和AAAA记录。域名的解析地址为反向代理服务器上配置的IPv4与IPv6地址。当IPv4用户访问域名时,用户自动解析并访问反向代理服务器的IPv4地址;当IPv6用户访问域名时,用户自动解析并访问反向代理服务器的IPv6地址。
4.3 反向代理文件配置
基于Nginx反向代理技术的服务器配置较为简单灵活,可以同时代理多个后端Web应用。例如,反向代理后端IPv4网站应用,在代理服务器中配置对应的IPv4请求源地址,并配置监听对应Web应用的IPv6地址端口即可。
以上示例配置中,同时配置了两个反向代理域名,分别对应后端IPv4应用地址,当IPv6用户访问www域名时,通过DNS解析出域名IPv6地址为反向代理服务器地址,用户请求到反向代理服务器,服务器会根据用户请求的域名自动转发请求到其对应的211.66.66.66(www网站)服务器,并将请求结果返回给用户。
4.4 反向代理注意事项
针对一些特殊应用,使用非80端口,如8080等,只需要在反向代理服务中配置对应回源端口,并在服务器中监听相应端口即可实现端口转发功能。当某业务需要使用HTTPS安全连接,且源Web应用不支持修改启用HTTPS时,同样可以通过反向代理服务器把对应服务转换为HTTPS安全连接,在反向代理服务器中配置安全证书,并监听443端口,用户可以直接访问HTTPS的安全连接,回源请求还是Web應用80端口,不需要源服务做任何改变。
在使用反向代理服务器转换IPv6时需要注意,代理内容中有跨协议资源时,非对应协议用户会出现无法访问的情况。例如,只有IPv6网络的用户访问转换后的网站时,网站内容包含有链接为IPv4的资源,此时IPv6访问用户就不能加载相应资源,这就需要在做转换时一定要进行严格的访问测试,保证数据调用协议一致性。我们可以利用Nginx中的subs_filter内容过滤模块,把单协议资源转换为双协议资源或替换为本地资源[2]。
当用户访问代理服务时,代理服务器就必须开启两个连接,一个为访问用户的连接,一个为对后端Web应用的连接,因此,对于连接请求数量非常大的时候,代理服务器的负载也就非常高。在实际应用中,如果代理业务过多,可以部署多台反向代理服务器,配合DNS服务,把需要做代理转换的服务域名同时解析到多台代理服务器IP,实现反向代理前端负载均衡,分散多个业务的请求,这个过程其实已经实现了内容分发网络功能(CDN)。我们可以把代理服务器部署在不同运营商的线路中,并结合反向代理的内容缓存功能,配合智能DNS服务,以实现网站业务的IPv6转换、内容分发与快速访问。
4.5 IPv6反向代理环境中的网站安全防御
现阶段针对IPv6业务应用层的安全设备相对不完善,业务系统接入IPv6后的安全风险增加,而通过反向代理服务后,所有的用户请求都必须通过代理服务器访问后端服务,因此,可在代理服务器上设置相关安全配置,过滤某些不安全信息,拦截恶意请求。
在搭建IPv6反向代理服务器时,可以使用OpenResty做为反向代理服务工具,OpenResty是一个基于Nginx与Lua的高性能Web平台,可以方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web 服务和动态网关。
网站应用层的安全防御主要依靠Web应用防火墙(Web Application Firewall,WAF)来检测拦截,通过开源框架OpenResty和相应Lua程序语言可以轻松构建Web应用防火墙,实现通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击(Cross Site Scripting xss)、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC(挑战黑洞)攻击、恶意爬虫扫描、跨站请求伪造等攻击,保护后端Web应用安全稳定。
相对于在原有IPv4/IPv6网站应用系统中部署应用防御,在中间代理转换层做应用安全防御更简单便捷,不用对原有系统做任何改变,也不会对原有业务系统产生影响。各业务系统的访问日志格式不统一,收集整理分析难度大,但通过中间的反向代理服务后,可以统一规范访问日志格式,做集中式日志管理系统,以便对日志进行分析,例如,结合ELK(Elasticsearch、Logstash、Kibana)日志系统可以对日志统一标准化收集传输、日志查询分析并到最后实现日志的实时可视化。
5 反向代理案例
结合以上的理论知识,在实际环境中构建了一台反向代理服务器,具体配置信息如下。
5.1 反向代理服务器
在VM虚拟化中开设一台服务器,4核,8G内存。安装Centos6操作系统,使用OpenResty作为反向代理服务工具,使用Iptables和Ip6tables防火墙软件。配置千兆网卡,设置IPv4与IPv6双栈网络。
OpenResty服务配置成反向代理模式,在配置中监听指定业务域名并设置对应业务回源请求地址,结合基于Lua语言的开源OpenWAF模块,实现Web应用防火墙功能。
服务器配置syslog-ng日志收集传输工具,Nginx和OpenWAF模块在产生日志的同时对日志进行远程传输。
5.2 日志收集整理服务器
VM中开设虚拟服务器,配置8核,16G内存。安装Centos6操作系统,配置ELK日志服务,通过收集反向代理服务器传输过来的日志,进行分类整理分析,并最终实现日志实时可视化。
5.3 原有后端IPv4网站应用
本实例未对原有Web应用做任何改动,实际应用中,可以把后端业务放入内部网络,并设置只允许反向代理服务器的请求通过,以增加原应用服务的安全性。
该系统部署在IPv4/IPv6双栈环境下,反向代理并转换原IPv4网络下的学校门户网站为IPv6服务,已经正常连续运行一个月,通过日志分析系统可以看出IPv6用户已经增长很快,每天有1千余用户通过IPv6网络访问网站,访客来源于全国不同地方,如图1所示。另外,根据Web防火墙日志可以看出,IPv6下的攻击类型多种多样,恶意请求数量也在递增,如图2和图3所示。
6 结论
反向代理技术可以实现IPv4到IPv6的Web应用转换,是IPv6过渡阶段最方便快捷的业务向IPv6转换的方法。同时,通过反向代理服务后,用户与应用系统中间增加了一层防护,提高了内部系统的安全性。该方法的使用为IPv6在业务系统方面的推广提供了解决方案,同时也为业务系统的信息安全提供了保障。
【参考文献】
【1】邓庚盛,鄢志辉,邹伟平,等. IPv6过渡阶段基于双栈反向代理技术的应用研究[J].中国教育网络,2018(1):33.
【2】冯贵兰,李正楠.Nginx反向代理在高校网站系统中的应用研究[J].网络安全技术与应用,2017(6):22-26.