Data/Locales/checks/zh/ADPasswordPolicyChecks.json
|
{ "_family": "ADPasswordPolicyChecks.json", "ADPWD-001": { "name": { "value": "默认域密码策略", "status": "machine-draft" }, "description": { "value": "Default Domain Policy 定义了所有域用户的基线密码和锁定设置。该策略应强制执行强密码要求,因为它适用于每一个未被更具体的细粒度密码策略覆盖的账户", "status": "machine-draft" }, "recommendedValue": { "value": "最小长度 14 个字符,启用复杂性,最长使用期限 365 天,最短使用期限 1 天,历史记录 24 个密码", "status": "machine-draft" }, "remediationSteps": { "value": "使用 Get-ADDefaultDomainPasswordPolicy 审查 Default Domain Policy。通过组策略管理进行配置:Default Domain Policy > Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Password Policy。按组织的安全要求设置各项值", "status": "machine-draft" } }, "ADPWD-002": { "name": { "value": "细粒度密码策略枚举", "status": "machine-draft" }, "description": { "value": "细粒度密码策略(FGPP)允许对不同用户组采用不同的密码要求。应记录所有 FGPP,以了解完整的密码策略全貌,并确保没有用户组被弱于预期的策略所覆盖", "status": "machine-draft" }, "recommendedValue": { "value": "记录所有 FGPP 及其优先级、目标组和策略设置。至少应有一条针对特权账户的严格 FGPP 和一条针对普通用户的标准 FGPP", "status": "machine-draft" }, "remediationSteps": { "value": "使用 Get-ADFineGrainedPasswordPolicy -Filter * 枚举所有 FGPP。记录每条策略的优先级值、目标组和设置。核实特权账户被比标准用户更严格的策略所覆盖。若仅存在 Default Domain Policy,则创建 FGPP", "status": "machine-draft" } }, "ADPWD-003": { "name": { "value": "FGPP 应用分析", "status": "machine-draft" }, "description": { "value": "细粒度密码策略必须应用到正确的组才能生效。FGPP 应用配置错误可能使高价值账户处于较弱的策略之下,或造成没有 FGPP 适用、转而使用 Default Domain Policy 的策略缺口", "status": "machine-draft" }, "recommendedValue": { "value": "所有特权账户均由一条严格的 FGPP 覆盖。不存在使高价值账户回退到较弱默认策略的策略缺口", "status": "machine-draft" }, "remediationSteps": { "value": "对于每条 FGPP,审查 msDS-PSOAppliesTo 属性以查看目标组。与特权组成员身份交叉比对以核实覆盖情况。对特定账户使用 Get-ADUserResultantPasswordPolicy 以确定生效的策略。修复 FGPP 应用中的任何缺口", "status": "machine-draft" } }, "ADPWD-004": { "name": { "value": "最小密码长度", "status": "machine-draft" }, "description": { "value": "低于 14 个字符的密码在现代 GPU 硬件上易受离线暴力破解。NIST SP 800-63B 建议支持长达 64 个字符的密码,并设置一个在安全性与可用性之间取得平衡的最小值。对于 AD 环境,14 个字符是推荐的最小基线", "status": "machine-draft" }, "recommendedValue": { "value": "标准用户最少 14 个字符,特权账户最少 25 个字符", "status": "machine-draft" }, "remediationSteps": { "value": "在 Default Domain Policy 或相应的 FGPP 中配置最小密码长度:Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Password Policy > Minimum password length = 14。为特权账户创建一条更严格的 FGPP,要求 25 个以上字符", "status": "machine-draft" } }, "ADPWD-005": { "name": { "value": "密码复杂性要求", "status": "machine-draft" }, "description": { "value": "Windows 密码复杂性要求密码至少包含四类字符(大写、小写、数字、特殊字符)中的三类,且密码不包含用户的账户名。虽然 NIST 不再强制要求复杂性,但在没有补偿性控制(如禁用词列表)的情况下在 AD 中禁用它会显著削弱密码强度", "status": "machine-draft" }, "recommendedValue": { "value": "启用复杂性。最好辅以 Azure AD Password Protection 或自定义禁用词列表,以防御常见模式", "status": "machine-draft" }, "remediationSteps": { "value": "核实 Default Domain Policy 中已启用复杂性:Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Password Policy > “Password must meet complexity requirements” = Enabled。考虑部署 Azure AD Password Protection 以实施额外的禁用密码强制", "status": "machine-draft" } }, "ADPWD-006": { "name": { "value": "账户锁定策略", "status": "machine-draft" }, "description": { "value": "账户锁定策略通过在失败尝试达到阈值后锁定账户,防御在线暴力破解和密码喷洒攻击。若无锁定,攻击者可对任何账户进行无限次密码猜测。然而过于激进的锁定会造成拒绝服务风险", "status": "machine-draft" }, "recommendedValue": { "value": "账户锁定阈值:5 至 10 次尝试。锁定持续时间:15 至 30 分钟。之后重置计数器:15 至 30 分钟", "status": "machine-draft" }, "remediationSteps": { "value": "在 Default Domain Policy 中配置账户锁定:Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Account Lockout Policy。将阈值设为 5 至 10 次尝试,持续时间设为 15 至 30 分钟,观察窗口设为 15 至 30 分钟。监视可能表明攻击的锁定事件", "status": "machine-draft" } }, "ADPWD-007": { "name": { "value": "密码历史强制", "status": "machine-draft" }, "description": { "value": "密码历史可阻止用户循环使用相同的密码。若历史深度不足,用户可在一小组密码之间轮换,从而抵消密码轮换要求的安全收益", "status": "machine-draft" }, "recommendedValue": { "value": "密码历史记住至少 24 个此前的密码", "status": "machine-draft" }, "remediationSteps": { "value": "在 Default Domain Policy 中配置:Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Password Policy > “Enforce password history” = 记住 24 个密码。同时确保“Minimum password age”设为至少 1 天,以防止快速循环通过历史记录", "status": "machine-draft" } }, "ADPWD-008": { "name": { "value": "最长密码使用期限", "status": "machine-draft" }, "description": { "value": "最长密码使用期限强制定期轮换密码。虽然 NIST SP 800-63B 建议除非怀疑遭到入侵否则不强制定期更改,但许多合规框架仍要求这样做。策略应在合规要求与可用性之间取得平衡,避免过短的轮换周期导致弱密码", "status": "machine-draft" }, "recommendedValue": { "value": "最长密码使用期限视合规要求在 90 至 365 天之间。对于特权账户,最长 60 天", "status": "machine-draft" }, "remediationSteps": { "value": "在 Default Domain Policy 中配置:Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Password Policy > “Maximum password age” = 365 天(或按合规要求)。为特权账户实施更严格的 FGPP,最长 60 天", "status": "machine-draft" } }, "ADPWD-009": { "name": { "value": "密码永不过期的用户", "status": "machine-draft" }, "description": { "value": "带有“密码永不过期”标志的账户会绕过最长密码使用期限策略。虽然这对于受管理的服务账户可能是可接受的(gMSA 会自动处理轮换),但带此标志的用户账户会无限期保留已被泄露的密码", "status": "machine-draft" }, "recommendedValue": { "value": "没有密码永不过期的用户账户。只有组托管服务账户可享有自动轮换豁免", "status": "machine-draft" }, "remediationSteps": { "value": "使用 Get-ADUser -Filter {PasswordNeverExpires -eq $true -and Enabled -eq $true} -Properties PasswordNeverExpires 识别相关账户。审查每个账户的业务理由。清除用户账户上的该标志,并在可能的情况下将服务账户迁移到 gMSA。记录任何已批准的例外及其补偿性控制", "status": "machine-draft" } }, "ADPWD-010": { "name": { "value": "空密码用户", "status": "machine-draft" }, "description": { "value": "带有 PASSWD_NOTREQD 标志的账户可以使用空密码,从而完全绕过所有密码策略。此标志有时会在账户创建脚本中被无意设置。任何空密码账户都可被知道用户名的任何人访问", "status": "machine-draft" }, "recommendedValue": { "value": "没有启用的账户带空密码或 PASSWD_NOTREQD 标志", "status": "machine-draft" }, "remediationSteps": { "value": "使用 Get-ADUser -Filter {PasswordNotRequired -eq $true -and Enabled -eq $true} 识别相关账户。立即清除所有已识别账户的 PASSWD_NOTREQD 标志并为其设置强密码。审查账户创建脚本和流程,以防止将来设置此标志", "status": "machine-draft" } }, "ADPWD-011": { "name": { "value": "重复的密码哈希", "status": "machine-draft" }, "description": { "value": "多个账户共享相同的密码哈希表明存在密码重用、常用密码或使用默认密码的账户。密码重用会放大任何单一凭据泄露的影响,使攻击者能够在多个账户间横向移动", "status": "machine-draft" }, "recommendedValue": { "value": "没有共享相同密码哈希的账户群。每个账户都应有唯一的密码", "status": "machine-draft" }, "remediationSteps": { "value": "在获得适当授权的情况下,使用具备 DCSync 能力的工具(DSInternals)提取并比较 NT 哈希。识别共享哈希的账户群。对重复群中的所有账户强制更改密码。实施密码筛选器以阻止常用密码,并考虑部署 Azure AD Password Protection", "status": "machine-draft" } }, "ADPWD-012": { "name": { "value": "存在于 HaveIBeenPwned 数据库中的密码", "status": "machine-draft" }, "description": { "value": "出现在已知泄露数据库中的密码正被积极用于凭据填充攻击。将 AD 密码哈希与 HaveIBeenPwned 数据库进行比较,可识别使用已泄露密码、可能成为攻击目标的账户", "status": "machine-draft" }, "recommendedValue": { "value": "没有活动账户使用出现在 HaveIBeenPwned 数据库中的密码", "status": "machine-draft" }, "remediationSteps": { "value": "使用 DSInternals Test-PasswordQuality 等工具,将 NT 哈希与 HaveIBeenPwned 密码数据库(可下载的哈希列表)进行比较。对所有哈希匹配的账户立即强制更改密码。部署 Azure AD Password Protection 或自定义密码筛选器,以在今后阻止已知的泄露密码", "status": "machine-draft" } }, "ADPWD-013": { "name": { "value": "自定义字典密码检查", "status": "machine-draft" }, "description": { "value": "基于组织特定术语(公司名称、产品名称、季节、地名)的密码被广泛使用,且易被定向攻击者猜出。自定义字典检查可识别满足复杂性要求但仍然可预测的密码", "status": "machine-draft" }, "recommendedValue": { "value": "没有账户使用包含组织特定术语、常见模式(季节+年份)或键盘顺序的密码", "status": "machine-draft" }, "remediationSteps": { "value": "构建一个包含公司名称、产品名称、地名、季节和常见模式的自定义字典。使用 DSInternals 或类似工具将密码哈希与该字典进行比对。对匹配的账户强制更改密码。部署自定义密码筛选器或 Azure AD Password Protection 的自定义禁用密码列表", "status": "machine-draft" } }, "ADPWD-014": { "name": { "value": "默认/常用密码", "status": "machine-draft" }, "description": { "value": "使用默认、常用或极易猜测密码(例如 Password1、Welcome1 或账户名)的账户,是密码喷洒攻击的首要目标。这些密码包含在每一份攻击者词表中,且往往会被最先尝试", "status": "machine-draft" }, "recommendedValue": { "value": "没有账户使用最常见的前 1000 个密码列表中的密码,或匹配默认密码模式", "status": "machine-draft" }, "remediationSteps": { "value": "使用 DSInternals Test-PasswordQuality 将密码哈希与常用密码列表(如 SecLists)进行比对。对所有使用常用密码的账户立即强制更改密码。实施 Azure AD Password Protection,其中包含由 Microsoft 更新的全局禁用密码列表", "status": "machine-draft" } }, "ADPWD-015": { "name": { "value": "密码最后设置时间的年龄分布", "status": "machine-draft" }, "description": { "value": "分析所有账户的密码年龄分布可揭示策略强制的有效性,并识别密码极其陈旧的账户。密码多年未变的账户可能是被策略变更遗漏,或设置了密码永不过期", "status": "machine-draft" }, "recommendedValue": { "value": "没有启用的用户账户的密码超过最长密码使用期限策略。分布应显示出规律的轮换模式", "status": "machine-draft" }, "remediationSteps": { "value": "使用 Get-ADUser -Filter {Enabled -eq $true} -Properties PasswordLastSet | Group-Object {(New-TimeSpan $_.PasswordLastSet (Get-Date)).Days -replace '\\d$','0'} 生成密码年龄分布报告。调查密码超过策略允许期限的账户。在需要时强制更改密码,并审查密码永不过期标志", "status": "machine-draft" } }, "ADPWD-016": { "name": { "value": "LAPS 部署状态", "status": "machine-draft" }, "description": { "value": "本地管理员密码解决方案(LAPS)为每台计算机提供唯一、随机生成的本地管理员密码,并安全地存储在 AD 中。若无 LAPS,本地管理员密码通常在所有机器上完全相同,使得在捕获一个哈希后即可轻而易举地横向移动", "status": "machine-draft" }, "recommendedValue": { "value": "LAPS 部署到 100% 加入域的 Windows 计算机。没有 LAPS 密码缺失或过期的计算机", "status": "machine-draft" }, "remediationSteps": { "value": "通过 GPO、SCCM 或 Intune 将 LAPS 客户端(CSE)部署到所有加入域的计算机。配置 LAPS GPO 设置以规定密码复杂性、长度(至少 20 个字符)和使用期限(30 天)。通过检查计算机对象上的 ms-Mcs-AdmPwd 或 msLAPS-Password 属性来核实部署。调查任何没有 LAPS 密码的计算机", "status": "machine-draft" } }, "ADPWD-017": { "name": { "value": "LAPS 密码过期", "status": "machine-draft" }, "description": { "value": "LAPS 密码应定期轮换,以在本地管理员密码遭泄露时限制暴露窗口。过期或陈旧的 LAPS 密码表明这些机器上的 LAPS 客户端未正常工作", "status": "machine-draft" }, "recommendedValue": { "value": "LAPS 密码过期时间设为 30 天。没有 LAPS 密码过期的计算机", "status": "machine-draft" }, "remediationSteps": { "value": "使用 Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwdExpirationTime 审查计算机对象上的 LAPS 密码过期日期。识别密码已过期的计算机,并调查这些机器上的 LAPS CSE 功能。配置 GPO 将密码使用期限设为最长 30 天", "status": "machine-draft" } }, "ADPWD-018": { "name": { "value": "Windows LAPS 与旧版 LAPS", "status": "machine-draft" }, "description": { "value": "Windows LAPS(内置于 Windows Server 2019+ 以及安装了 2023 年 4 月更新的 Windows 10/11)相比旧版 LAPS 提供了多项改进,包括密码加密、密码历史和 DSRM 密码管理。组织应从旧版 LAPS 迁移到 Windows LAPS 以获得增强的安全特性", "status": "machine-draft" }, "recommendedValue": { "value": "部署 Windows LAPS 并启用密码加密。已完成旧版 LAPS 迁移", "status": "machine-draft" }, "remediationSteps": { "value": "通过检查 msLAPS-Password 属性(Windows LAPS)与 ms-Mcs-AdmPwd(旧版 LAPS)来核实部署的是哪个 LAPS 版本。规划向 Windows LAPS 的迁移。为 Windows LAPS 属性更新 AD 架构。部署启用加密的 Windows LAPS GPO 设置。迁移完成后停用旧版 LAPS 组件", "status": "machine-draft" } }, "ADPWD-019": { "name": { "value": "Azure AD Password Protection", "status": "machine-draft" }, "description": { "value": "Azure AD Password Protection 通过部署代理和 DC 代理组件,将禁用密码强制扩展到本地 AD。它会阻止匹配 Microsoft 精选全局禁用列表以及可选自定义禁用列表的密码,防止用户选择已知的弱密码", "status": "machine-draft" }, "recommendedValue": { "value": "以强制模式部署 Azure AD Password Protection,并配置自定义禁用密码列表", "status": "machine-draft" }, "remediationSteps": { "value": "在所有域控制器上部署 Azure AD Password Protection 代理服务和 DC 代理。在 Azure AD 中配置自定义禁用密码列表,包括组织特定术语。将模式设为强制(而非审核)。通过事件日志和 Azure AD 报告监视密码更改被拒的情况", "status": "machine-draft" } }, "ADPWD-020": { "name": { "value": "AD 中的 BitLocker 恢复密钥", "status": "machine-draft" }, "description": { "value": "存储在 Active Directory 中的 BitLocker 恢复密钥应被清点,以确保磁盘加密已妥善部署且恢复密钥可用。恢复密钥的存在还表明哪些机器已启用 BitLocker,从而提供对加密覆盖情况的可见性", "status": "machine-draft" }, "recommendedValue": { "value": "所有工作站和笔记本电脑的 BitLocker 恢复密钥都存在于 AD 中。恢复密钥访问权限限于获授权的管理员", "status": "machine-draft" }, "remediationSteps": { "value": "使用 Get-ADObject -Filter {objectClass -eq 'msFVE-RecoveryInformation'} -SearchBase 'DC=domain,DC=com' 在 AD 中查询 BitLocker 恢复信息对象。与计算机清单交叉比对以识别没有 BitLocker 的机器。审查恢复密钥对象上的 ACL,确保只有获授权的管理员才能读取它们", "status": "machine-draft" } }, "ADPWD-021": { "name": { "value": "账户锁定阈值", "status": "machine-draft" }, "description": { "value": "账户锁定阈值定义了账户被锁定前失败登录尝试的次数。阈值过高(或为零,即不锁定)会允许大规模的密码喷洒,而阈值过低则易于造成拒绝服务", "status": "machine-draft" }, "recommendedValue": { "value": "锁定阈值介于 5 至 10 次失败尝试之间", "status": "machine-draft" }, "remediationSteps": { "value": "在 Default Domain Policy 中配置:Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Account Lockout Policy > “Account lockout threshold” = 5 至 10 次尝试。值为 0 会完全禁用锁定,应予避免。根据组织需求在安全性与可用性之间取得平衡", "status": "machine-draft" } }, "ADPWD-022": { "name": { "value": "锁定观察窗口", "status": "machine-draft" }, "description": { "value": "锁定观察窗口定义了在多长的时间段内将失败登录尝试计入锁定阈值。若观察窗口过短,攻击者可将密码喷洒尝试分散在较长时间内进行,以避免触发锁定", "status": "machine-draft" }, "recommendedValue": { "value": "观察窗口为 15 至 30 分钟,等于或超过锁定持续时间", "status": "machine-draft" }, "remediationSteps": { "value": "在 Default Domain Policy 中配置:Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Account Lockout Policy > “Reset account lockout counter after” = 15 至 30 分钟。确保此值等于或大于锁定持续时间,以防攻击者在喷洒尝试之间等待计数器归零", "status": "machine-draft" } } } |