PowerShell不能一键配置所有安全策略,但可高效落实关键加固项;应从微软官方Windows Security Baseline起步,结合LGPO.exe导入.inf策略、DSC脚本部署,并人工介入最小权限分配、防火墙精细化规则及凭证生命周期管理。
powershell 不能“一键配置所有安全策略”,但能高效、可重复地落实关键加固项。真正有效的自动化,是围绕基线、聚焦高危、留出人工判断空间。
从微软安全基线起步
跳过网上零散脚本,直接使用微软官方发布的 Windows Security Baseline(含 GPO 备份、PowerShell DSC 配置模板)。它已适配等保2.0、CIS、NIST SP 800-53 等主流要求,避免自行拼凑导致遗漏或冲突。
- 下载地址:Microsoft Security Compliance Toolkit(最新版支持 Windows Server 2022/2019)
- 核心交付物包括:
.inf策略文件(用于secedit导入)、.ps1脚本(DSC 配置)、Intune 策略包 - 无域环境可用
LGPO.exe命令行工具导入:LGPO.exe /t .\Baseline.inf
高频可脚本化操作清单
以下动作适合封装为管理员权限运行的 .ps1 脚本,覆盖约 80% 常见风险点:
-
禁用高危服务:如 SNMP、Telnet、Print Spooler(非打印服务器场景)
Get-Service -Name "SNMP*", "Telnet" | Stop-Service -Force; Set-Service -StartupType Disabled -
强化账户策略:用
secedit导入定制 security.inf(由 SCM 工具导出,非硬编码)secedit /configure /db secedit.sdb /cfg .\security.inf /areas ACCOUNTPOLICY -
启用基础审计:记录登录、特权使用、策略更改
auditpol /set /category:"Logon" /success:enable /failure:enableauditpol /set /category:"Privilege Use" /success:enable -
关闭老旧协议:SMBv1、LLMNR、NetBIOS(务必提前验证业务兼容性)
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Confirm:$false
必须人工介入的关键环节
这些事项无法也不应交由脚本全自动决策,否则易引发权限混乱、服务中断或审计不合规:
-
最小权限落地:谁该加入
Remote Desktop Users或Backup Operators组?需结合 AD 角色设计与审批流程 -
防火墙规则精细化:开放 3389 端口?仅限运维网段(如
10.10.20.0/24),还是跳板机 IP?脚本只能设默认放行,源地址限制必须人工配置 - 凭证与密钥生命周期管理:服务账号密码轮换、证书续订、SSH 私钥分发——需对接 Azure Key Vault 或 HashiCorp Vault,非纯 PowerShell 职责
-
变更后验证与回滚:每项配置后应执行检查(如
Test-NetConnection localhost -Port 445),失败则触发预设回滚逻辑(如还原注册表项或重启服务)
WinRM 安全启用(远程自动化前提)
若目标是支撑 PowerShell Remoting、Ansible 或 DSC,WinRM 必须安全启用:
- 组策略中设置服务为自动启动:
路径:计算机配置 → 策略 → Windows 设置 → 安全设置 → 系统服务 →Windows Remote Management (WS-Management)→ 启动类型:自动 - 通过 GPO 登录脚本或启动脚本部署监听器:
winrm set winrm/config @{AllowUnencrypted="false"; MaxTimeoutms="1800000"}winrm create winrm/config/listener?Address=*+Transport=HTTPS @{"CertificateThumbprint"="..."} - 防火墙规则必须显式放行 5986(HTTPS),并限制作用域为可信管理网段,不能依赖
winrm quickconfig自动生成的宽泛规则

















