🔒 安全最佳实践

Windows Admin Center · 第 9 篇 · 适用于 Windows Server 2019 / 2022 / 2025

📑 目录

  1. HTTPS 与证书加固
  2. 访问控制策略
  3. WinRM 安全配置
  4. 审计日志
  5. 网络隔离
  6. 常见问题

1. HTTPS 与证书加固

PowerShell - 证书安全检查
# 检查 WAC 使用的证书
$binding = netsh http show sslcert
$binding

# 检查证书有效期
Get-ChildItem Cert:\LocalMachine\My" |
    Select-Object Subject, NotAfter, Thumbprint |
    Sort-Object NotAfter
💡 证书安全建议
  • 生产环境禁止使用自签名证书
  • 使用 AD CS 企业 CA 或公共 CA 签发的证书
  • 证书 SAN 包含 WAC 网关的 FQDN
  • 设置证书自动续期提醒
  • 密钥长度 ≥ 2048 位

2. 访问控制策略

2.1 最小权限原则

PowerShell - 精细权限控制
# 创建 WAC 只读组
New-ADGroup -Name "GG-WAC-ReadOnly" -GroupScope Global `
    -Path "OU=Groups,OU=IT信息部,DC=iehang,DC=cn"

# WAC 访问控制基于网关服务器本地 Administrators 组
# 只读用户不加入 Administrators,而是通过 WAC 设置 → 访问 中单独配置

# 被管理服务器上的本地权限
# 将只读组加入 Remote Management Users 组
Add-LocalGroupMember -Group "Remote Management Users" `
    -Member "IEHANG\GG-WAC-ReadOnly"

2.2 会话超时

WAC 默认会话超时 5 分钟,可通过注册表调整:

PowerShell - 配置会话超时
# 设置会话超时为 30 分钟(单位:分钟)
Set-ItemProperty "HKLM:\Software\Microsoft\ServerManagementGateway" `
    -Name "SessionTimeout" -Value 30

3. WinRM 安全配置

PowerShell - WinRM 加固
# 仅允许 HTTPS 连接(禁用 HTTP)
winrm set winrm/config/service '@{AllowUnencrypted="false"}'

# 启用 WinRM HTTPS 监听
$cert = Get-ChildItem Cert:\LocalMachine\My" |
    Where-Object { $_.Subject -match "WDS01" } |
    Select-Object -First 1

winrm create winrm/config/Listener?Address=*+Transport=HTTPS `
    '@{Hostname="WDS01.iehang.cn";CertificateThumbprint="$($cert.Thumbprint)"}'

# 禁用基本认证
winrm set winrm/config/service/auth '@{Basic="false"}'

# 限制远程访问来源
winrm set winrm/config/client '@{TrustedHosts="WAC01.iehang.cn"}'

4. 审计日志

PowerShell - WAC 审计日志
# 查看 WAC 日志位置
$logPath = "C:\Program Files\Windows Admin Center\Logs"
Get-ChildItem $logPath

# 查看 WAC 审计事件
Get-WinEvent -LogName "Microsoft-ServerManagementGateway/Operational" -MaxEvents 50

# 启用详细日志
Set-ItemProperty "HKLM:\Software\Microsoft\ServerManagementGateway" `
    -Name "EnableLogging" -Value 1

5. 网络隔离

💡 WAC 网络安全建议
  • WAC 网关部署在管理网段,与生产网段隔离
  • 仅允许管理终端访问 WAC 端口 443
  • WAC 到被管理服务器的 WinRM(5985/5986)走管理 VLAN
  • 不要将 WAC 暴露到公网,如需远程访问使用 VPN
  • 启用 WAF 或反向代理保护 WAC 端口
PowerShell - 限制 WAC 访问来源
# 仅允许管理网段访问 WAC
New-NetFirewallRule -DisplayName "WAC-Allow-AdminNet" `
    -Direction Inbound" -Protocol TCP" -LocalPort 443 `
    -RemoteAddress 192.168.10.0/24" -Action Allow"

# 阻止其他来源访问 WAC
New-NetFirewallRule -DisplayName "WAC-Block-Other" `
    -Direction Inbound" -Protocol TCP" -LocalPort 443 `
    -Action Block"

6. 常见问题

Q1:如何检测 WAC 是否被未授权访问

① 定期检查 WAC 审计日志中的登录成功/失败事件 ② 配置 WAC 日志转发到 SIEM ③ 监控异常来源 IP 的登录尝试 ④ 启用账户锁定策略

Q2:WAC 和 RDP 哪个更安全

WAC 相对更安全:① WAC 基于 Web,攻击面更小 ② WAC 支持 RBAC 细粒度控制 ③ WAC 使用 WinRM(5985/5986),比 RDP(3389)更易防护 ④ WAC 不暴露完整桌面,减少误操作风险。建议生产环境优先使用 WAC,RDP 仅作备用。