来源:https://logz.io/blog/bro-elk-part-2/
在本系列的第1部分中,我们描述了如何在Bro和ELK套件之间建立集成。在本部分中,我们将查看一些示例,以了解如何利用Kibana的分析和可视化功能,以从Bro提供的日志数据中获得信息。
让我们从最终结果开始。使用Kibana,您可以设置一个全面的仪表板,让您很好地了解您的网络流量。下面的仪表板是为我们在前一篇文章中介绍的conn.log创建的,报告网络的TCP/UDP/ICMP连接。
一、查询Bro日志
你的兄弟日志流到Elasticsearch中并显示在Kibana。现在该做什么?
首先,重要的是要理解您正在查看的内容以及Logstash(或Logz.io)解析的不同字段的含义。
Bro关于这个主题的文档(https://www.bro.org/sphinx/script-reference/log-files.html)可以帮助解决这个问题,所以首先一定要做一些研究。
接下来,开始查看Kibana中的Discover页面中的数据。您可以打开一条消息作为示例并查看字段及其值。
我们可以看到根据管道配置中执行的充实操作添加到消息中的地理字段。
下面是这些日志中可用的一些有用字段的列表:
conn_state——连接的代理分配状态。
service (服务)——通过连接发送的应用程序协议(例如DNS)。
duration(持续时间)——连接持续多长时间。
protocol (协议)——连接的传输层协议(如TCP/UDP)。
orig_bytes——发起者发送的字节数。
resp_bytes ——响应者发送的字节数。
orig_pkts ——发送者发送的数据包数。
resp_pkts——应答者发送的数据包数量。
Ip_orig_h——发起者的地址(我们进行了地理富集的领域)。
History(历史)——连接的状态历史(显示为一串字母)。
从可用字段列表中选择一些字段——这将使您能够看到主显示区域中的消息。例如,选择协议、conn_state和uid字段(我们可以从列表中删除消息字段)。
我们可以输入一些查询来搜索特定的事件。例如,假设您只想查找TCP连接:
或者,可能拒绝TCP连接:
或者,来自xx的拒绝TCP连接:
二、可视化Bro日志
一旦你对你的数据有了更多的了解,你就会发现它更容易形象化。Kibana以其可视化能力著称,允许您以任何您想要的方式对数据进行切分。
这里有一些例子。
(1)连接发起者的地图
使用我们的地理字段,我们可以创建一个坐标地图可视化,它给我们描绘了世界上连接我们的网络的地方。
(2)字节发送的最高ip
我们可以创建一个简单的饼图可视化,它给出发送最多字节的ip的分解。这对于识别潜在的恶意行为很有用。要做到这一点,我们将使用一个聚合的总和orig_bytes字段,和id_orig_h字段的聚合条件。
(3)字节/数据包传输
使用metric可视化,我们可以总结流量的关键指标。下面是一个metric可视化汇总resp_bytes的示例。对于其他字节/包metric,我们也可以这样做。
(3)连接持续时间
可以创建线形图可视化来描述连接的平均持续时间。同样,这对于识别异常的网络活动是有用的。我们将使用平均持续时间字段和X轴的日期直方图。
(4)连接状态的历史
history字段将连接的状态历史记录为一串字母,每个字母表示不同的事件类型。例如,与Cd的历史值连接意味着有来自发起者的错误校验和和附加的有效负载。
您可以创建一个线形图可视化,它可以提供随时间变化的不同连接状态的分解。
这些只是例子。Kibana有很多工具可以用来可视化数据,探索这些选项也是乐趣之一。一旦你有了你的单独的可视化对齐,把它们都添加到一个仪表板。
总结
Bro是一个非常强大的NIDS工具,日志记录是其主要组件之一。在本系列中,我们只分析了一种日志类型- Bro连接日志,但是正如前面提到的,该工具提供了更多可以分析和监视的日志类型。例如,Bro将HTTP流量从您的网络记录到httplog文件,这个文件也可以用于分析和审计目的。
在任何情况下,都需要将Bro与集中式的日志记录平台(如ELK Stack)联系起来,以便更容易地分析和可视化,并充分利用这些数据。
为了补充本系列文章中介绍的“传统”分析步骤和前摄性方法,您需要实现一种警报机制,当出现可疑或异常网络活动时,它将实时通知您。Bro的通知框架可以用于此目的,但是需要一些配置,并且范围有限。
警告并不存在于开源ELK堆栈中,除非您决定使用X-Pack或配置您自己的工作区。Logz.io提供了一个内置的警报引擎,允许您配置和创建基于查询的警报,该警报将通知您的电子邮件或您可能正在使用的任何其他消息传递应用程序。未来的文章将深入探讨这方面。