这本书“ Safe DevOps。 高效的系统运行

图片 嗨,habrozhiteli! 在云中运行的应用程序具有许多优势,但同时也面临特殊威胁。 DevOps团队的任务是评估这些风险,并增强系统对这些风险的防护。 该书基于作者的独特经验,并提供了最重要的战略解决方案来保护Web应用程序免受攻击,以防止入侵。 您将了解如何通过自动测试,连续交付和关键的DevOps流程来确保可靠性。 学习识别,评估和修复应用程序中存在的漏洞。 作者将帮助您在云配置中导航,以及应用流行的自动化工具。 需要Linux知识和标准DevOps实践的知识,例如CI,CD和单元测试。


摘录。 第8章入侵和攻击检测的日志分析


在本章中:

  • 探索日志记录管道中的分析级组件。
  • 使用字符串签名,统计信息和历史数据检测入侵和攻击。
  • 管理以最佳方式通知用户的方法。

在第7章中,您学习了如何创建一个日志管道,该管道从整个基础结构收集,传输,分析和存储日志,并提供对它们的访问。 多级管道创建了一个灵活的基础架构,其中来自各种来源的日志用于监视组织服务的活动。 第7章概述了所有级别的管道提供的功能。 在本章中,我们将专注于第三级(分析级),并深入探讨与检测服务的入侵和攻击有关的技术和代码示例。

