使用SOF-ELK和CSV数据处理M365统一审计日志(第三部分)
在“处理M365 UAL”系列的第一部分中,我们讨论了使用PowerShell和SOF-ELK获取、解析和查询UAL数据。第二部分探讨了利用AWS EC2实现SOF-ELK部署的更大灵活性和可访问性。过程中,我们学习了如何专门格式化导出的UAL数据,以便轻松自动地摄入SOF-ELK。但如果你获取或提供的数据格式不正确怎么办?幸运的是,如果我们有“AuditData” blob(作为Purview或PowerShell CSV导出的一部分),我们可以提取、重新格式化并将其馈送到SOF-ELK进行自动解析。
我们经常被叫去调查几天、几周甚至几个月前发生的事件,在许多情况下,客户或第三方从M365 Purview(又名合规)门户拉取UAL数据并提供给我们分析。不幸的是,Purview唯一的导出选项是CSV,通过Excel或命令行解析工具处理CSV中的数据元素可能极其繁琐。借助“处理…第一部分”中关于SOF-ELK期望的数据格式的信息,我们可以获取提供的CSV,提取“AuditData” blob,更改编码,然后通过SOF-ELK回到高效的解析和查询。
我们需要做的第一件事是从CSV中提取“AuditData”列。如果你手头有Excel,可以打开CSV,复制/粘贴“AuditData”列(不包括列标题)到文本编辑器,并保存为文本文件。有时CSV可能很大且笨重,或者你可能没有Excel,这时我们可以转向“csvtool”在Linux命令行提取“AuditData”列。
注意:虽然我们的CSV是“逗号分隔”,但“AuditData”列包含逗号,这使得基于逗号分隔符“切割”具有挑战性。“Csvtool”很好地处理了这一点。
我使用WSL(Debian),通过“sudo apt-get install csvtool”安装“csvtool”:
|
|
让我们测试csvtool命令以验证CSV列是否正确,因为有时根据UAL数据导出的方式,“AuditData”列号可能变化。我们希望看到完整的“AuditData” blob:
|
|
检查csvtool“AuditData”输出
第6列看起来正确,因此我们将继续提取所有第6列到文本文件,这次省略“AuditData”列标题。在上面的测试中,你可能注意到了包含空格的值周围的标准CSV双引号。我们需要删除这些以创建SOF-ELK可摄入的JSON文件,并移除“AuditData”列标题:
|
|
现在只需将文件复制到SOF-ELK摄入目录(更改IP以匹配你的SOF-ELK系统):
|
|
如果一切按计划进行,你应该能够检查M365索引是否出现在SOF-ELK内的Elasticsearch中。你可以通过SSH和命令行或检查Web UI来执行此操作:
|
|
检查SOF-ELK索引 检查SOF-ELK Web UI
现在呢?你猜对了:UAL处理时间!回到第一部分获取一些提示,或留下来了解一些额外的SOF-ELK小技巧!
趁我吸引你的注意力,我只想指出两个与SOF-ELK相关的快速注意事项:地理位置和更新。两者都不复杂,而且都很有用。
当前版本的SOF-ELK中预填充了MaxMind地理位置数据,但它必然过时,不是无用但不是最新的。要解决此问题,请访问MaxMind并注册GeoLite2账户(或他们的其他商业解决方案之一):https://www.maxmind.com/en/geolite2/signup。完成后,你将收到账户ID,然后可以生成许可证密钥:https://www.maxmind.com/en/accounts/current/license-key。要轻松将其应用到SOF-ELK部署并更新地理位置数据,只需运行内置的“geoip_bootstrap.sh”脚本并在提示时输入账户信息。你需要以root身份运行此操作。
|
|
设置MaxMind SOF-ELK配置
最后,要保持SOF-ELK安装最新,可以运行内置的“sof-elk_update.sh”脚本,该脚本也必须以“root”身份运行。
如前所述,我们只触及了SOF-ELK实用性的表面!当你有空时,从SOF-ELK系统执行“ls /logstash”并思考日志处理的可能性(aws、azure、gcp等)!
查看SOF-ELK的摄入可能性
下次见,非常感谢阅读!
阅读: 第一部分 第二部分