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

本文详细介绍了如何从M365 Purview导出的CSV文件中提取AuditData列,使用csvtool处理数据,并通过SOF-ELK进行高效解析和查询,同时涵盖MaxMind地理位置数据更新和SOF-ELK系统维护技巧。

使用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”:

1
$ sudo apt-get install csvtool

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

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 user@192.168.1.100:/logstash/microsoft365/pc-purview-audit-data.json

如果一切按计划进行,你应该能够检查M365索引是否出现在SOF-ELK内的Elasticsearch中。你可以通过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 设计