我想编写一个服务来提取事件查看器记录,特别是从安全日志中提取。我特别感兴趣的是事件 ID 4625(审核失败)消息之类的东西。理想情况下,我想在一定时间内存储导致审核失败n
次数超过秒的客户端的 IP。m
听起来很简单,所以我很快就创建了一个 .NET 服务来执行此操作。但是,当我提取这些审核失败时,“源网络地址”值始终等于“-”。我想知道 Windows 如何能够一路完成登录,最终失败并且不知道对方的 IP 地址。
另外值得注意的是,IP 地址被记录的几次日志条目实际上包含许多其他有用的信息(例如生成它的进程、失败原因、传输的服务等)。
有人能告诉我为什么安全日志不知道尝试登录但失败的人的 IP 地址吗?
答案1
有人能告诉我为什么安全日志不知道尝试登录但失败的人的 IP 地址吗?
这就是远程桌面之类的原因。
Windows 中没有启用或禁用 IP 地址记录的选项,至少据我所知没有。
对于远程桌面,我发现进入“远程桌面会话主机配置”并更改 RDP-TCP 连接以获得“RDP 安全层”的安全层而不是“协商”或“SSL(TLS 1.0)”会恢复 IP 地址。
您是否真的想这样做是另一个问题,“如果选择 RDP 安全层,则不能使用网络级别身份验证。”
答案2
IP 地址没有出现在 Windows 日志中的情况并不少见,特别是如果(例如)故障来自服务(如 IIS)并且您只有 IIS 的“基本”级别日志记录...或 SMTP 并且您有 SMTP 的“基本”级别日志记录,等等。
如果我的操作系统是 Windows,我不会以这种方式设置日志记录默认值,但 Gates 从未征求过我的意见。我建议调整您的日志记录级别(并扩大最大日志文件大小),看看这是否不能解决问题。这并不是说 Windows 不知道源 IP,而是日志记录级别设置为不记录该信息。(而且,无论如何,将日志记录级别设置为有用的级别是我在新的 Windows 服务器或服务器模板上采取的第一步。)
答案3
与 HopelessN00b 所说的类似,您看不到此信息的最可能原因是审核失败是由代表用户的服务生成的。因此,用户不是直接进行身份验证(例如,当他或她登录 Windows 时),而是通过其他服务(如 IIS、SQL 等)进行身份验证。然后,您必须解析这些服务的日志才能找出 IP 地址。
现在,如果身份验证直接通过 Windows,那么您通常应该看到 IP 地址,或者如果来自本地机器,则看到 127.0.0.1。
Windows 中没有启用或禁用 IP 地址日志记录的选项,至少据我所知没有。因此,没有真正的日志记录“级别”。您可以启用或不启用日志记录类别。您唯一可以配置的是是否记录审核失败和/或审核成功事件(也许请参阅这篇文章:http://blogs.technet.com/b/askds/archive/2007/10/19/introducing-auditing-changes-in-windows-2008.aspx)。
顺便说一句,有很多免费产品可以监控事件日志(例如我们开发的事件哨兵),通常使用它比自己编写要容易得多(当然,除非你把它当作练习 :-) )。
希望这可以帮助。
答案4
您可以从防火墙登录。如果是来自单个 IP 的暴力攻击,则很容易匹配。防火墙可能位于上游。然后如何自动检测和阻止连接取决于您。他们永远不会用完端点。
您还可以考虑编写一个脚本,在您的防火墙上打开一个漏洞,如今,这在云端经常使用 NSG(网络安全组)操作,最简单的极端情况就是如此。通过跳跃或堡垒服务器进行跳跃也很流行。