具有多个域的大规模 Windows 事件转发

具有多个域的大规模 Windows 事件转发

首先,让我解释一下我想做什么:我们在许多 Windows 服务器上安装了 RMM 工具。它能够将 Windows 事件日志发送到中央存储,但效率不高,也不可靠。我想使用 Windows 服务器上的本机 WEF 将特定事件发送到中央存储,并解析任何冗余噪音(因此,事件 ID、来源以及特定于事件 ID/来源的其他详细信息,如尝试的用户名、工作站/原始 IP)。这些服务器不在同一个域中,并且地理上分散在全球各地。我知道有许多平台可以做到这一点(例如 Splunk),但它们通常价格过高,并且对于尝试执行这项简单的任务来说已经变得臃肿无用。

我最初的想法是在服务器上配置 WEF,让它们将日志发送到中央服务器,并设置订阅来监听日志,在那里解析日志以获取重要详细信息,然后使用 logstash/filebeat/nxlog 之类的东西将它们推送到 ELK,这样我们就可以仪表板显示重要事件(登录失败、安全日志被清除、kerberos 权限提升漏洞/黄金票证创建等)。我越深入,就越意识到这不是 WEF/WinRM 的预期用途。他们希望您在同一个域中拥有一个本地服务器来存储日志。我能找到的最接近这个的是这篇文章:https://blogs.msdn.microsoft.com/canberrapfe/2015/09/21/diy-client-monitoring-setting-up-tiered-event-forwarding/但它针对的是 AD 中属于同一域的多个站点。在我们的案例中,中央日志存储服务器不在任何域上,需要接受来自许多其他域的事件日志。

在花费数小时进行设置之前,我想我会在这里问一下——这种事情我应该直接使用 filebeat 来解析并直接从相关服务器推送,而根本不需要使用 WEF 吗?这就是现在的感觉,但我只是想联系一下,以确保我没有忽略一些显而易见的事情。

答案1

我已经很久没有尝试在 Windows 上进行本机日志传送了,但我记得它比我想象的要难得多。无法想象在域之外,甚至在联合之外进行它。这将是回答,因为这就是我所知道的。

你的直觉是正确的,在单个域之外执行此操作的方法是使用类似温洛格贝特从生产者中提取 Windows 事件并将其传输到您可以处理它们的地方。根据您对 Windows 事件操作的熟练程度,在 Windows 事件级别进行过滤(仅将您想要的事件发送到同一服务器的事件日志,并将 WinlogBeat 指向该日志)可能比在节拍级别进行过滤更容易。

大规模执行此操作意味着要考虑权衡。对于大量的 Windows 安全日志生产者,在提取时,事件率会很高。对于较大的设置,强烈建议在节拍和执行所有标记的 Logstash 层之间使用某种缓冲队列。有几个选项,但如果您的基础设施中已经存在 Redis 和 Kafka,则支持它们。

您也可以直接从 beats 发送到 Elasticsearch,但这会削弱 Logstash 的很多转换能力。此外,当少数节点执行大量批量插入时,ES 的数据提取速度会更快(每秒处理更多事件),而许多节点执行较小的批量插入时则不会。同样,您可能已经拥有 ElasticSearch 基础设施/专业知识,这可能不是问题。

答案2

您可以在工作组中设置 Windows 服务器,创建源启动的收集器,并通过对林 DNS 名称进行通配符处理来指定要接收事件的计算机。请参阅本文的底部部分:

https://blogs.technet.microsoft.com/thedutchguy/2017/01/24/windows-event-forwarding-to-a-workgroup-collector-server/

相关内容