配置基线检查是通过脚本自动比对服务器关键配置项以验证是否符合安全与运维标准的过程,涵盖账户策略、服务状态、防火墙规则、注册表安全项及补丁更新五类,均可用原生PowerShell实现。
什么是配置基线检查
配置基线检查是定期验证服务器是否符合预设安全与运维标准的过程。它不依赖人工逐项核对,而是通过脚本自动比对注册表项、服务状态、系统策略、账户设置等关键配置项,快速识别偏差并生成可追溯的报告。
核心检查项及 PowerShell 实现方式
以下是最常纳入基线的 5 类配置,每项均可通过原生 PowerShell 命令完成检测,无需额外模块:
- 账户策略:用 Get-LocalUser 检查禁用账户、密码永不过期账户;用 net accounts 或 secedit /export 提取密码策略
- 服务状态:用 Get-Service 筛选非手动启动但未运行的服务(如 StartMode -ne 'Manual' -and Status -ne 'Running')
- 防火墙规则:用 Get-NetFirewallRule 查找已启用但作用域为任意 IP 的入站规则(Direction='Inbound' -and Enabled='True' -and RemoteAddress='Any')
- 注册表安全项:用 Get-ItemProperty 读取 HKLM:\System\CurrentControlSet\Control\Lsa 下的 DisableDomainCreds 是否为 1
- 补丁与更新状态:用 Get-HotFix 结合日期筛选近 90 天未安装 KB 更新的服务器
构建可复用的检查脚本结构
一个实用的基线检查脚本应包含三部分:配置定义、执行检测、结果输出。推荐将检查项抽象为哈希表数组,便于维护和扩展:
- 每个检查项含 Name(描述)、Command(执行语句)、Expected(期望值或条件)、Severity(高/中/低)
- 统一用 Invoke-Expression 或 Expected 比对
- 结果写入 CSV 并附时间戳,同时控制台高亮显示失败项(Write-Host -ForegroundColor Red)
集成到日常运维流程
基线检查不应是一次性任务。建议按如下方式落地:
- 将脚本保存在集中管理位置(如 UNC 路径),通过 Scheduled Tasks 设置每周日凌晨自动运行
- 使用 Send-MailMessage 在发现高危偏差时立即邮件告警(需提前配置 SMTP 参数)
- 结合 Group Policy Preferences 或 DSC 自动修复部分可标准化项(如服务启动类型、防火墙默认策略)
- 每次基线更新后,在脚本头部添加版本号与变更说明,便于回溯审计


















