ELK如何帮助安全工程师对抗网站攻击,安然入睡

我们的网络防御中心负责客户网络基础设施的安全并抵御对客户网站的攻击。 为了防止攻击,我们使用 FortiWeb Web 应用程序防火墙 (WAF)。 但即使是最酷的 WAF 也不是万能药,也不能“开箱即用”地保护免受有针对性的攻击。 

因此,除了WAF之外,我们还使用 麋鹿。 它有助于将所有事件收集到一个地方,积累统计数据,将其可视化,并使我们能够及时看到有针对性的攻击。

今天,我将更详细地告诉您我们如何与 WAF 跨过圣诞树,以及它带来了什么。

ELK如何帮助安全工程师对抗网站攻击,安然入睡

一次攻击的故事:切换到 ELK 之前一切是如何运作的

在我们的云中,客户已在我们的 WAF 后面部署了应用程序。 从每天10万到000万用户连接到该网站,每天的连接数达到了100万。 其中,000-20 位用户是入侵者并试图入侵该网站。 

FortiWeb 很容易就阻止了来自一个 IP 地址的通常形式的暴力破解。 该网站每分钟的点击次数高于合法用户。 我们只需设置一个地址的活动阈值即可击退攻击。

当攻击者行动缓慢并将自己伪装成普通客户端时,处理“缓慢攻击”要困难得多。 他们使用许多唯一的 IP 地址。 对于 WAF 来说,此类活动并不像是大规模的暴力行为,自动跟踪它更加困难。 而且还存在阻止普通用户的风险。 我们寻找其他攻击迹象,并根据该迹象设置自动阻止 IP 地址的策略。 例如,许多非法会话在 http 请求标头中具有公共字段。 您经常必须在 FortiWeb 事件日志中手动查找此类字段。 

时间变得很长而且不舒服。 在 FortiWeb 的标准功能中,事件以文本形式记录在 3 个不同的日志中:检测到的攻击、有关请求的信息以及有关 WAF 操作的系统消息。 一分钟内可能会发生数十甚至数百起攻击事件。

没那么多,但你必须手动爬过几条日志并迭代许多行: 

ELK如何帮助安全工程师对抗网站攻击,安然入睡
在攻击日志中,我们可以看到用户地址和活动的性质。 
 
仅仅扫描日志表是不够的。 要找到有关攻击性质的最有趣和最有用的信息,您需要查看特定事件的内部:

ELK如何帮助安全工程师对抗网站攻击,安然入睡
突出显示的字段有助于检测“慢速攻击”。 来源:截图自 飞塔网站

嗯,主要问题是只有 FortiWeb 专家才能解决这个问题。 如果在工作时间我们仍然可以实时追踪可疑活动,那么夜间事件的调查可能会被推迟。 当 FortiWeb 策略由于某种原因不起作用时,值班的夜班工程师无法访问 WAF 来评估情况,并唤醒了 FortiWeb 专家。 我们查看了日志几个小时,找到了攻击的时刻。 

信息量如此之大,很难一目了然并主动采取行动。 然后我们决定将数据收集到一个地方,以便以可视化的形式分析一切,找到攻击的起点,确定其方向和阻止方法。 

你选择了什么

首先,我们研究了已经使用的解决方案,以免不必要地增加实体。

第一个选择是 Nagios的我们用来监控 工程基础设施, 网络基础设施,紧急警报。 保安人员还用它在出现可疑流量时通知服务员,但它不知道如何收集分散的日志,因此消失了。 

有一个选项可以聚合所有内容 MySQL 和 PostgreSQL 或其他关系数据库。 但为了提取数据,有必要塑造您的应用程序。 

作为我们公司的日志收集器,他们也使用 强化分析仪 来自福廷特。 但在这种情况下,他同样不适合。 首先,与防火墙配合使用更加锐利 FortiGate设备。 其次,缺少许多设置,与其交互需要对 SQL 查询有很好的了解。 第三,它的使用会增加客户的服务成本。   

这就是我们面对开源的方式 麋鹿

为什么选择ELK 

ELK是一组开源程序:

  • Elasticsearch - 时间序列数据库,刚刚创建用于处理大量文本;
  • Logstash – 可以将日志转换为所需格式的数据收集机制; 
  • Kibana - 一个很好的可视化工具,以及一个相当友好的管理 Elasticsearch 的界面。 您可以使用它来制定可由值班工程师在夜间监控的时间表。 

ELK的进入门槛较低。 所有基本功能都是免费的。 幸福还需要什么。

您是如何将所有这些整合到一个系统中的?

创建索引并只留下必要的信息。 我们将所有三个 FortiWEB 日志加载到 ELK 中 - 输出是索引。 这些文件包含一段时间内(例如一天)收集的所有日志。 如果我们立即将它们可视化,我们只会看到攻击的动态。 有关详细信息,您需要“深入”每次攻击并查看特定字段。

