我将安全事件日志与System.Diagnostics.Eventing.Reader.EventLogWatcher类 Hook ,并且正在监视2008服务器框中的事件ID 4625,以查看传入的失败登录名(特别是RDP)。
日志捕获工作正常,我将结果转储到队列中进行相关的后续处理。但是,有时捕获的日志中的IPAddress数据字段已填充(已解析),有时却没有。
我在观看服务器时运行了windump,尝试从不同的服务器和OS风格尝试我通常的RDP登录,我唯一能得出的结论是版本差异问题,而且编码也不差。虽然我可能是错的,但是,哈哈。
问题在于有关这些连接的日志本身。将记录所有失败的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流量-拒绝所有帐户
受到推崇的
不允许保存密码-已启用
在客户端计算机上提示输入凭据-已启用
我也更改了其他一些与安全性相关的 key ,但是这些应该是核心 key 。强制不使用NTLM的传入网络流量允许每个4625事件都包含发生故障的计算机的IP地址,因为它们被迫使用User32登录。
让我知道这似乎是完全不安全的,还是有更好的方法可以做到这一点,但这可以对失败的尝试进行正确的计数和记录,同时为连接保留加密级别。
关于c# - 事件记录IPAddress并不总是能够解决,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1734635/