Windows 的经过身份验证的扫描
本文内容
扫描程序安装
先决条件
配置新的经过身份验证的扫描
相关文章
适用于:
通过 Windows 的身份验证扫描可以在非托管 Windows 设备上运行扫描。 你可以通过 IP 范围或主机名远程定位,并通过提供Microsoft Defender 漏洞管理凭据来远程访问设备来扫描 Windows 服务。 配置后,会定期扫描目标非托管设备是否存在软件漏洞。 默认情况下,扫描每四小时运行一次,其中包含更改此间隔或仅运行一次的选项。
备注
若要使用此功能,需要Microsoft Defender 漏洞管理独立。 如果你已经是计划 2 Microsoft Defender for Endpoint客户,则需要Defender 漏洞管理加载项。
然后,安全管理员可以在Microsoft Defender门户中 查看最新安全建议并查看最近发现的目标设备的漏洞。
提示
你知道可以免费试用Microsoft Defender 漏洞管理中的所有功能吗? 了解如何 注册免费试用版 。
与 网络设备 身份验证扫描类似,需要一个已安装扫描程序的扫描设备。 如果尚未安装扫描程序,请参阅 安装扫描程序 ,了解如何下载和安装扫描程序。
以下部分列出了需要配置的先决条件,以便对 Windows 使用经过身份验证的扫描。
需要扫描帐户才能远程访问设备。 该帐户必须是 组托管服务帐户 (gMsa) 。
备注
建议 gMSA 帐户是仅具有所需扫描权限的最小特权帐户,并且设置为定期循环使用密码。
若要创建 gMsa 帐户,请执行以下作:
在 PowerShell 窗口中的域控制器上,运行:
New-ADServiceAccount -Name gmsa1 -PrincipalsAllowedToRetrieveManagedPassword scanner-win11 -i$ -KerberosEncryptionType RC4, AES128, AES256 -Verbose
gmsa1 代表正在创建的帐户的名称,scanner-win11-I$ 代表运行扫描程序代理的计算机名称。 只有此计算机才能检索帐户密码。 可以提供以逗号分隔的计算机列表。
可以使用 Get-ADServiceAccount 和 Set-ADServiceAccount 修改现有帐户
若要安装 AD 服务帐户,请在使用提升的 PowerShell 窗口运行扫描程序代理的计算机上运行:
Install-ADServiceAccount -Identity gmsa1
如果 PowerShell 无法识别这些命令,则可能意味着缺少所需的 PowerShell 模块。 有关如何安装模块的说明因作系统而异。 有关详细信息,请参阅使用组托管服务帐户入门 。
使用下表获取有关要扫描的每台设备上所需的配置的指导,以及扫描帐户所需的权限:
备注
以下步骤只是在每台设备上配置要扫描的权限并使用“性能监视器用户组”的建议方法之一。 还可以通过以下方式配置权限:
将帐户添加到另一个用户组,并授予该组所需的所有权限。
向扫描帐户显式授予这些权限。
若要配置权限并将其应用于使用组策略扫描的一组设备,请参阅 使用组策略配置一组设备 。
展开表
要扫描的设备要求
说明
已启用 Windows Management Instrumentation (WMI)
若要启用远程 Windows Management Instrumentation (WMI) :验证 Windows Management Instrumentation 服务是否正在运行。 转到“ >控制面板所有控制面板项 >Windows Defender 防火墙 >允许的应用程序 ,并确保 Windows Management Instrumentation (WMI) 允许通过 Windows 防火墙。
扫描帐户是性能监视器用户组的成员
扫描帐户必须是要扫描的设备上性能监视器用户组 的成员。
性能监视器用户组对根/CIMV2 WMI 命名空间具有“启用帐户”和“远程启用”权限
若要验证或启用这些权限,请执行以下作:运行 wmimgmt.msc。 右键单击“ WMI 控件 (本地) 并选择 ”属性 ”。 转到“安全性”选项卡。 选择相关的 WMI 命名空间,然后选择“ 安全性 ”。 添加指定的组,然后选择 以允许特定权限。 选择“ 高级 ”,选择指定的条目,然后选择 “编辑 ”。 将 “应用于 ”设置为“此命名空间和子空间”。
性能监视器用户组 应具有 DCOM作的权限
若要验证或启用这些权限,请执行以下作:运行 dcomcnfg。 导航到 “组件服务 >计算机 >”“我的计算机 ”。 右键单击“我的计算机”,然后选择 “属性 ”。 转到“COM 安全性”选项卡。 转到 “启动和激活权限” ,然后选择 “编辑限制 ”。 添加指定的组,然后选择 以允许 远程激活 。
使用组策略,可将扫描帐户所需的配置和权限批量应用于要扫描的一组设备。
在域控制器上执行以下步骤,同时配置一组设备:
展开表
步骤
说明
创建新的组策略对象
在域控制器上,打开组策略管理控制台。 按照以下步骤创建组策略对象 。 创建组策略对象 (GPO) 后,右键单击 GPO 并选择“编辑” 以打开组策略管理编辑器控制台并完成以下步骤。
启用 Windows Management Instrumentation (WMI)
若要启用远程 Windows Management Instrumentation (WMI) :转到“计算机配置 >策略 >”“Windows 设置 ”“ >安全设置”“ >系统服务”。 右键单击“ Windows Management Instrumentation ”。 选择 “定义此策略设置 ”框,然后选择“ 自动 ”。
允许 WMI 通过防火墙
若要允许 Windows Management Instrumentation (WMI) 通过防火墙,转到 “计算机配置 >策略 >”“Windows 设置 >”“安全设置 >”“Windows Defender 防火墙和高级安全 >入站规则 ”。 右键单击并选择“ 新建规则 ”。 选择 “预定义 ”,然后从列表中选择“ Windows Management Instrumentation (WMI) ”。 然后选择“下一步 ”。 选中“ Windows Management Instrumentation (WMI-In) ”复选框。 然后选择“下一步 ”。 选择“允许连接” 。 然后选择“ 完成 ”。 右键单击新添加的规则,然后选择 “属性 ”。 转到“ 高级 ”选项卡并取消选中 “专用 ”和“ 公共 ”选项,因为只有 “域 ”是必需的。
授予执行 DCOM作的权限
若要授予执行 DCOM作的权限,请执行以下作:转到“计算机配置 >策略 >”“Windows 设置 ”“ >安全设置”“>本地策略 >”“安全作 ”。 右键单击“ DCOM:安全描述符定义语言中的计算机启动限制 (SDDL) 语法 ”,然后选择“ 属性 ”。 选择“ 定义此策略设置 ”框,然后选择 “编辑安全性 ”。 添加要向其授予权限的用户或组,然后选择“ 远程激活 ”。
通过组策略运行 PowerShell 脚本,向 Root\CIMV2 WMI 命名空间授予权限:
创建 PowerShell 脚本。 有关可根据需要修改的建议脚本,请参阅本文后面的 示例 PowerShell 脚本。 转到 计算机配置 >策略 >Windows 设置 >脚本 (启动/关闭) >启动 转到“ PowerShell 脚本 ”选项卡。 选择“ 显示文件” ,并将创建的脚本复制到此文件夹 返回到脚本配置窗口,然后选择“ 添加 ”。 输入脚本名称。
使用以下 PowerShell 脚本作为起点,通过组策略向 Root\CIMV2 WMI 命名空间授予权限:
Param ()
Process {
$ErrorActionPreference = "Stop"
$accountSID = "S-1-5-32-558"
$computerName = "."
$remoteparams = @{ComputerName=$computerName }
$invokeparams = @{Namespace="root\cimv2" ;Path="__systemsecurity=@" } + $remoteParams
$output = Invoke-WmiMethod @invokeparams -Name GetSecurityDescriptor
if ($output .ReturnValue -ne 0 ) {
throw "GetSecurityDescriptor failed: $($output .ReturnValue)"
}
$acl = $output .Descriptor
$CONTAINER_INHERIT_ACE_FLAG = 0 x2
$ACCESS_MASK = 0 x21
$ace = (New-Object System.Management.ManagementClass("win32_Ace" )).CreateInstance()
$ace .AccessMask = $ACCESS_MASK
$ace .AceFlags = $CONTAINER_INHERIT_ACE_FLAG
$trustee = (New-Object System.Management.ManagementClass("win32_Trustee" )).CreateInstance()
$trustee .SidString = $accountSID
$ace .Trustee = $trustee
$ACCESS_ALLOWED_ACE_TYPE = 0 x0
$ace .AceType = $ACCESS_ALLOWED_ACE_TYPE
$acl .DACL += $ace .psobject.immediateBaseObject
$setparams = @{Name="SetSecurityDescriptor" ;ArgumentList=$acl .psobject.immediateBaseObject} + $invokeParams
$output = Invoke-WmiMethod @setparams
if ($output .ReturnValue -ne 0 ) {
throw "SetSecurityDescriptor failed: $($output .ReturnValue)"
}
}
将 GPO 策略应用于设备后,将应用所有必需的设置,并且 gMSA 帐户能够访问和扫描设备。
若要配置新的经过身份验证的扫描,请执行以下作:
在Microsoft Defender门户中 转到“设置 >”“设备发现 >经过身份验证的扫描 ”。
选择 “添加新扫描 ”,然后选择“ Windows 身份验证扫描 ”,然后选择“ 下一步 ”。
输入 扫描名称 。
选择 扫描设备: 用于扫描非托管设备的已载入设备。
输入 目标 (范围) : 要扫描的 IP 地址范围或主机名。 可以输入地址或导入 CSV 文件。 导入文件会覆盖任何手动添加的地址。
选择 “扫描间隔: 默认情况下,扫描每四小时运行一次。 可以通过选择“不重复”来更改扫描间隔或仅运行一次扫描间隔。
选择 身份验证方法 - 有两个选项可供选择:
备注
如果 Kerberos 失败,协商选项将回退到 NTLM。 不建议使用 NTLM,因为它不是安全协议。
输入Microsoft Defender 漏洞管理用于远程访问设备的凭据:
使用 azure KeyVault: 如果在 Azure KeyVault 中管理凭据,则可以输入扫描设备要访问的 Azure KeyVault URL 和 Azure KeyVault 机密名称以提供凭据
对于 Azure KeyVault 机密值,请使用格式为“域”的 gMSA 帐户详细信息 ;用户名
选择“ 下一步 ”以运行或跳过测试扫描。 有关测试扫描的详细信息,请参阅 扫描和添加网络设备 。
选择“ 下一步 ”查看设置,然后选择“ 提交 ”以创建新的经过身份验证的扫描。
备注
由于经过身份验证的扫描程序当前使用的加密算法不符合 联邦信息处理标准 (FIPS) ,因此当组织强制使用符合 FIPS 的算法时,扫描程序无法运行。
若要允许不符合 FIPS 的算法,请在运行扫描程序的设备的注册表中设置以下值:Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy 具有名为 Enabled 的 DWORD 值,值为 0x0
符合 FIPS 的算法仅用于美国联邦政府的部门和机构。
可以使用 API 创建新的扫描并查看组织中所有现有配置的扫描。 有关更多信息,请参阅: