资深AD管理员视角:构建坚不可摧的域控安全体系

一、AD安全威胁全景与防护体系
1.1 常见攻击向量及防护
攻击类型 | 典型案例 | 防护措施 |
---|---|---|
凭证盗窃 | Pass-the-Hash | 启用LSA保护+限制NTLM使用 |
Kerberos攻击 | Golden Ticket攻击 | 启用AES加密+限制TGT生命周期 |
权限提升 | DCSync攻击 | 严格控制GetChangesAll权限 |
供应链攻击 | 恶意GPO注入 | GPO版本控制+变更审批流程 |
1.2 分层防御架构

二、核心安全加固实战
2.1 强密码策略实施
企业级密码策略配置:

PowerShell实施命令:
创建精细密码策略(PSO)
New-ADFineGrainedPasswordPolicy -Name "Tier1_Admins" ` -Precedence 100 -MinPasswordLength 14 ` -ComplexityEnabled $true -LockoutDuration "00:30:00" ` -MinPasswordAge "2.00:00:00"
2.2 Kerberos认证强化
关键加固步骤:
-
禁用RC4加密:
Set-ADAccountControl -Identity krbtgt -UseDESOnly $false Set-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,..." ` -Replace @{'dsHeuristics'='0000002001001'}
-
缩短TGT生命周期:

-
启用Kerberos Armoring:
# 组策略配置路径: # 计算机配置 > 策略 > 安全设置 > 本地策略 > 安全选项 # "网络安全:配置Kerberos RFC加密类型" → 启用AES256
2.3 特权账户保护方案
特权访问分层模型:

最佳实践:
-
即时特权(JIT):
-
凭证保险库:
# 使用Microsoft LAPS管理本地管理员密码 Set-AdmPwdPasswordRotation -Enabled $true -OrgUnit "OU=Servers,DC=corp,DC=com
三、AD审计与监控体系
3.1 审计策略配置
关键审计类别:
审计类别 | 推荐设置 | 监控重点 |
---|---|---|
账户管理 | 成功+失败 | 用户创建/删除/权限变更 |
目录服务访问 | 仅成功 | 敏感属性修改 |
策略变更 | 成功+失败 | GPO修改/链接 |
特权使用 | 成功 | 管理员关键操作 |
配置命令:
# 启用详细审计
auditpol /set /category:"Account Management" /success:enable /failure:enable
auditpol /set /category:"DS Access" /success:enable
3.2 关键事件监控清单

3.3 自动化审计方案
ELK审计架构:

关键告警规则示例:
# 检测异常账户创建
event_id:4720 AND
(user.name:"*$" OR user.name:"admin*" OR user.name:"test*")
四、最佳实践案例
案例1:金融机构AD安全加固
挑战 :满足等保四级和PCI DSS要求
解决方案:
-
特权账户保护:
-
启用双因素认证(智能卡+生物识别)
-
实施JIT权限管理,最大时限1小时
-
-
实时监控:

-
加密加固:
-
强制LDAPS通信
-
禁用SSLv3/TLS 1.0
-
成效:安全事件减少85%,合规审计100%通过
案例2:制造业AD权限治理
问题:
-
2000+用户存在过度权限
-
离职账户未及时清理
治理方案:
-
权限清理:
# 查找过度特权账户 Get-ADUser -Filter * -Properties MemberOf | Where-Object {$_.MemberOf -match "Domain Admins"} | Select Name,SamAccountName
-
自动化生命周期:
-
定期审计:
扫描陈旧账户 Search-ADAccount -AccountInactive -TimeSpan 90 -UsersOnly | Disable-ADAccount
-
成果:特权账户减少70%,权限合规率提升至98%
案例3:政府机构AD安全监控
需求 :实时检测域控异常活动
部署架构:

