Web应用防火墙技术调研

author: echo-x-echo

Web 应用程序防火墙(WAF)是位于 Web 应用程序和客户端端点之间的安全策略实施点。此功能可以在软件或硬件中实现,在专有设备中运行,或在运行通用操作系统的典型服务器中实现。它可以是独立设备或集成到其他网络组件中。

image.png

WAF会在HTTP流量抵达应用服务器之前检测可疑访问,同时它也能防止从Web应用获取某些未经授权的数据。

WAF 的工作原理:

  • 使用一组规则来区分正常请求和恶意请求。
  • 使用机器学习自主生成规则。

操作模式:

  • 否定模型(基于黑名单) - 黑名单模型使用预设签名来阻止明显恶意的 Web 流量,以及旨在防止利用某些网站和 Web 应用程序漏洞进行攻击的签名。黑名单模型 Web 应用程序防火墙是公共 Internet 上的网站和 Web 应用程序的绝佳选择,并且对主要类型的 DDoS 攻击非常有效。例如。阻止所有<script>*</script>输入的规则。
  • 正面模型(基于白名单) - 白名单模型仅允许根据特定配置标准的网络流量。例如,它可以配置为仅允许来自某些 IP 地址的 HTTP GET 请求。这种模型对于阻止可能的网络攻击非常有效,但白名单会阻止大量合法流量。白名单模型防火墙可能最适合内部网络上的 Web 应用程序,这些应用程序设计为仅供有限的一群人使用,例如员工。
  • 混合/混合模型(包含模型) - 混合安全模型是一种混合了白名单和黑名单的模型。根据各种配置细节,混合防火墙可能是内部网络上的 Web 应用程序和公共 Internet 上的 Web 应用程序的最佳选择。

目前WAF的产品形态主要有:

  • 硬件产品

硬件WAF串行或旁路部署在网络上,通过Web界面进行管理和规则配置,价格较高,但部署方便,运维管理比较省心。

  • 纯软件产品

软件WAF以ModSecurity、Naxsi等免费开源软件为代表,部署在每一台Web服务器上,需要网络安全人员熟悉其配置规则,但服务器数量多了之后,这种单机模式安装的软件,维护管理很快就会变得不太方便,因为不同的服务器可能使用不同的规则。

  • 云WAF产品

以各类云加速+CDN类产品为代表,如国外的CloudFlare、国内的各种云加速等,对用户隐藏真实服务器地址,云WAF作为反向代理执行安全控制,是用户浏览器和真实服务器之间的中间人。

  • 自研WAF产品

如果上述几种WAF无法满足业务的需求,则需要考虑自己开发定制WAF了。


开源的WAF项目列表

1. ModSecurity

ModSecurity已经有10多年的历史,最开始是一个Apache的安全模块,后来发展成为开源的、跨平台的WEB应用防火墙。它可以通过检查WEB服务接收到的数据,以及发送出去的数据来对网站进行安全防护。

著名安全社区OWASP,开发和维护着一套免费的应用程序保护规则,这就是所谓OWASP的ModSecurity的核心规则集(即CRS),几乎覆盖了如SQL注入、XSS跨站脚本、DDOS等几十种常见WEB方法。

项目地址:https://github.com/SpiderLabs/ModSecurity

2. hihttps

hihttps是一款 高性能WEB应用 + MQTT物联网防火墙,兼容ModSecurity规则并开源。
特点是使用简单,就一个约10M的可执行文件,但防护功能一应俱全,包括:漏洞扫描、CC &DDOS、密码破解、SQL注入、XSS***等。
TA基于机器学习的商业版本,也是免费的,由机器自动采集样本无监督学习,自动生成对抗规则。

项目地址:https://github.com/qq4108863/

3. Naxsi

Naxsi 是一款基于Nginx模块的防火墙,有自己规则定义,崇尚低规则。项目由C语言编写。

项目地址:https://github.com/nbs-system/naxsi
使用介绍: https://cloud.tencent.com/developer/article/1644808

4. OpenWAF

基于 Nginx_lua API来分析HTTP请求信息,它由行为分析引擎和规则引擎两大功能引擎构成.其中规则引擎主要对单个请求进行分析,行为分析引擎主要负责跨请求信息追踪。规则引擎的启发来自modsecurity及freewaf(lua-resty-waf),将ModSecurity的规则机制用lua实现。

基于规则引擎可以进行协议规范,自动工具,SQL注入,跨站***,信息泄露,异常请求等安全防护,支持动态添加规则,及时修补漏洞。
缺点是复杂,不适合不熟悉Nginx和lua语言的开发者。

项目地址:https://github.com/titansec/OpenWAF

5. VeryNginx

基于 lua_Nginx_module(openrestry) 开发,实现了高级的防火墙、访问统计和其他的一些功能。集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 WEB 交互界面。

项目地址:https://github.com/alexazhou/VeryNginx/

6. ngx_waf