Mozilla在编写本书时使用的日志记录管道类似于第7章中显示的日志管道。该管道用于在自然环境中监视Firefox客户端的状态(称为遥测 ),处理应用程序和服务日志,并检测异常活动。 流水线的逻辑中心位于分析级别,由许多不断寻找异常内容的小程序组成。 这些小型程序没有处理日志事件的输入和输出的高级功能,因此它们将这项任务转移到专用数据中心-Hindsight程序(http://mng.bz/m4gg),该程序旨在执行分析数据流上插件的工作。 。

在本章中,我们将使用Hindsight阅读各种类型的杂志,并编写原始插件进行分析。

注意

本章的示例日志和插件位于secure-devops.com/ch08/logging-pipeline 。 您需要将该存储库复制到本地计算机,并获得Hindsight Docker容器才能运行示例。

让我们开始描述如何安排分析级别的各个部分:Hindsight位于中间,收集和存储级别位于两侧。 然后,我们将讨论三种检测入侵和攻击的方法。 最简单的方法是使用字符串签名,其中包含有关已知攻击的信息以发送通知。 接下来,我们将统计模型和带有签名的方法进行比较,并了解这两种方法如何相互补充。 最后,让我们看一下应用历史用户活动数据来识别连接中可疑区域的方法。

本章的最后一部分是关于发送通知的。 您不太可能希望每天都收到来自分析级别的成千上万的通知,这会产生很多噪音,而不是有用的。 如果未更改此设置,则收件人将把通知视为垃圾邮件,并将其忽略。 在本章的最后一节中,我们将考虑组织通知发送的最佳实践,并讨论准确,有效地向管理员和最终用户发送通知的方法。

8.2。 使用字符串签名检测攻击


使用日志时,将使用字符串。 这意味着识别欺诈迹象的最简单方法是将日志与已知恶意行列表进行比较。 看起来似乎很简单,但是正是这些年从事安全行业。 在2000年代中期如此流行的Web应用程序防火墙(WAF)本质上是一个正则表达式存储库,将对发送到Web应用程序的每个请求进行检查。

不要依赖正则表达式

我曾经在一家广泛使用这种保护的银行工作。 安全团队负责支持WAF,WAF保护各种在线服务,包括为客户提供的交易服务。 发送到此服务的每个Web请求在到达应用程序服务器之前都要经过数百个正则表达式。 一旦来自在线交易服务团队的开发人员决定查看这些正则表达式。 我不知道是什么促使工程师开始读取文件的内容,该文件主要包含斜杠,美元符号,星号,加号,方括号和括号,但他接管了。 在第418行的复杂正则表达式中的某个地方,他发现了“。+”的可疑组合。 两个无辜的字符使一切都可以轻松进行:此正则表达式类似于“允许一切”的值。

我们的骄傲是Web应用程序的防火墙要花费几千欧元,并得到整个团队的支持,它执行了数百次正则表达式检查,从而影响了性能,并使本来已经很复杂的系统的设计变得复杂,而所有这些都是为了跳过所有不受阻碍的事情。 当然,我们很快就解决了这个问题,但是从那时起,我对使用正则表达式确保安全性的信念就没有增加。 如果要在组织中实施这种类型的保护系统,请考虑其复杂性,以免发生这种情况。

如果正确使用正则表达式可以成为强大的工具,但是它们很难编写,难以维护,随着时间的流逝甚至更加困难,并且大规模实现非常昂贵。 看一下正则表达式((\%3C)| <)((\%2F)| \ /)* [a-z0-9 \%] +((\%3E)|>)。 您不会猜测它的用途,所以我将告诉您:它可用于在HTTP请求字符串中搜索注入,从而揭示了打开和关闭<>不等号字符及其内容的存在。 您将从攻击者那里收到这种类型的HTTP请求行,该攻击者试图将恶意JavaScript代码注入您的应用程序中,最终导致跨站点脚本攻击,我们将在第3章中进行讨论。

此正则表达式可用于识别包含注入尝试的可疑请求。 清单8.7显示了一个示例解析器,该解析器通过检查每个传输的NGINX访问日志中的正则表达式匹配来实现此目的。 正则表达式存储在本地xss变量中,使用rex.match()函数将其值与每个Fields [request]值进行比较。

如果存在匹配项,则add_to_payload()函数将发送一条通知,告知输出插件可以接收并传输到目标。

清单8.7。 一个插件,用于检测查询字符串中包含攻击迹象的日志消息


图片

清单8.8显示了此插件的输出示例。 样本杂志产生了一些通知,其中一些结果被证明是误报。 发生这种情况的部分原因是示例日志是使用ZAP漏洞扫描程序人为创建的,并且还因为查询字符串不倾向于包含HTML标记。 特别是,此正则表达式的查找假阳性匹配率不会很高。

清单8.8。 XSS分析插件生成的通知示例


图片

这只是一种特定攻击类型的一个正则表达式。 为了使这种方法有用,您需要查找除正则表达式以外的内容。 对于初学者来说,您可以从各种来源收集签名,并且随着日志中发现越来越多的可疑符号,逐渐增加了数据库的大小。

清单8.9显示了XSS分析器的修改版本,该版本查找各种攻击迹象(http://mng.bz/62h8)。 该脚本显示了如何使用Lua表存储属性列表,并循环使用它来分析传入事件。 在此代码示例中,suspicious_terms表是一行简单的行,使用子字符串搜索正则表达式,这要快得多。 suspicious_terms表使用键值格式将标签与表达式一起存储,以便能够提醒您该表达式应该找到。

清单8.9。 使用字符串和表达式搜索攻击迹象


图片
图片

您可以使用本章开头介绍的测试设置来运行此分析仪。 启动带有已安装目录的Docker容器,分析器的输出将写入output / payload / analysis.suspicious_signatures.alerts.txt。 该插件将发送数千条通知,这是预期的,因为这些日志是由ZAP漏洞扫描程序生成的。 这种方法可以被认为是成功的,但是您应该考虑它的缺陷。

  • 正则表达式很难编写,甚至更难阅读 。 您将犯下的错误不容易调查,并且需要数小时的痛苦调试。 该分析器中只有四个正则表达式,但是读取这部分代码已经很困难。 无论该工具使用正则表达式多么强大和有吸引力,我都不建议您经常使用它们。
  • 通过这种方法,生成了太多的通知 。 开放到Internet的Web应用程序会收到很多异常流量,这些流量不是恶意的,而是恶意邮件。 即使误报率很低,为每个异常标志生成通知也会使任何安全团队疯狂数周。 异常流量是Internet上运行的服务的自然现象。

您可以通过应用数学方法来解决这两个问题,并使此用于检测异常的完善系统变得不那么完美。 在下一节中,我们将研究如何克服阈值时使用统计方法发送通知,以减少异常检测逻辑中的噪声。

关于作者


在撰写本文时, Julien Vehen正在管理Firefox Mozilla的运营安全团队。 他负责创建,实施和运行Web服务安全策略,每天都有数百万Firefox用户与之交互。 朱利安(Julien)在2000年代初期致力于保护网络服务。 他开始在Linux中担任系统管理员,并于2007年获得了信息安全硕士学位。

»这本书的更多信息可以在出版商的网站上找到
» 目录
» 摘录

小贩优惠券可享受25%的折扣-DevOps

支付纸质版本的书后,就会通过电子邮件发送电子书。

Source: https://habr.com/ru/post/zh-CN468085/


All Articles