LDAP查询需求:获取通过LDAP协议认证的用户DN及对应IP地址
前提说明
Active Directory 默认不会持久化存储用户LDAP认证(绑定操作)的源IP地址,用户对象的原生属性中也没有对应字段存储这类会话信息,因此无法直接通过单次LDAP查询获取「用户DN+认证IP」的关联数据,需要结合审计日志和LDAP查询配合实现需求。
具体实现步骤
- 第一步:开启AD LDAP绑定审计日志
在所有域控制器的组策略中,依次定位到「计算机配置>Windows设置>安全设置>高级审核策略配置>审计策略>账户登录」,将「审计LDAP绑定」配置为同时审核成功和失败事件,配置完成后更新组策略即可生效。后续所有LDAP绑定请求都会记录在域控制器的安全事件日志中,对应事件ID为2889,事件字段包含绑定用户DN、客户端源IP、绑定时间、绑定状态等信息。 - 第二步:提取LDAP绑定关联数据
可通过Powershell命令批量导出域控制器上的LDAP绑定记录,示例命令如下:
执行后会将最近10000条LDAP绑定记录导出为CSV文件,其中已包含你需要的用户DN和对应认证IP信息,可根据需要调整Get-WinEvent -FilterHashtable @{LogName='Security';ID=2889} -MaxEvents 10000 | ForEach-Object { $eventProps = $_.Properties [PSCustomObject]@{ BindTime = $_.TimeCreated UserDN = $eventProps[0].Value ClientIP = $eventProps[1].Value BindStatus = $eventProps[2].Value } } | Export-Csv -Path "C:\LDAP_Bind_Records.csv" -NoTypeInformation-MaxEvents参数获取指定范围的记录。 - 第三步:全量查询AD用户详细信息
如需获取全域所有用户的完整属性,可通过AD Powershell模块执行全域LDAP查询,示例命令如下:
若不需要全量属性,可将# 替换SearchBase为你所在域的根DN Get-ADUser -Filter * -Properties * -SearchBase "DC=your-domain,DC=com" | Export-Csv -Path "C:\All_AD_User_Details.csv" -NoTypeInformation-Properties *替换为指定属性列表(例如-Properties DisplayName,EmailAddress,Department,telephoneNumber),降低域控制器查询压力。 - 第四步:数据关联匹配
将导出的LDAP绑定记录表和AD用户详情表通过「用户DN」字段做匹配关联,即可得到所有通过LDAP认证的用户对应的IP、DN及完整用户信息。
注意事项
- 多域控制器环境下必须在所有域控上开启审计策略,且需要收集每台域控的安全事件日志,否则会出现数据遗漏。
- 审计日志开启后会产生额外的磁盘占用,建议定期归档历史日志,避免域控制器磁盘占满影响业务运行。
- 如需要历史LDAP认证数据,在未提前开启审计的情况下无法回溯获取,只能从审计开启的时间点开始收集数据。
内容的提问来源于stack exchange,提问作者Mr.D
相关产品推荐
相关产品推荐

