6.AD环境中的安全威胁与防护措施全性
资深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"} | 仅限专属管理账户 | 撤销权限:dsacls "DC=corp,DC=com" /R "user\:CA;Replicating Directory Changes" | |
用户委派权限审计 | 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 NameWrite-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