使用SOF-ELK和CSV数据驾驭M365统一审计日志(第三部分)

本文是系列文章的第三部分,详细介绍了如何从M365 Purview导出的CSV数据中提取"AuditData"字段,并通过SOF-ELK进行高效解析和查询,同时分享了SOF-ELK的地理定位数据更新和系统升级技巧。

在"驾驭M365 UAL"系列的第一部分中,我们讨论了使用PowerShell和SOF-ELK获取、解析和查询UAL数据。第二部分则探讨了利用AWS EC2实现SOF-ELK部署的更大灵活性和可访问性。在此过程中,我们学习了如何专门格式化导出的UAL数据以便SOF-ELK自动摄取,但如果获取的数据格式不正确怎么办?幸运的是,如果我们有从Purview或PowerShell导出的CSV中包含的"AuditData"字段,我们可以提取、重新格式化并馈送给SOF-ELK进行自动解析。

我们经常被叫去调查几天、几周甚至几个月前发生的事件,在许多情况下,客户或第三方已经从M365 Purview(又称合规)门户提取了UAL数据并提供给我们分析。不幸的是,Purview唯一的导出选项是CSV,通过Excel或命令行解析工具来处理CSV中的数据元素可能非常繁琐。借助"驾驭…“第一部分中关于SOF-ELK期望的数据格式的信息,我们可以获取提供的CSV,提取"AuditData"字段,更改编码,然后通过SOF-ELK回到高效的解析和查询。

我们需要做的第一件事是从CSV中提取"AuditData"列。如果有Excel,可以打开CSV,将"AuditData"列(不包括列标题)复制/粘贴到文本编辑器中并保存为文本文件。有时CSV可能很大且难以处理,或者可能没有Excel,这时我们可以使用"csvtool"在Linux命令行上提取"AuditData"列。

注意:虽然我们的CSV是"逗号分隔"的,但"AuditData"列包含逗号,这使得以逗号为分隔符进行"切割"具有挑战性。“Csvtool"可以很好地处理这个问题。

我在WSL(Debian)中使用"sudo apt-get install csvtool"安装"csvtool”:

1
$sudo apt-get install csvtool

让我们测试csvtool命令以验证CSV列是否正确,因为有时根据UAL数据的导出方式,“AuditData"列号可能会有所不同。我们希望看到完整的"AuditData"字段:

1
$csvtool col 6 your-csv-ual-data.csv | head -n 2

检查csvtool的"AuditData"输出

第6列看起来是正确的,因此我们将继续将所有第6列提取到文本文件中,这次省略"AuditData"列标题。在上面的测试中,你可能已经注意到标准的CSV双引号包围了包含空格的值。我们需要删除这些以创建SOF-ELK可摄取的JSON文件,并删除"AuditData"列标题:

1
2
$csvtool col 6 pc-purview-export.csv -o pc-purview-audit-data.csv
$csvtool readable pc-purview-audit-data.csv | sed '1d' pc-purview-audit-data.json

现在,我们只需要将文件复制到SOF-ELK的摄取目录(将IP更改为你的SOF-ELK系统):

1
$scp pc-purview-audit-data.json elk_user@192.168.1.100:/logstash/microsoft365/pc-purview-audit-data.json

如果一切按计划进行,你应该能够在SOF-ELK中检查Elasticsearch是否显示你的M365索引。你可以通过SSH和命令行或检查Web UI来完成:

1
$sof-elk_clear.py -i list

检查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身份运行此脚本。

1
2
$sudo su
#/usr/local/sbin/geoip_bootstrap.sh

设置MaxMind SOF-ELK配置

最后,为了保持你的SOF-ELK安装最新,你可以运行内置的"sof-elk_update.sh"脚本,该脚本也必须以"root"身份运行。

如前所述,我们只是浅尝辄止地介绍了SOF-ELK的实用性!当你有时机时,从你的SOF-ELK系统执行"ls /logstash"并思考日志处理的可能性(aws、azure、gcp等)!

查看SOF-ELK的摄取可能性

下次见,非常感谢你的阅读!

阅读: 第一部分 第二部分

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计