如何查询域内特定用户的全域登录历史记录
域环境特定用户全域登录历史查询方案
方案1:集中采集域内全节点登录日志(适合长期查询需求)
4624事件本身是登录动作发生的本地机器生成的安全事件,默认不会同步到DC,因此需要先完成两项配置:
- 下发组策略开启所有域内节点的登录事件审核:组策略路径为
计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 审核策略 -> 审核登录事件,开启成功、失败双维度审核 - 配置Windows事件转发,把所有成员服务器、终端的安全日志同步到统一日志存储节点,后续直接在集中日志库中筛选事件ID4624、匹配目标用户名,即可获取全域所有登录记录
- 下发组策略开启所有域内节点的登录事件审核:组策略路径为
方案2:DC侧组合事件ID查询(无需额外配置,适合临时查询)
不需要拉取成员节点日志,直接在DC的安全日志中筛选三类事件组合校验即可:
- 事件ID4776:对应DC处理NTLM身份验证的记录,只要用户在域内任何节点用NTLM协议登录,DC都会生成该事件,筛选
目标帐户字段为目标用户名,即可获取所有NTLM登录的来源主机、IP、时间信息 - 事件ID4768+4769组合:对应Kerberos认证场景,之前单独查4769无效是因为没有过滤服务类型,筛选4769事件中
服务名称以HOST/开头的记录,关联目标用户名即可匹配到用户Kerberos登录的目标主机信息
- 事件ID4776:对应DC处理NTLM身份验证的记录,只要用户在域内任何节点用NTLM协议登录,DC都会生成该事件,筛选
方案3:PowerShell批量拉取域内节点日志(适合临时单次查询)
如果你拥有所有域内节点的管理员权限,可直接运行以下脚本批量拉取近7天的目标用户登录记录:
# 替换为实际的目标用户名(格式:域\用户名) $targetUser = "DOMAIN\username" # 拉取所有域内加入的计算机列表 $computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name foreach ($machine in $computers) { # 拉取单台机器的4624登录事件,过滤目标用户 Get-WinEvent -ComputerName $machine -FilterHashtable @{LogName='Security';ID=4624;StartTime=(Get-Date).AddDays(-7)} -ErrorAction SilentlyContinue | Where-Object {$_.Properties[5].Value -eq $targetUser} | Select-Object TimeCreated,@{Name='登录目标主机';Expression={$machine}},@{Name='登录来源IP';Expression={$_.Properties[18].Value}} }注意运行前需要确保所有目标机器开放了远程事件日志访问的防火墙规则。
内容的提问来源于stack exchange,提问作者john pridogov
相关产品推荐
相关产品推荐

