本文首发自河南CISP,安全内参转载。
阅读说明:WAF就是Web防火墙,是对Web业务进行防护的一种工具。基本上,只要是利用HTTP/HTTPS协议进行交互的应用,都用得着WAF。Web应用通常充当着攻击者入口的角色。本篇推荐几款开源WAF,适用有一定动手能力,且预算不多的网络安全职能部门(如:一个人的网络安全部门)。开源产品虽然坑比较多,但是踩坑还是一件很快乐的事。
随着互联网应用技术的不断发展,Web应用越来越受到业务系统的重视,早期的Web应用在多数人的理解中,似乎就是网站。如今的电子商务、网上银行、网上营业厅、以及新型医院HIS系统,等众多B/S架构的应用均以Web为载体。Web也由早期的网站转变为网上购物、网上交易、网上办公等多种业务应用系统。
1 WAF是什么?
WAF,全称 Web Application FireWall,也就是Web应用防火墙。在早期门户网站时代,我们所面临的安全威胁主要源自网站被黑或者网站页面被篡改,因此网页防篡改技术得到成长并大量使用。应用推动系统架构革新,而系统架构革新推动了安全技术的发展。WEB应用防火墙也不例外,也是在现有WEB防护技术力日益无法满足业务的新需求时诞生的。WAF即Web应用防火墙,是通过执行对HTTP/HTTPS请求的过滤,并对Web应用提供保护的一种产品。抵御大量的攻击行为。
我们现在使用的手机端app,多数的数据交方式依然是通过Web与服务器进行通信。那么这些Web Api在调用时,随之而来的安全风险,同样可以交给WAF来处理。不过这里我要申明一点,这个世界上没有绝对安全的产品,相信我,绝对没有“绝对”。
2 为什要使用WAF?
在软件应用的整个生命周期中,信息安全工作包括了开发编码,测试上线流程、升级维护、网络防护、日志审计等一系列工作,即使这样也无法保证100%的安全。那么,企业投入10--30万来上一台WAF设备,拦截90%以上的来自互联网的攻击,使得攻击者没有机会来尝试。相比动辄几百万的安全监控项目,还不能保证100%的安全,我相信多数人都会选WAF。当然,无论你是选择商用或开源产品。
3 有哪些WAF是开源的?
如果你查询了搜索引擎,那么通常你会得到两种结果:ModSecurity 和 OpenResty 。
前者确实是开源WAF,而后者是Nginx+lua(第三方Web平台)。不可否认的是 OpenResty 确实是优秀的Web服务端平台,可实现各种你能想到的功能(包括WAF)。但开源的世界从来不缺少优秀的项目,优秀的开源WAF包括但不限于: ModSecurity、NAXSI、WebKnight、Shadow Daemon,当然还有我最近在用的 JXWAF(基于OpenResty)。
4 开始讨论WAF建设吧
除自建开源WAF之外,我们还有很多优秀的云WAF可以选择。云WAF是在CDN技术上的一种扩展,反向代理用户请求,并过滤攻击请求。它应该是这个样子的:
(请无视图画的丑,我是一边画图一边写稿)
云WAF接收到请求,也是通过Internet的方式请求真实的Web服务器,国内有:百度云加速,360网站卫士等优秀的免费云WAF可以使用。
但是,如果你认为,使用了云端WAF就没事儿了? 那就真的大错特错了!
通常,Web业务都会先上线,再根据业务需求做云端WAF的解析接入。这时候有两点致命的安全问题:1,Web服务会开放到互联网上,不会只开放给云端WAF(也就是,本地修改hosts,即可访问),当然,这方便了公司内部的开发人员和运维,但隐患也在这里;2,只为上线云端WAF,没必要更换Web服务的IP地址吧?
问题就在这里,攻击者可以通过查询DNS历史解析,很快可以找到真实的主机,更改到本地hosts或自建本地DNS,就优雅的绕过云端WAF了。毕竟,信息收集只是渗透测试的第一步。
但是,这并不是说云端WAF没有用,云端WAF确实会拦截很多扫描类的攻击,但要想防止攻击者,云端WAF确实还有所欠缺。
那么,是不是该讨论自建WAF了?以下给出推荐的开源WAF,搭建方式可以在官网找到,就不在这里贴出了。
1.JXWAF
https://github.com/jx-sec/jxwaf
JXWAF(锦衣盾)是一款基于OpenResty(Nginx+Lua)开发的下一代web应用防火墙,独创的业务逻辑防护引擎和机器学习引擎可以有效对业务安全风险进行防护,解决传统WAF无法对业务安全进行防护的痛点。内置的语义分析引擎配合机器学习引擎可以避免传统WAF规则叠加太多导致速度变慢的问题,同时增强检测精准性(低误报、低漏报)。
功能优势不是最大的,既然是开源,当然是中文社区了。QQ群是最方便的工具,你有任何问题都可以快速得到响应(JXWAF QQ Group:730947092)
OpenResty具有快速上手的优势(当然如果你有开发能力的话),也是我非常喜欢的Web引擎。
2.ModSecurity
http://www.modsecurity.org/
无法否认,ModSecurity确实是非常流行的开源WAF之一,有很多的开源防火墙也是参照它的实现思路。
但是可惜的是,ModSecurity并没有图形界面,如果你需要的话,可以考虑使用WAF-FLE(http://waf-fle.org/about/)。它可以在控制台中存储、搜索和查看事件。3.NAXSI
https://github.com/nbs-system/naxsi
NAXSI 是 Nginx Anti XSS & SQL Injection 的缩写。它是一个nginx的第三方模块。它默认的规则库自称可以过滤99%的已知Web攻击方式。当然,如果你将它放在生产环境,则还需要根据业务配置自动学习的工作方式,根据Web应用生成私有的白名单规则。4. WebKnight
https://www.aqtronix.com/?PageID=99
WebKnight本质上是一个 ISAPI的过滤器,它通过扫描所有请求并根据管理员设置的筛选规则对其进行请求的处理。它并不依赖需要定期更新的规则库(这也是它最大的亮点)。在默认配置中,记录所有被阻止的请求,管理员可以根据需要进行自定义。WebKnight 3.0具有管理Web界面,可以在其中自定义规则并执行统计等。
5.Shadow Daemon
https://shadowd.zecure.org/overview/introduction/
Shadow Daemon 是一组工具,以过滤带有恶意参数请求的方式,来检测、记录和防止Web攻击。它有一个自己的UI,管理员可以在其中执行管理WAF、它还支持PHP/Perl/Python语言框架。(PHP是这个世界上最好的语言)
Shadow Daemon可以检测 SQL注入、XML注入、代码注入、命令注入、XSS、后门、本地/远程文件包含等漏洞。开发人员可以将其嵌入Web应用中,以提升Web业务的安全性。
05 不能让WAF影响性能
如果你的用户量较大,单点WAF拖累了业务。不要着急,我们还可以做WAF池。LVS就是我们的最佳实践。
LVS+Keepalived 负载均衡方案虽然不是我们本篇讨论的重点,这里还是要引申出来。我们可以把WAF作为反向代理来看待,如下图:
(请再次原谅图丑,感谢您宽大胸怀)
既然Web服务器可以用负载均衡的方式,代理层就不行吗? 当然是可行的! 鉴于LVS+KeepAlived已经有太多的参考资料了,这里就不再复制粘贴了。
06 开源有哪些风险?
开源软件在一定程度上是免费的,但要与企业业务紧密结合,仍需要投入一定的人力成本(需要踩坑),以及需要一定的开发能力。当然,只能获取社区支持。另外,既然是开源,也是攻击者研究的对象,没有“绝对”安全的产品。安全类产品一旦出现漏洞不能及时处理,则形同虚设。
这时候,商用WAF的价值就凸显出来了,国内做的不错的WAF厂有:远江盛邦(WebRay)、依讯信息、安恒信息等。商用WAF各厂都有特色,具体可以直接与厂商联系。
后记:这篇讨论WAF的稿子,明明有一肚子话要说,可是写了又删,再写再改,连续折腾了几天,难道我不是明明?忽然发现,20年前30分钟写1200字作文的小伙儿已经不知道去哪儿了。我承认,成长会让我们失去一些能力。但解决这个问题的最佳方案就是持续成长。关注 河南CISP 公众号,我们一同成长!学习交流,请在公众号回复 “我要入群” 获得入群方式(人数够100人拉群)。
声明:本文来自河南CISP,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。