为无代理清单准备你的 Windows PC
无需安装任何东西,让 Windows PC 可被 NetBlade 读取:管理员帐户、WMI、SMB、防火墙、远程 UAC、启用脚本和试点 PC。
NetBlade 通过网络、使用 Windows 自带的管理接口读取 Windows PC,不会在上面安装任何东西。作为交换,每台 PC 必须接受来自运行 NetBlade 的 PC 的管理员登录,并让这些流量通过其防火墙。本文准确说明需要哪些条件、域和工作组之间有何不同、NetBlade 的启用脚本会更改什么以及如何撤销,以及如何在动其他 PC 之前先在一台 PC 上验证这一切。
开始之前
- 已安装 NetBlade 并完成首次扫描,PC 已出现在 设备 中(入门)。
- 用于读取目标 PC 的管理员帐户:一个作为本地管理员的域帐户,或每台 PC 上的本地管理员帐户。
- 对一台用作试点的 PC 的物理或远程访问权限,并能在上面以管理员身份运行程序。
- 运行 NetBlade 的 PC 的 IP 地址。它不应改变:如果它来自 DHCP,请在 DHCP 服务器上为它设置保留(原因见第 7 步)。
1. 了解读取会用到什么
对 Windows PC 的读取(设备卡片上的 深度扫描,或设备列表上的 深度清单)通过 Windows 管理进行,NetBlade 还会要求向它开放文件共享:
| 内容 | 端口 | 用途 |
|---|---|---|
| Windows 管理 (WMI) | TCP 135 以及 WMI 服务的动态 RPC 端口 | 读取本身:硬件、系统、更新、服务、防护 |
| 文件共享 (SMB) | TCP 445 | 与 WMI 一同开放;也是 PsExec 的入口 |
| WinRM | TCP 5985 | 仅用于远程操作,不用于读取 |
它还需要该 PC 的 Windows 管理员凭据。尤其是 BitLocker 和 TPM,只有管理员才能读取;没有管理员权限时,卡片会提示需要管理员。
具备这些条件后,NetBlade 会读取:名称、域、操作系统及内部版本、制造商、型号和序列号、处理器、内存、已登录用户、驱动器和物理磁盘、网络适配器、显示器、打印机、电池、故障设备和 USB、已安装的更新、自动启动的服务、随 Windows 启动的程序、可选功能、用户配置文件、本地管理员和帐户、打开的会话、共享文件夹及可写入它们的人、已安装的程序,以及防护:防病毒、各配置文件的防火墙、BitLocker、TPM、安全启动、UAC、远程桌面、SMBv1 和挂起的重启。
注意: 运行 NetBlade 的 PC 无需任何凭据或准备即可读取自身。
2. 域还是工作组:有何不同
| 在域中 | 在工作组中 | |
|---|---|---|
| 帐户 | 一个作为 PC 本地管理员的域帐户 | 每台 PC 上的本地管理员帐户 |
| 远程 UAC | 对域帐户不构成问题 | 对本地帐户必须放宽(第 5 步) |
| 用于远程操作的 WinRM | Kerberos,本 PC 上无需额外设置 | 本 PC 必须在 TrustedHosts 中列出目标 |
在域中还有一个便利之处:当没有任何已存放的凭据能登录时,NetBlade 会尝试它自身运行所用的 Windows 帐户。如果你用一个作为这些 PC 本地管理员的域帐户登录 NetBlade 所在的 PC,那么无需存放凭据就能读取这些 PC。为了配置清晰,仍建议存放一个专用帐户(请参阅 正确管理凭据)。
3. 选择并存放帐户
- 决定 NetBlade 将使用哪个帐户。在域中,通常选择一个专用 IT 帐户,并使其成为工作站本地 Administrators 组的成员。在工作组中,使用每台 PC 的本地管理员帐户。
- 在 NetBlade 中打开 凭据,点击 添加…。
- 将 协议 设置为 Windows (WMI),并按照应用显示的格式输入 用户名:域帐户使用
DOMAIN\user,本地帐户使用.\Administrator。 - 输入密码,选择 适用范围(目前对试点 PC 选择 一个站点 或 一台设备),并添加标签。
- 点击 存放。
4. 先试一台试点 PC
不要准备好二十台 PC 之后才发现帐户是错的。先挑一台。
- 在“凭据”页面上,在 要测试的计算机 中输入试点 PC 的地址,然后点击 测试。上次测试 列显示“有效”或“失败”。
- 从 设备 打开试点 PC 的卡片,点击 深度扫描。
- 查看设备名称正下方的读取状态。“已于 … 通过 … 读取”表示成功。“从未读取”或“读取失败”会打开一个面板,说明原因和处理方法。
如果成功,请跳到第 7 步。如果面板提示防火墙阻止了读取,例如“这是一台 Windows 电脑,但它的防火墙阻止了读取:它只在端口 … 上响应”,请继续第 5 步。
5. 用启用脚本开放 PC
当某台 Windows PC 无法读取时,其卡片会提供一个脚本,只开放 NetBlade 所需的内容,并且只对运行 NetBlade 的 PC 开放。
- 在试点 PC 的卡片上,点击读取状态(从未读取 或 读取失败)。
- 点击 下载启用脚本 并保存文件。
- 在同一面板中,现在也保存 撤销更改的脚本,并将它与启用脚本放在一起。
- 将启用脚本复制到试点 PC 上并双击运行。这是一个
.cmd文件:它会自行请求管理员权限,并逐行说明它在做什么。 - 回到 NetBlade,点击 立即重新读取。
警告: 启用和撤销按钮只在 PC 尚未成功读取时显示在卡片上。一旦读取成功,它们就会消失,因此请在保存启用脚本的同时保存撤销脚本。
脚本会在该 PC 上更改以下内容:
- 添加仅允许来自 NetBlade 所在 PC 的 IPv4 地址的防火墙规则,名称为
NetBlade - WMI (135)、NetBlade - WMI (RPC)、NetBlade - Services (RPC)、NetBlade - SMB (445)和NetBlade - WinRM (5985)。Services 规则开放远程服务管理,让 PsExec 立即启动而无需等待。 - 将 WMI 服务设置为自动启动并启动它。
- 使用
Enable-PSRemoting -Force -SkipNetworkProfileCheck开启 WinRM,用于远程操作。 - 仅当 PC 不在域中时,将
LocalAccountTokenFilterPolicy设置为 1(第 6 步会解释原因)。
运行两次也无妨:它会先删除自己的规则,因此最终只保留一组。
6. 理解远程 UAC 和 LocalAccountTokenFilterPolicy
默认情况下,当 本地 管理员通过网络连接到 PC 时,Windows 会去掉该登录的管理员权限。这是用户帐户控制的远程限制。结果令人困惑:端口已开放,密码正确,但读取仍然被拒绝,提示“WMI:拒绝访问 (0x80070005)”。
在 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 下将注册表值 LocalAccountTokenFilterPolicy 设置为 1,即可解除该限制,使本地管理员在远程时保留其权限。启用脚本只在域外的 PC 上设置它,因为域帐户不会以这种方式被过滤。
如果你改为手动准备 PC,应用中的远程操作指南给出了以下命令,请在该 PC 上以管理员身份在 PowerShell 中运行:
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name LocalAccountTokenFilterPolicy -Value 1 -PropertyType DWord -Force
警告: 这会稍微降低该 PC 的防护:现在任何本地管理员帐户都可以通过网络使用。只在需要的地方使用,并为每台 PC 设置强且唯一的本地管理员密码。撤销脚本会将其删除,远程操作“恢复 UAC 远程限制”也可以。
7. 推广到其他 PC
试点 PC 读取正常后,对其他 PC 重复操作。
- 逐台 PC,使用脚本。 从每台 PC 的卡片下载启用脚本并在那台 PC 上运行。脚本是针对 NetBlade 所在 PC 当前的 IP 地址生成的。这就是该地址不能改变的原因:一旦改变,防火墙规则就不再匹配,读取会停止,直到你运行新的脚本为止。
- 在域中,使用组策略。 NetBlade 不生成策略,但可以集中实现相同的效果。对于 WinRM,应用本身给出的路径是:计算机配置 › 管理模板 › Windows 组件 › Windows 远程管理(Windows Remote Management) › WinRM 服务 › “允许通过 WinRM 进行远程服务器管理”。对于 WMI 和 SMB,常见做法是为 TCP 135、WMI 服务的 RPC 端口和 TCP 445 创建入站防火墙规则,并限制为仅允许 NetBlade 所在 PC 的地址。这属于通用的 Windows 管理操作,请先在一台 PC 上测试。
- 扩大凭据范围。 试点成功后,打开 凭据,在该凭据上点击 适用范围…,将其扩展到 一个站点 或 所有位置。
然后读取所有 PC:设备 > 深度清单,或 站点 > 读取所有设备。站点会报告读取了多少台,以及有多少台没有适用的凭据。
8. 同时为远程操作做好准备(可选)
读取不使用 WinRM,但远程操作会用到。如果你打算使用远程操作,请在卡片上打开 远程操作,展开 远程计算机需要什么。应用会按通常缺失的顺序列出:
- 那台计算机上的管理员帐户,已保存在“凭据”中。
- 在远程计算机上开启 WinRM:
Enable-PSRemoting -Force -SkipNetworkProfileCheck。 - 专用网络或域网络,而不是公用网络。在远程计算机上以管理员身份运行:
Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private
- 在域外,从 此 PC 信任该计算机(将示例替换为它的 IP):
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '192.168.1.50' -Concatenate -Force
- 在域外使用本地帐户时,需要第 6 步中的
LocalAccountTokenFilterPolicy注册表项。 - 没有 WinRM 时使用 PsExec:远程计算机需要开放端口 445 并启用 ADMIN$ 共享。要开放 445:
Enable-NetFirewallRule -Name 'FPS-SMB-In-TCP'
详细信息请参阅 安全地执行远程操作。
9. 如何撤销所有更改
在任何用脚本准备过的 PC 上,运行你保存的 撤销更改的脚本。它会删除 NetBlade 的防火墙规则以及本地帐户的远程管理访问权限。它会保留 WinRM 的开启状态;如果不需要,请以管理员身份在 PowerShell 中将其关闭:
Disable-PSRemoting
如果你没有保留撤销脚本,也可以在一个能正常工作的 NetBlade 中以远程操作的形式实现相同的结果:“恢复 UAC 远程限制”、对第 5 步中列出的每条 NetBlade - … 规则执行“删除防火墙规则”,以及“禁用 WinRM”。这些操作走的正是你要移除的访问途径,因此请把“恢复 UAC 远程限制”留到最后。保留撤销脚本更简单。
检查是否生效
- 卡片的读取状态显示“已于 … 通过 … 读取”,并且 硬件、软件、系统 和 安全 选项卡都已填充内容。
- 安全 选项卡显示 BitLocker 和 TPM 的状态,而不是“需要管理员权限”。
- 在仪表板上,已读取的计算机 增加,覆盖率一行显示有多少台设备已被深度读取。
如果出现问题
- “WMI:拒绝访问 (0x80070005)”。 该帐户未获授权。使用本地帐户或 Microsoft 帐户时,必须开启
LocalAccountTokenFilterPolicy(启用脚本会完成此设置)。在域中,请检查该帐户是否在 PC 的本地 Administrators 组中。 - “WMI:登录失败 (0x8007052E)”。 用户名或密码错误。请检查格式:
DOMAIN\user或.\Administrator。 - “WMI:拒绝访问 (0x80041003)”。 该帐户在 WMI 命名空间上缺少权限。请使用管理员帐户。
- “WMI:未授予登录类型 (0x80070569)”。 那台 PC 上的本地安全策略拒绝了该登录类型。请检查那台 PC 的本地安全策略。
- “WMI 无响应(防火墙阻止,或不是 Windows)”。 防火墙阻止了 WMI,或者该设备不是 Windows。请运行启用脚本。
- “没有适用于此设备的凭据”。 没有任何 Windows 凭据覆盖它。为该设备、站点或所有位置存放一个。
- “无法在此帐户上读取已保存的密码”。 该凭据是由这台 PC 上的另一位 Windows 用户存放的。请以运行 NetBlade 的用户身份登录后重新存放。
- 之前正常,后来所有 PC 同时停止读取。 NetBlade 所在 PC 的 IP 地址很可能发生了变化,导致规则不再匹配。请为它保留地址,并运行新的脚本。
- 一个远程操作花了半分钟以上。 那台 PC 的防火墙阻止了远程服务管理,PsExec 会等待一段时间后才回退。请重新下载启用脚本并运行:当前版本也会开放这一项,并且仍然只对此 PC 开放。