当前位置: 首页 > 科技观察

将Zeek与ELKStack集成

时间:2023-03-21 16:40:56 科技观察

在本期2022年3月的题为“使用Zeek轻松实现网络安全监控”的杂志中,我们研究了Zeek的功能并了解如何开始使用它。现在我们将把我们的学习经验更进一步,看看它如何与ELK(即Elasticsearch、Kibana、Beats和Logstash)集成。为此,我们将使用一个名为Filebeat的工具来监控、收集日志并将其转发到Elasticsearch。我们将Filebeat和Zeek一起配置,让后者收集的数据转发并集中到我们的Kibanadashboard。安装Filebeat让我们首先使用Zeek安装Filebeat。要使用apt安装Filebeat,请使用以下命令:sudoaptinstallfilebeat接下来,我们需要配置.yml文件,该文件位于/etc/filebeat/文件夹中:sudonano/etc/filebeat/filebeat.yml我们只这里需要配置两件事。在FilebeatInput部分,将类型更改为log,并将enabled:false取消注释为true。我们还需要指定存放日志的路径,即指定/opt/zeek/logs/current/*.log。完成后,设置的第一部分应该类似于图1所示。图1:Filebeat配置(a)第二个要更改的是在输出下的Elasticsearch输出部分,取消注释output.elasticsearch和主持人。确保主机URL和端口号与您在安装ELK时配置的相似。让我们保留为localhost和端口9200。在同一部分,取消注释底部的用户名和密码,并输入安装后配置ELK时生成的Elasticsearch用户的用户名和密码。完成这些后,请参考图2,并检查设置。图2:Filebeat配置(b)现在我们已经安装并配置好了,我们需要配置Zeek以JSON格式存储日志。为此,请确保您的Zeek实例已停止。如果没有,执行以下命令停止它:cd/opt/zeek/bin./zeekctlstop现在我们需要在local.zeek中添加一小行,它存在于opt/zeek/share/zeek/site/目录。以root身份打开文件并添加以下行:@loadpolicy/tuning/json-logs.zeek参考图3以确保设置正确。图3:local.zeek文件由于我们更改了Zeek的一些配置,我们需要重新部署它,这可以通过执行以下命令来完成:cd/opt/zeek/bin./zeekctldeploy现在我们需要在Filebeat中启用Zeek模块,以便转发Zeek的日志。执行以下命令:sudofilebeatmodulesenablezeek我们就快完成了。最后一步,配置zeek.yml文件记录什么类型的数据。这可以通过修改/etc/filebeat/modules.d/zeek.yml文件来完成。在此.yml文件中,我们必须提及这些指定日志存储在哪个目录中。我们知道这些日志是存放在当前文件夹下的,里面有几个文件,比如dns.log、conn.log、dhcp.log等。我们需要在每个部分中提及每个路径。当且仅当您不需要该文件/程序的日志时,您可以通过将启用值更改为false来丢弃不需要的文件。例如,对于dns,确保启用为真并配置路径:var.paths:["/opt/zeek/logs/current/dns.log","/opt/zeek/logs/*.dns.json"]对其余文件重复。我们对一些我们需要的文件执行了此操作。我们添加了所有主要的必需文件。您也可以这样做。请参考图4。图4:zeek.yml配置现在是时候了启动Filebeat。执行以下命令:sudofilebeatsetupsudoservicefilebeatstart现在一切都已完成,让我们转到Kibana仪表板并检查我们是否通过Filebeat从Zeek接收数据。图5:Kibana的仪表板(目标地理)进入仪表板。您可以看到它捕获的数据的清晰统计分析(图5和6)。图6:Kibana的仪表板(网络)现在让我们转到Discovery选项卡并通过查询过滤来检查结果:该查询将过滤它在特定时间内接收到的所有数据,只向我们显示名为Zeek数据的模块(图7).图7:通过event.module查询过滤的数据致谢作者要感谢VIT-AP计算机科学与工程学院的SibiChakkaravarthySethuraman、SudhakarIlango、NandhaKumarR.和AnupamaNamburu一直以来的指导和支持。特别感谢人工智能和机器人卓越中心(AIR)。