powershell不直接管理加密算法策略,但可配置bitlocker加密、禁用lm哈希、强化密码策略(含fgpp)及审计加密相关事件。
powershell 本身不直接管理“加密策略”这一宽泛概念,但它能高效配置与加密密切相关的几类关键安全策略:bitlocker 驱动器加密、密码哈希存储方式(如禁用 lm hash)、密码复杂度与生命周期控制、以及精细密码策略(fgpp)。这些不是传统意义上的“加密算法策略”,而是 windows 环境中保障密钥、凭据和数据静态安全的核心配置手段。
启用并批量部署 BitLocker 加密策略
BitLocker 是 Windows Pro/Enterprise 版本中对整个卷进行透明加密的机制。PowerShell 提供了完整的自动化支持,无需图形界面即可完成启用、密钥备份、状态查询与策略强制。
- 检查设备是否支持并已启用 BitLocker:
Get-BitLockerVolume,可查看各驱动器加密状态、恢复密钥ID及保护程序类型 - 为系统盘启用 BitLocker 并将恢复密钥自动备份到 Active Directory(需域环境):
Enable-BitLocker -MountPoint "C:" -EncryptionMethod XtsAes256 -UsedSpaceOnly -AdAccountOrGroupProtector -SkipHardwareTest - 批量导出所有本地设备的 BitLocker 恢复密钥(以 CSV 格式存档):
Get-BitLockerVolume | ForEach-Object { $_ | Get-BitLockerKeyProtector | Where-Object {$_.KeyProtectorType -eq 'RecoveryPassword'} | Select-Object @{Name='Drive';Expression={$_.MountPoint}}, KeyProtectorId, RecoveryPassword } | Export-Csv C:\bitlocker-keys.csv -NoTypeInformation - 强制执行组织级 BitLocker 策略(如要求使用TPM+PIN)可通过组策略对象(GPO)配合 PowerShell 部署:
Set-GPRegistryValue -Name "BitLockerPolicy" -Key "HKLM\Software\Policies\Microsoft\FVE" -ValueName "UseAdvancedStartup" -Type DWord -Value 1
强化密码存储与验证机制(注册表级加密加固)
Windows 默认可能保留弱哈希(如 LM Hash),这会极大削弱密码安全性。PowerShell 可结合注册表操作,禁用不安全哈希并提升 NTLM 认证强度,本质是加固凭证在磁盘和内存中的加密表达形式。
- 以管理员身份运行 PowerShell,禁用 LM 哈希存储(防止明文或易破解哈希泄露):
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "NoLMHash" -Value 1 -Type DWORD - 设置 NTLM 认证兼容性级别为最高(仅允许 NTLMv2,禁用 LM/NTLMv1):
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "LmCompatibilityLevel" -Value 5 -Type DWORD - 上述两项修改后需重启系统生效;可用
Get-ItemProperty验证值是否写入正确
配置与同步密码策略(含精细密码策略 FGPP)
密码策略决定了用户口令的生成规则与生命周期,直接影响暴力破解难度。PowerShell 支持本地、域级及面向特定用户的差异化策略管理。
- 导出当前本地安全策略(含密码策略)为 INF 文件,便于审计或跨机部署:
secedit /export /cfg C:\local-policy.inf - 在域环境中创建精细密码策略(例如为管理员组设定更严要求):
New-ADFineGrainedPasswordPolicy -Name "Admins-Strict-Policy" -Precedence 10 -MinPasswordLength 14 -ComplexityEnabled $true -LockoutDuration "0.12:00:00" -LockoutObservationWindow "0.00:30:00" -LockoutThreshold 5 -MaxPasswordAge "60.00:00:00" -MinPasswordAge "1.00:00:00" - 将 FGPP 应用于特定安全组:
Add-ADFineGrainedPasswordPolicySubject -Identity "Admins-Strict-Policy" -Subjects "CN=Domain Admins,CN=Users,DC=contoso,DC=com" - 查看所有已应用的 FGPP 及其作用对象:
Get-ADFineGrainedPasswordPolicy | Get-ADFineGrainedPasswordPolicySubject
集成日志与合规验证(加密相关行为审计)
加密策略的有效性依赖于持续监控。PowerShell 可读取 Windows 安全事件日志,提取 BitLocker 操作、密码重置、账户锁定等关键线索,支撑合规报告。
- 查询最近 24 小时内所有 BitLocker 相关事件(事件 ID 4702、4704 等):
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4702,4704; StartTime=(Get-Date).AddHours(-24)} -ErrorAction SilentlyContinue - 检查是否存在异常密码重置行为(如非管理员频繁调用 Set-ADAccountPassword):
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4723,4724; StartTime=(Get-Date).AddDays(-7)} | Where-Object {$_.Properties[4].Value -notmatch 'Administrator|svc-adm'} - 将结果导出为时间戳命名的审计文件:
... | Export-Csv "C:\audit\bitlocker-events-$(Get-Date -Format 'yyyyMMdd-HHmm').csv" -NoTypeInformation











