域控制器打印服务安全风险与防护指南

本文详细分析了在域控制器上运行打印后台处理程序服务的潜在安全风险,包括已知的打印机漏洞攻击,并提供了通过组策略禁用该服务的具体方法,同时附带了用于检查服务状态的PowerShell脚本代码。

Active Directory 安全提示 #11:域控制器上的打印服务

打印后台处理程序服务是 Windows 服务器的默认服务,并设置为在启动时运行。在域控制器上运行打印后台处理程序服务会启用多种攻击(例如:打印机漏洞:https://adsecurity.org/?p=4056)。

目前最佳做法是配置组策略以在域控制器上禁用打印后台处理程序服务(第 2 和第 3 张截图显示了组策略设置)。此更改不应影响任何功能。不应有人将其域控制器用作打印服务器,并且默认情况下,此服务仅管理自动打印机对象清理,但需要配置组策略来实现此功能。在 8 年执行 Active Directory 安全评估(ADSAs)的过程中,我们总共只见过这种情况 2 次。

用于检查当前域中打印后台处理程序服务是否正在运行的 PowerShell 代码(需要 DC 管理员权限,即域管理员或同等权限):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$Domain = $env:userdnsdomain
$DomainDC = (Get-ADDomainController -Discover -DomainName $Domain).Name

$DomainDCs = Get-ADDomainController -Filter * -Server $DomainDC | Sort HostName 
ForEach ($DomainDCItem in $DomainDCs) 
 { 
     $ServiceStatusArray = Get-service -Name 'spooler' -ComputerName $DomainDCItem.HostName 
     switch ($ServiceStatusArray.Status) 
      { 
         "Running" { Write-host "$($DomainDCItem.HostName): Print Spooler Service is RUNNING" -ForegroundColor Red } 
         "Stopped" { Write-host "$($DomainDCItem.HostName): Print Spooler Service is stopped" -ForegroundColor Green } 
         default { Write-host "$($DomainDCItem.HostName): Test failed" -ForegroundColor Yellow } 
      } 
 }
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计