基于 lua-nginx-module 实现的一个高性能的轻量级 web 应用防火墙,使用简单,功能也不少, 诸如:

  • SQL 注入防护(Powered By libinjection)。
  • XSS 攻击防护(Powered By libinjection)。
  • 支持 IPV4 和 IPV6。
  • 支持开启验证码(CAPTCHA),支持 hCaptchareCAPTCHAv2reCAPTCHAv3。此功能仅限最新的 Current 版本。
  • 支持识别友好爬虫(如 BaiduSpider)并自动放行(基于 User-Agent 和 IP 的识别)。此功能仅限最新的 Current 版本。
  • CC 防御,超出限制后自动拉黑对应 IP 一段时间。
  • IP 黑白名单,同时支持类似 192.168.0.0/16fe80::/10,即支持点分十进制和冒号十六进制表示法和网段划分。
  • POST 黑名单。
  • URL 黑白名单
  • 查询字符串(Query String)黑名单。
  • UserAgent 黑名单。
  • Cookie 黑名单。
  • Referer 黑白名单。
  • 高级规则,将动作(如拦截或放行)和多个条件表达式组合起来。

项目地址: https://github.com/ADD-SP/ngx_waf/
中文文档: https://github.com/ADD-SP/ngx_waf/blob/master/README-ZH-CN.md
案例介绍: https://blog.hibobmaster.com/ngx_waf/

商业WAF产品

下图是从网络检索到的海外厂商提供的商业waf产品.


image.png

AWS WAF

项目介绍: https://aws.amazon.com/cn/waf/

AWS WAF是一种 Web 应用程序防火墙,可帮助保护您的 Web 应用程序或 API 免遭常见 Web 漏洞和机器人程序的攻击,这些漏洞可能会影响可用性、损害安全性或消耗过多的资源。AWS WAF 允许您创建控制机器人程序流量和防范常见攻击模式(例如 SQL 注入或跨站点脚本)的安全规则,从而让您可以控制流量到达您的应用程序的方式。您还可以自定义滤除特定流量模式的规则。您可以使用 AWS WAF 的托管规则快速入门,这是由 AWS 或 AWS Marketplace 卖家管理的一系列预先配置的规则,可用于解决 OWASP 10 大安全风险和消耗过多资源、扭曲指标或可能导致停机的自动机器人程序等问题。这些规则会随新问题的出现定期更新。AWS WAF 包含功能全面的 API,借此您可以让安全规则的创建、部署和维护实现自动化。

您可以将 AWS WAF 作为 CDN 解决方案的一部分部署到 Amazon CloudFront 上,也可以将其部署到位于 Web 服务器或来源服务器(运行于 EC2 上)之前的 Application Load Balancer、适用于您的 REST API 的 Amazon API Gateway 或者是适用于您的 GraphQL API 的 AWS AppSync 上。 AWS WAF 仅需按实际使用量付费,定价基于您部署的规则数量和您的应用程序收到的 Web 请求数量。

image.png

WAF自研方案

如果前面几种方案都不太适用, 可能就需要自己开发WAF。作为辅助性防御设施, 那就需要考虑以下几点:

  • 能够通过服务器(云端)统一配置和下发策略;
  • 能够自动上报拦截日志;
  • 拦截黑客入侵行为,包括但不限于:SQL注入、跨站脚本、路径操纵、上传/利用网页木马、CC攻击等;
  • 规则要少,允许漏报,但不能误报。

参考开源架构,能实现如下图的落地WAF方案

image.png

安全模块(WAF Agent)执行实际的拦截动作,它基于ngx_lua开发,执行访问控制,嵌入Web服务器Nginx当中,如果用户提交的URL或某一项参数匹配上拦截规则,则直接拦截并将拦截日志报告给WAF Center,不再传递给应用服务器。自动连续记录黑客攻击行为 + 改进完善:黑客在入侵尝试时一般会至少触发多条规则,只要触发一次,就连续记录其随后一段指定时间内的所有访问请求并报告给WAF Center,可供人工分析改进。

WAF Center即WAF的集中管理中心,主要功能有两点:

  • 规则库,设立规则库更新接口,用于防御规则更新;
  • 日志库,设立日志库,接收各WAF Agent上报过来的拦截日志以及可疑的访问日志。

WAF Center采用Web化界面进行管理,将入侵情况变得可视化起来:以前不知道黑客攻击的情况(因为没有数据),WAF上线后,已部署Agent的应用可直观看到攻击的情况;

可用性方面,WAF Center如果宕机,不影响安全模块继续按照之前获取的规则进行服务。


上面所列举的WAF应用都是单独部署在应用程序之外的, 也有一些与应用程序集成在一起的防护工具库,下面挑选了php语言实现的几款:

这些就是操作简单,便于集成到项目代码中


后记

无论是哪一种WAF,它的定位就决定了只能是一款辅助性安全防御产品,无法从根本上解决产品自身存在的安全缺陷。考虑到安全与效率,WAF也不可能去拦截所有的入侵尝试,毕竟绕过WAF的技巧还是非常之多的。

根本性的防御措施还是需要放在安全开发流程、安全规范的落地和推行上面。

参考文章:

https://docs.addesp.com/ngx_waf/zh-cn/guide/overview.html
https://zhuanlan.zhihu.com/p/20472864
https://aws.amazon.com/cn/waf/
https://cloud.tencent.com/developer/article/1401355
https://zhuanlan.zhihu.com/p/72897733
https://github.com/Bypass007/Safety-Project-Collection
https://github.com/0xInfection/Awesome-WAF

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容