Home Blogs WAF调谐变得简单
Applications

About The Author

Outline

小型和新企业都面临着严峻的安全挑战。 他们需要成熟的安全解决方案来确保Web应用程序的安全,同时最大限度地降低雇用专业安全专家或第三方托管服务的成本。 随着新的攻击向量的不断涌现,Web应用程序安全变得比以往任何时候都更加重要,更具挑战性。 Edgecast (现为Edgio,WAF)就是解决方案。 它提供了一个强大而复杂的解决方案,可简化管理。 实时仪表板和日志交付提供最新的可见性,以便管理员可以快速识别威胁并采取措施。 在本博客中,我们将重点介绍企业如何识别和消除误报,并为其Web应用程序构建自定义解决方案,而不会产生任何额外的支持成本。 如果您是这个领域的新手,但尚未使用Edgio WAF,请观看这个简短的教程,了解用户界面及其工作原理。 如果你已经有一个帐户,请随意与我一起做这个练习。 1.首先,我们转到实时仪表板,然后按时间筛选WAF事件。 这是您要分析Web流量的时间段。 (注意:如果您之前已经执行过一些规则调整,请务必在最近一次调整之后选择一个时间范围)。

图1:过去6小时内发生的WAF事件。

2.查看此流量触发的前10个规则ID。 规则ID是进一步过滤流量和观察各种WAF事件的有效负载的好方法。 也就是说,开始按这些规则ID逐个过滤流量以进行进一步分析。

图2:WAF事件触发的前10条规则。

3.接下来,通过查看匹配值字段来查看触发此规则的有效负载值。

图3:匹配值列下的有效负载值。

4.分析有效负载值以确定它们是否是恶意的。 不确定它们是什么样的? 下面是您可能会在负载中找到的一些潜在恶意值。

  • 路径遍历:http://some_site.com.br/../../../../some dir/some file¹ http://testsite.com/get.asp?f=/etc/passwd²‍
  • LFI漏洞:攻击者试图访问服务器上的敏感文件,如.ini。默认情况下,Edgecast WAF会阻止此文件和许多其他重要文件系统扩展。³‍
  • 跨站点脚本:http://testsite.test/<脚本>alert(“测试”);</script>⁴ <img src=” http://url.to.file.which/not.exist”onerror=alert(document.cookie);>⁵‍
  • SQL注入:从’a’=’a’的项目中选择*;⁶ select 1;⁷‍
  • 远程执行代码:Eval(“\$$USER =‘$regdate’);⁸‍
  • 基于时间的攻击:选择1和睡眠(2);⁹选择基准(2000000,MD5 (‘a’));¹⁰

5.如果您仍然不确定有效负载是否为恶意,一个很好的方法是查看发起请求的客户端IP列表以及相应的有效负载。 如果客户端IP是分布式的,也就是说,不同的,有效负载很有可能是误报。 但是,如果所有客户端IP都具有相同的值,则表明可能发生容量攻击,从而将其归类为恶意有效负载。 为了演示这一点,让我们参考步骤3,并选择此匹配值–{“IATA”:[“TGZ”,”MEX”]}并将其用作示例。 要查找发送此有效负载的客户端IP列表,请添加匹配的值作为筛选器,如下所示:

图5:发送有效负载值的客户端IP:{“IATA”:[“TGZ”,”MEX”]}。

在这种情况下,鉴于发出此请求的IP地址多种多样,这些请求很可能源自真实用户,因此很有可能成为误报的候选对象。

6.识别出误报后,您可以在”托管规则”部分中为其创建异常,但在执行此操作之前,您需要找出找到此负载的位置;查询字符串,请求标头,URL或其他位置。 通过在步骤5中查看同一页面上的”匹配于”列,可以轻松完成此操作。 在此用例中,有效负载在”data”查询参数中找到,如下所示:

图6:有效载荷值的位置:{“IATA”:[“TGZ”,”MEX”]}。

7.一个很好的经验法则是筛选包含误报有效负载的特定匹配字段,然后验证此匹配参数是否包含实际恶意有效负载的任何其他请求。 换句话说,在现场匹配的特定负载绝不是恶意的。 这是通过在有问题的字段上匹配的上添加过滤器来实现的。 查看我们的用例,我们可以确认在此查询参数中未发现任何恶意负载:

图7:在查询参数data中发送的所有有效负载值。

8.创建异常之前的最后一步是查找由匹配的时间字段触发的规则ID。 我们正在尝试记录由这种误报触发的所有规则(规则ID)。 根据我们的使用案例,此信息可在步骤5的同一页面上找到。

图8:由有效负载值触发的规则列表:{“IATA”:[“TGZ”,”MEX”]}。

9.是时候创建异常了。 转到”托管规则”部分,然后单击要向其中添加这些例外的托管规则。

图9:为WAF配置创建的现有托管规则。

10.转到”例外”选项卡,然后单击”添加新条件”。 选择字段上匹配的类型,如args,request_cookie或找到有效负载的URL。 然后输入参数的名称,如查询或cookie。 最后,输入有效负载触发的所有规则ID的列表。

图10:”Managed Rule (托管规则)”配置下的”Exceptions (例外)”选项卡。 11.继续前进,创造这种条件。 在保存托管规则后的30秒内,您将能够看到此误报通过WAF继续传递 12.既然您已经了解了此方法的工作原理,请返回到步骤3 ,按另一个规则ID筛选流量,然后重复此过程以尽可能多地消除误报。 你做到了。 您只需针对您的流量自定义WAF解决方案。

最后几个技巧

如果您是首次使用Edgio WAF,我们建议您在打开阻止模式之前先执行2-3轮练习。 根据您的流量,您可以每2-7天重复此练习。 对于现有Edgio WAF客户,我们建议每3-4周执行一次微调练习。 您应该考虑的另一件事是将托管规则的阈值降至10以下,逐渐达到5的最优值。 这可确保您稳步策划一个更精确,更清晰的规则集。 请记住,Edgio WAF提供双WAF,这是实时流量的实际暂存环境(审核模式)。 您可以对所有重复更新和规则集的微调使用审核模式,而不必担心丢弃合法流量。 请立即与我们联系,了解有关我们所有安全技术的更多信息,确保您的Web应用程序安全。
资源: ¹⁻² OWASP,”路径遍历“,owasp.org,owasp.org/www-community/attacks/Path_Traversal。 ³攻击性安全,”文件包含漏洞“,offensive-security.com,offensive-security.com/metasploit-unleashed/file-inclusion-vulnerabilities/。 ⁴⁻⁵ OWASP,”跨站点脚本“,owasp.org,owasp.org/www-community/attacks/xss/。 ⁶⁻⁷OWASP,”SQL注入“,owasp.org,owasp.org/www-community/attacks/SQL_Injection。 ⁸ Netsparker,”远程代码评估(执行)漏洞“,netsparker.com,netsparker.com/blog/web-security/remote-code-evaluation-execution/。 ⁹⁻¹⁰ Ashraff,Ahmad,” Web应用程序中基于定时的攻击“,owasp.org,owasp.org/www-pdf-archive/2018年02月05日-AhmadAshraff.pdf