检测规则示例:
-
同一账户15分钟内5次锁定
-
非工作时间特权操作
-
来自异常地理位置的登录
五、企业级安全工具链
工具类型 | 推荐方案 | 核心功能 |
---|---|---|
权限审计 | Microsoft Identity Manager | 权限分析与回收 |
实时监控 | Splunk Enterprise Security | 异常行为检测 |
特权管理 | CyberArk PAS | 凭证保险库+会话录制 |
漏洞扫描 | Tenable AD | 配置弱点检测 |
免费工具推荐:
-
PingCastle:AD健康评估
-
BloodHound:权限路径分析
-
LAPS:本地管理员密码管理
🔒 终极安全原则:
最小权限:所有账户按需授权
纵深防御:网络+身份+审计多层防护
持续监控:实时检测+自动响应
定期演练:每季度执行恢复测试
实战资源:
适用于企业级活动目录的全面安全基线
检查类别 | 检查项目 | 检查方法 | 合格标准 | 修复建议(若不达标) |
---|---|---|---|---|
账户安全 | 特权账户分离 | Get-ADGroupMember "Domain Admins" |
日常管理账户 ≠ 特权账户 | 创建专属管理账户,禁用内置Administrator |
陈旧账户清理 | Search-ADAccount -AccountInactive -TimeSpan 90 -UsersOnly |
无90天未活动账户 | 自动禁用脚本:Disable-ADAccount -Identity 用户名 |
|
服务账户密码管理 | 检查服务账户的PasswordNeverExpires 属性 |
所有服务账户必须定期改密 | 设置密码永不过期:Set-ADServiceAccount -Identity svc_account -PasswordNeverExpires $false |
|
密码策略 | 管理员密码强度 | Get-ADFineGrainedPasswordPolicy -Identity "Admin_Policy" |
长度≥14 + 复杂度 + 24次历史记忆 | 创建PSO策略:New-ADFineGrainedPasswordPolicy -Name "Admin_Policy" -MinPasswordLength 14 |
普通用户密码强度 | `gpresult /R | findstr "密码策略"` | 长度≥12 + 复杂度 + 5次锁定阈值 | |
密码永不过期账户审计 | Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties * |
仅服务账户允许 | 清除标记:Set-ADUser -Identity user -PasswordNeverExpires $false |
|
认证安全 | Kerberos加密强化 | Get-ADObject -Identity "CN=Directory Service,CN=Windows NT..." |
AES256启用 + RC4禁用 | 启用AES:Set-ADObject ... -Replace @{'dsHeuristics'='0000002001001'} |
NTLM协议使用 | 事件日志分析事件ID 4624(登录类型) | NTLM登录占比<5% | 组策略禁用:计算机配置 > 策略 > 安全设置 > LAN Manager身份验证级别 → 仅NTLMv2响应 |
|
LSA保护启用 | 注册表检查:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\RunAsPPL |
值=1 | 组策略启用:计算机配置 > 管理模板 > 系统 > 启用LSA保护 |
|
权限控制 | 敏感权限组审计 | Get-ADGroupMember "Schema Admins","Enterprise Admins" |
成员数量≤3 | 移除非必要成员:Remove-ADGroupMember "Enterprise Admins" -Member user |
DCSync权限控制 | `(Get-ACL "DC=corp,DC=com").Access | Where-Object {$_.ObjectType -eq "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2"}` | 仅限专属管理账户 | |
用户委派权限审计 | Get-ADUser -Filter {TrustedForDelegation -eq $true} -Properties * |
无敏感账户启用委派 | 禁用委派:Set-ADAccountControl -Identity user -TrustedForDelegation $false |
|
审计监控 | 关键事件日志配置 | auditpol /get /category:* |
账户管理/目录访问/策略变更成功+失败均记录 | 配置命令:auditpol /set /category:"Account Management" /success:enable /failure:enable |
特权操作监控 | SIEM系统检测事件ID 4672(特权登录) | 所有特权操作实时告警 | 部署Splunk/Sentinel监控规则 | |
GPO变更审计 | 检查Default Domain Controllers Policy 中的审核策略 |
GPO修改事件必须记录 | 启用审核:计算机配置 > 策略 > 高级审核策略 > 策略变更 |
|
基础设施 | 域控制器补丁状态 | `Get-HotFix -Description "Security*" | Sort-Object InstalledOn -Desc` | 最后补丁≤30天 |
LDAPS强制启用 | nmap -p 636 --script ssl-enum-ciphers dc01.corp.com |
SSLv3/TLS1.0禁用 + 有效证书 | 组策略启用:计算机配置 > 策略 > 安全设置 > 域控制器安全策略 > LDAP服务器签名要求 |
|
域控制器防火墙策略 | Get-NetFirewallRule -Direction Inbound -Enabled True |
仅开放必需端口(DNS/RPC/LDAP/Kerberos) | 关闭135/445等非必要端口 |
检查清单使用指南
-
执行频率:
-
关键项目(★):每周检查(特权账户、DCSync权限)
-
常规项目:每月全面检查
-
漏洞扫描:每季度使用PingCastle扫描
-
-
自动化脚本示例:
# 检查特权组成员
$adminGroups = "Enterprise Admins","Schema Admins","Domain Admins"
foreach ($group in $adminGroups) {
$members = Get-ADGroupMember $group -Recursive | Select Name
Write-Host "特权组 $group 成员:" -ForegroundColor Yellow
$members | Format-Table
}
# 检测密码永不过期账户
Get-ADUser -Filter {Enabled -eq $true -and PasswordNeverExpires -eq $true} |
Select-Object Name,SamAccountName |
Export-Csv "PasswordNeverExpires_Report.csv" -NoTypeInformation
-
风险评级标准:
风险等级 特征 响应时限 危急 存在直接攻击路径(如DCSync滥用) 4小时内 高危 安全基线不达标(如未启用LSA保护) 24小时内 中危 配置瑕疵(如NTLMv1未禁用) 72小时内 低危 优化建议(如密码长度12→14) 下次维护
💡 温馨提示:
优先处理所有危急项,再处理高危项
使用
gpresult /H gpreport.html
验证策略应用每次变更前执行
Backup-GPO -All -Path \\backup\gpo