ELK如何帮助安全工程师对抗网站攻击,安然入睡

我们意识到,首先我们需要设置非结构化信息的解析。 我们将长字段作为字符串,例如“Message”和“URL”,并解析它们以获取更多决策信息。 

比如通过解析,我们单独取出了用户的位置。 这有助于立即突出显示来自国外对俄罗斯用户网站的攻击。 通过阻止来自其他国家的所有连接,我们将攻击次数减少了两倍,并且可以轻松应对俄罗斯境内的攻击。 

解析后,他们开始寻找要存储和可视化的信息。 将所有内容保留在日志中是不合适的:一个索引的大小很大 - 7 GB。 ELK 处理该文件花了很长时间。 然而,并非所有信息都有用。 有些东西是重复的并占用了额外的空间 - 有必要进行优化。 

起初,我们只是简单地查看索引并删除不必要的事件。 事实证明,这比在 FortiWeb 本身上处理日志更不方便、更耗时。 现阶段“圣诞树”的唯一优点是我们能够在一个屏幕上可视化很长一段时间。 

我们并没有绝望,继续吃仙人掌,研究ELK,相信一定能提取到必要的信息。 清理完索引后,我们开始可视化是什么。 所以我们来到了大仪表板。 我们戳了小部件 - 视觉上和优雅,一个真正的 ЁLKa! 

ELK如何帮助安全工程师对抗网站攻击,安然入睡

捕捉到袭击的瞬间。 现在有必要了解攻击开始时在图表上的样子。 为了检测它,我们查看了服务器对用户的响应(返回代码)。 我们对具有此类代码(rc)的服务器响应感兴趣: 

代码(rc)

名称

使用说明

0

下降

对服务器的请求被阻止

200

Ok

请求处理成功

400

错误的请求

错误的请求

403

被禁止

授权被拒绝

500

内部服务器错误

服务不可用

如果有人开始攻击该网站,代码的比例就会发生变化: 

  • 如果代码 400 的错误请求较多,而代码 200 的正常请求数量相同,则表明有人试图入侵该网站。 
  • 如果同时代码为 0 的请求也增加,那么 FortiWeb 政客也会“看到”攻击并对其应用阻止。 
  • 如果代码为 500 的消息数量增加,则该站点不可用于这些 IP 地址 - 也是一种阻止。 

到第三个月,我们已经建立了一个仪表板来跟踪此活动。

ELK如何帮助安全工程师对抗网站攻击,安然入睡

为了不手动监控一切,我们设置了与 Nagios 的集成,Nagios 以一定的时间间隔轮询 ELK。 如果它通过代码记录了达到阈值的情况,它就会向值班人员发送有关可疑活动的通知。 

监控系统中合并4个图表。 现在,重要的是要在图表上看到攻击未被阻止并且需要工程师干预的时刻。 在 4 个不同的图表上,我们的眼睛变得模糊了。 因此,我们结合图表,开始在一个屏幕上观察一切。

在监控中,我们观察了不同颜色的图表如何变化。 红色的爆发表明攻击已经开始,而橙色和蓝色的图表显示了 FortiWeb 的反应:

ELK如何帮助安全工程师对抗网站攻击,安然入睡
这里一切都很好:“红色”活动激增,但 FortiWeb 应对自如,攻击计划化为泡影。

我们还为自己画了一个需要干预的图表示例:

ELK如何帮助安全工程师对抗网站攻击,安然入睡
在这里我们可以看到 FortiWeb 的活动有所增加,但红色攻击图并没有减少。 您需要更改 WAF 设置。

调查夜间事件也变得更加容易。 该图立即显示了需要保卫该地点的时刻。 

ELK如何帮助安全工程师对抗网站攻击,安然入睡
这就是晚上有时会发生的情况。 红色图 - 攻击已经开始。 蓝色 - FortiWeb 活动。 攻击并没有完全被阻止,我们必须介入。

我们去哪

现在我们正在培训值班管理员与 ELK 合作。 服务员学会评估仪表板上的情况并做出决定:是时候升级给 FortiWeb 专家了,否则 WAF 上的策略将足以自动击退攻击。 所以我们减少了信息安全工程师晚上的负担,并在系统层面划分了支持的角色。 只有网络防御中心才能访问 FortiWeb,并且只有他们在紧急需要时才更改 WAF 设置。

我们还致力于为客户提供报告。 我们计划在客户的个人帐户中提供有关 WAF 工作动态的数据。 ELK会让情况更加清晰,而不需要参考WAF本身。

如果客户想要实时监控自己的防护情况,ELK也会派上用场。 我们不能放弃对WAF的访问,因为客户对工作的干预可能会影响其他工作。 但你可以拿起一个单独的 ELK 并给它“玩玩”。 

这些是我们最近积累的圣诞树的使用场景。 分享您对此的想法,不要忘记 正确设置一切以避免数据库泄漏。 

来源: habr.com