在运行 Windows Server 2022 21H2 的域控制器上工作时,大约一半的 DC 的安全日志中出现了大量事件 521。状态代码为 80000005,据我所知,这是缓冲区溢出,可以通过增加 Windows 注册表中的 Buffersize 和 MaximumBuffers 来解决。
我做了这个改变
HKLM/System/CurrentControlSet/Control/WMI/Autologger/EventLog-Security
将BufferSize设置为 256,将MaximumBuffers设置为 64,然后重新启动。521 事件继续累积并触发 ADAudit 中的严重警报。
当我通过 PowerShell 检查安全日志设置时:
get-winevent -ListLog security -computername dc-deadhorse-vm | fl *
我得到了以下信息:
文件大小:497094656
IsLogFull : False
记录数:378351
日志名称:安全
已启用 : True
日志文件路径:%SystemRoot%\System32\Winevt\Logs\Security.evtx
最大字节数:537067520
日志模式:自动备份
提供程序缓冲区大小 : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers :16
提供商延迟 : 1000
提供者控制指南:
请注意,BufferSize和MaximumBuffers似乎仍然分别为默认值 64 和 16,这可以解释为什么像我一样更改注册表没有任何区别。
这是正确的吗?设置这些缓冲区值的正确方法是什么?
为了获得更多信息,我还按照其他论坛讨论中关于事件 521 的建议进行了以下操作,但没有任何变化:
日志大小增加到 1GB
已启用自动存档
清除安全日志
删除并重新创建安全 .evtx 文件
确认 .evtx 文件的权限
确认磁盘空间充足
重新启动 DC
非常感谢您的意见!
看起来好像调整这些值的正确注册表位置是
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security
。您可以在那里为BufferSize(以 kb 为单位)和MaxBuffers(缓冲区数量)添加REG_DWORD值。
BufferSize的默认值似乎是64,而MaxBuffers的默认值是 20。关于这一点的信息并不多,所以我不能保证这有效。我从来没有在 Windows 上配置过这个,而且我已经用了 25 年多了。
设置完成后你肯定需要重启,我认为你不需要清除事件日志或类似操作。如果有帮助,请告诉我们。
我最初的问题是如何在 Windows 安全事件日志中正确设置 BufferSize 和 MaximumBuffers。为了确认 Lucky Luke 的建议,您可以按照以下步骤操作:
编辑注册表项:
将 DWORD BufferSize和MaxBuffers添加为您的值(64 的倍数,例如分别为 128 和 32),然后重新启动。
重新启动后,您将发现使用此 PowerShell 命令查询时这些值已更新: