我正在使用System.Diagnostics.Eventing.Reader.EventLogWatcher类挂钩安全事件日志,我正在观察2008服务器盒上的事件ID 4625,以查看传入的失败登录(特别是RDP).
日志捕获工作正常,我将结果转储到队列中以进行相关的后续处理.但是,有时捕获的日志会填充(解析)IPAddress数据字段,有时则不会.
我在观看服务器的同时运行windump,尝试从不同的服务器和操作系统风格中进行常规的RDP登录,我可以得出的唯一结论是版本差异问题,而且编码也不错.虽然我错了,LOL.
问题在于事件日志本身与这些连接有关.记录所有失败的RDP登录,并正确处理,但某些日志根本不记录失败连接的源IP地址.
一些较新的mstsc风格会不会导致远程事件日志不记录源IP地址?对于我对这个钩子服务器运行的任何其他2008服务器来说,这似乎都是正确的.到目前为止我尝试过的任何2003或XP机器都已正确记录.
如果您需要更多信息,请告诉我们.谢谢!
编辑
我是否需要做一些疯狂的事情 - 比如实施sharpPcap并将IP与事件日志相关联?= /.也许可以查询lsass(这不是通常写入安全日志的唯一内容)吗?
我终于搞定了这个.发生这种情况是因为有两种身份验证方法用于RDP连接:NTLM和User32.我更改了GPO设置以终止外部NTLM连接.
这些是我设置的GPO设置,它具有魔力.请注意,这是Server 2008 R2框.
所需的
计算机配置\ Windows设置\安全设置\安全选项
网络安全:LAN Manager身份验证级别 - 仅发送NTLMv2响应.拒绝LM和NTLM
网络安全:限制NTLM:审核传入的NTLM流量 - 启用所有帐户的审核
网络安全:限制NTLM:传入的NTLM流量 - 拒绝所有帐户
建议
不要保存密码 - 已启用
在客户端计算机上提示凭据 - 已启用
我也改变了一些其他与安全相关的密钥,但这些密钥应该是核心密钥.强制传入网络流量远离使用NTLM允许每个单独的4625事件包含失败计算机的IP地址,因为它们强制使用User32登录.
让我知道这是否完全不安全或者可能有更好的方法来做到这一点,但这允许正确计数并记录失败的尝试,同时保持连接的加密级别.
小行星的答案有效,但您必须启用"允许来自运行任何版本的远程桌面(安全性较低)的计算机的连接"而不是"仅允许来自运行具有网络级别身份验证的远程桌面的计算机的连接(更安全)".
NLA不使用User32,但使用依赖于LM响应的NtLmSsp.如果被阻止(如上面的说明那样),你最终会得到"无法联系到当地安全局".