ModSecurity Framework 支持 Web 应用安全核心规则集

  • Srini Penchikala
  • 张龙

2009 年 9 月 21 日

话题:架构语言 & 开发

最新版的ModSecurity(一个开源的 Web 应用防火墙,即 WAF)开始支持核心规则集Core Rule Set,即 CRS,可用于定义旨在保护 Web 应用免受零日及其他安全攻击的规则)了。ModSecurity 团队发布的 2.5.10 版还包含了其他一些特性,如并行文本匹配、Geo IP 解析和信用卡号检测等,同时还支持内容注入、自动化的规则更新和脚本等内容。

我们可以通过 ModSecurity 手工创建安全过滤器、定义攻击并实现主动的安全输入验证。此外,它还提供了一个面向 Lua 语言的新的 API,为开发者提供一个脚本平台以实现用于保护 Web 应用的复杂逻辑。

ModSecurity Core Rules 2.0 于上个月发布,这是一个基于事件的编程语言,包含了用于事务查询的各个步骤、能够转换数据以进行辨别、还可以将多个规则合成起来以形成复杂逻辑。其他的入侵检测(IDS)与防御系统(IPS)根据特定于攻击的签名来实施防范,而核心规则集却是根据一般的规则来防范常发生在 Web 应用中的安全攻击,这种攻击在大多数情况下都是自定义的,换句话说,攻击代码是无章可循的。核心规则集框架通过以下技术来保护 Web 应用的安全:

  • HTTP 防护——对违背 HTTP 协议与本地定义的使用策略的行为进行检测。
  • 常见的 Web 攻击防护——对常见的 Web 应用安全攻击进行检测。
  • 自动检测——对机器人、爬虫、扫描及其他恶意行为进行检测。
  • 特洛伊木马防护——对特洛伊木马进行检测。
  • 错误隐藏——伪装成服务器发出的错误消息。

InfoQ 有幸采访到了 Breach Security 应用安全研究院主管及 ModSecurity 项目领导 Ryan Barnett 以了解 ModSecurity 的新特性及与其他 Web 应用防火墙产品相比 ModSecurity 有哪些与众不同之处。

与其他 Web 应用防火墙产品,尤其是那些基于硬件的设备,如 Cisco、Imperva 与 Breach 等相比,ModSecurity Framework 有何与众不同之处?

开源的 ModSecurity 与那些商业产品相比有太多不同之处了。

硬件设备对比软件方案:ModSecurity 是一个软件 Web 应用防火墙引擎,本质上是个 Apache module。这意味着它是嵌入在目标 Web 服务器当中的,而并非部署在单独的设备中。然而,我们也可以将 Apache 配置成一个反向代理并达到类似的目的,但要知道 ModSecurity 本身并不会处理这个方面。

软件 WAF 方案的优势:有些情况需要进行大规模的部署,在这种情况下,将 WAF 分布在目标 Web 服务器当中要比从垂直方向上增加外部硬件设备实际的多。嵌入式部署的另一个好处是无需再去处理 SSL 解码了,因为 Web 服务器会进行预处理并将数据回传给 ModSecurity。

软件 WAF 方案也并非完美无缺,其缺点如下:



  • 可能无法将新的软件加到 Web 服务器当中。
  • 会使用到本地资源。
  • 反应时间的影响——很多商业 WAF 设备可以在 Sniff 模式下进行非线性部署,这样就无法评估在线性情况下对 HTTP 事务的访问所需的反应时间了。
商业与开源产品高级功能对比:ModSecurity 拥有一个高级的规则语言和 Lua API 以编写复杂逻辑。我们既可以创建消极安全规则(寻找已知的坏输入),也可以创建积极安全规则(只允许已知的好输入)以规定输入验证的防护类型。这种方式的主要限制在于 ModSecurity 无法自动化创建这些规则,所以必须手工创建。但只在以下两种场合之一才行:

A. 如果 Web 应用不经常变化



B. 响应攻击扫描报告,在这种情况下可以使用目标的积极安全规则

如果将 ModSecurity 作为一个对已知问题的虚拟修补方案,那么它就不太适合于 B 了。高端的商业 WAF 都具有自动化的学习和分析机制以创建这些积极安全规则,同时还能够从客户端与 Web 应用之间的交互中进行学习。

对于安全管理来说,网络路由器要比 Web 服务器(Apache)更棒么?

这取决于实际情况。安全策略、日志分析与报告的中心化实现是个不错的主义。然而从技术角度来说,你需要确保在相同的上下文中去评估数据,因为受保护的 Web 应用处于临界环境下,因此理想的情况是越接近应用越好,在应用中就更棒了,这么做会减少错误的消息规则出现的可能性。

除了 Apache 以外,ModSecurity 还能运行在其他的 Web 服务器上么,如微软的 IIS

现在还不行,但未来会实现的。我们的首要目标是让 ModSecurity 成为 IIS 的插件(以 ISAPI filter 的形式)。

能否详细谈谈核心规则集项目有哪些新特性,这些新特性是如何帮助开发者和 Web 管理员保护 Web 应用免受安全攻击的困扰。

新的核心规则集(CRS)有很多更新:

  • 更多的安全防护措施,如跨站脚本(XSS)、SQL 注入及远程文件包含(RFI)。
  • Snort Web 攻击签名——拥有很大的一个规则集,里面包含了 Emerging Threat Snort Web 攻击签名,同时 Breach 安全实验室还会不断发布新的签名。
  • 协作规则——现在协作已经是个潮流了,所有的 CRS 规则都可以设定事务性变量以指定匹配的规则、匹配的位置及匹配的负载数据。
  • 不规则分数——现在每个规则都会在总的不规则分数中占据一定的比重,用户可以为其站点指定恰当的极限分数。
  • 更简单的异常处理——现在用户可以添加自己的本地异常以覆盖 CRS 检查而无需编辑规则自身。

在寻求 Web 应用防火墙方案时的最佳实践是什么?网络管理员与开发者需要牢记哪些内容?

检视 OWASP 的最佳实践:仔细阅读 Web 应用防火墙文档。它含有大量的信息来评估一个 WAF 是否 / 何时 / 如何能帮助你的组织。

检视 WASC Web 应用评估标准(WAFEC)文档。该文档概览了不同的 WAF 功能。你应该着重看那些对你来说很重要的特性,然后将其作为 WAF 评估的一个标准。

根据 WAF 搜集的数据建立一个针对事件处理的流程。既然已经对 HTTP 的通信堵塞有了深入的了解,你会发现之前所遗漏的内容。需要确保有一个计划以应付新接收的数据。

ModSecurity 项目未来的路线图如何?

从长远来看,我们希望 ModSecurity 成为一个自我包含的程序库,这样就能插入到任何应用当中了。Breach Security 正积极地参与到 Open Information Security Foundation(OISF)的项目中以创建新式的网络入侵检测系统,同时我们还继续在 HTTP 引擎上进行着艰苦卓绝的努力。这些工作成果的大部分都将融合到 ModSecurity 中。

查看英文原文:ModSecurity Framework Supports Web Application Security Core Rule Set

架构语言 & 开发