即使锁定 Azure 虚拟网络对 Internet 的访问权限,也可获取 Windows 更新,而不会危及安全性,也不需要作为整体开放对 Internet 的访问权限。 本文包含有关如何设置外围网络(也称为 DMZ)的建议,指导用户托管 Windows Server Update Service (WSUS) 实例,以便在没有 Internet 连接的情况下安全地更新虚拟网络。
如果使用 Azure 防火墙,可以在应用程序规则中使用 Windows 更新 FQDN 标记,允许所需出站网络流量通过防火墙。 有关详细信息,请参阅 FQDN 标记概述。
若要实现本文中的建议,你应该熟悉 Azure 服务。 以下部分介绍在单区域或多区域配置中使用中心辐射型配置的推荐部署设计。
Azure 虚拟网络中心辐射型网络拓扑
我们建议通过创建外围网络来设置中心辐射型网络拓扑。 在 Internet 和虚拟网络之间的中心内的 Azure 虚拟机上托管 WSUS 服务器。 该中心应具有开放端口。 WSUS 将端口 80 用于 HTTP 协议,将端口 443 用于 HTTPS 协议,以便从 Microsoft 获取更新。 分支指所有其他虚拟网络,它们会与中心通信,而不是与 Internet 通信。 可通过创建子网、网络安全组 (NSG) 和 Azure 虚拟网络对等互连(在允许 WSUS 流量的同时阻止其他 Internet 流量)实现此目的。 下图说明中心辐射型拓扑的示例:
下载此体系结构的 Visio 文件。
在此图像中:
- WSUSSubnet 是中心辐射型拓扑的中心。
- NSG_DS 是网络安全组规则,该规则允许 WSUS 的流量,但阻止其他 Internet 流量。
- WSUS VM 是配置为运行 WSUS 的 Azure 虚拟机。
- MainSubnet 是虚拟网络(即分支),其中包含虚拟机。
- NSG_MS 是网络安全组策略,该策略允许来自 WSUS VM 的流量,但拒绝 Internet 流量。
可以重复使用现有服务器,也可以部署将成为 WSUS 的新服务器。 对于 WSUS VM,我们建议至少满足以下要求:
- 操作系统: Windows Server 2016 或更高版本。
- 处理器: 双核,2 GHz 或更快频率。
- 内存: 在服务器和所有其他正在运行的服务及软件所需 RAM 的基础上,再加 2 GB RAM。
- 存储: 40 GB 或更大容量。
- 访问权限:通过使用即时 (JIT) 功能,更安全地访问此虚拟机。 请参阅使用即时功能管理虚拟机访问。
你的网络会有多个 Azure 虚拟网络,这些虚拟网络可能在相同区域中,也可能在不同区域中。 你需要评估所有 Windows Server VM,了解是否可将其中之一用作 WSUS 服务器。 如果有成千上万个要更新的 VM,建议让某个 Windows Server VM 专门充当 WSUS 角色。
如果所有虚拟网络都处于同一区域,建议每 18,000 个 VM 设置一个 WSUS。 此建议是综合考虑 VM 的不同要求的结果,既考虑到要更新的客户端 VM 的数目,又考虑到虚拟网络之间的通信成本。 有关 WSUS 容量要求的详细信息,请参阅规划 WSUS 部署。
可以使用 Azure 定价计算器来确定这些配置的成本。 需要提供以下信息:
- 虚拟机:
- 地区:Azure 虚拟网络的部署区域。
- 操作系统:Windows
- 层:Standard
- 实例:D4 配置
- 托管磁盘:标准 HDD,64 GB
- 虚拟网络:
- 类型
- 如果传输在同一区域进行,则选择“同一区域” 。
- 如果要将数据从一个区域移到另一个区域,则选择“跨区域” 。
- 数据传输:2 GB
- 区域
- 如果传输在一个区域内进行,请选择 WSUS 服务器和虚拟网络所在的区域。
- 如果传输跨区域进行,则源虚拟网络区域为 WSUS 服务器所在的区域。 目标虚拟网络区域为要向其发送数据的区域。
- 如果有多个区域,则需要多次选择“虚拟网络” 。
- 类型
请注意,价格将因区域而异。
手动部署
在确定要用作中心的 Azure 虚拟网络或确定需要创建新的 Windows Server 实例后,需要创建一项 NSG 规则。 该规则将允许 Internet 流量,以便 Windows 更新的元数据和内容与要创建的 WSUS 服务器同步。 下面是需要添加的规则:
- 在端口 80 上允许进出 Internet 的流量的入站/出站 NSG 规则(适用于内容)。
- 在端口 443 上允许进出 Internet 的流量的入站/出站 NSG 规则(适用于元数据)。
- 在端口 8530 上允许来自客户端 VM 的流量的入站/出站 NSG 规则(默认规则,除非进行了配置)。
设置 WSUS
有两种方法可用于设置 WSUS 服务器:
- 若要自动设置配置为处理典型工作负载且只需最少管理的服务器,则可使用 PowerShell 自动化脚本。
- 如果需要处理成千上万个运行许多不同操作系统和语言的客户端,或者想要以 PowerShell 脚本无法处理的方式配置 WSUS,则可手动设置 WSUS。 两种方法均在本文后面部分进行介绍。
也可结合使用这两种方法,具体做法是:使用自动化脚本完成大部分工作,然后使用 WSUS 管理控制台微调服务器设置。
使用自动化脚本设置 WSUS
Configure-WSUSServer 脚本允许快速设置 WSUS 服务器,该服务器会自动同步和批准所选产品和语言集的更新。
注意
该脚本始终将 WSUS 设置为使用 Windows 内部数据库来存储其更新数据。 这可以加快设置并降低管理复杂性。 但是,如果服务器需支持数以千计的客户端计算机(特别是在你还需要支持许多产品和语言的时候),则应改为手动设置 WSUS,这样就可以将 SQL Server 用作数据库。
此脚本的最新版本在 GitHub 上提供。
使用 JSON 文件配置脚本。 目前可以配置以下选项:
- 是应在本地存储更新有效负载(如果是的话,应将其存储在何处),还是应将其保留在 Microsoft 服务器上。
- 服务器上应提供哪些产品、更新分类和语言。
- 服务器是应自动批准要安装的更新,还是应让更新保持未经批准的状态,直至管理员批准。
- 服务器是否应自动从 Microsoft 检索新的更新,以及在应自动检索的情况下,检索频率如何。
- 是否应使用快速更新包。 (快速更新包可减少服务器到客户端的带宽,但代价是客户端 CPU/磁盘使用情况以及服务器到服务器的带宽受到影响。)
- 脚本是否应覆盖其以前的设置。 (通常情况下,为了避免无意中进行的可能会破坏服务器运行的重新配置,脚本在给定服务器上只运行一次。)
将脚本及其配置文件复制到本地存储,并根据需要编辑配置文件。
警告
编辑配置文件时请谨慎操作。 用于 JSON 配置文件的语法很严格。 如果无意中更改了文件的结构,而不仅仅是参数值,则不会加载配置文件。
可通过以下两种方式之一运行此脚本:
可通过 WSUS VM 手动运行脚本。
以下命令从提升的命令提示符窗口运行,并将安装和配置 WSUS。 该命令使用当前目录中的脚本和配置文件。
powershell.exe -ExecutionPolicy Unrestricted -File .\Configure-WSUSServer.ps1 -WSUSConfigJson .\WSUS-Config.json
-
将脚本和 JSON 配置文件复制到你自己的存储容器。
在典型的 VM 和 Azure 虚拟网络配置中,自定义脚本扩展只需要以下两个参数即可正确运行脚本。 (需要将此处所示的值替换为存储位置的 URL。)
"fileUris": ["https://mystorage.blob.core.windows.net/mycontainer/Configure-WSUSServer.ps1","https://mystorage.blob.core.windows.net/container/WSUS-Config.json"], "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File .\Configure-WSUSServer.ps1 -WSUSConfigJson .\WSUS-Config.json"
此脚本会启动为客户端计算机提供更新所需的初始同步。 但是,它不会等待该同步完成。 根据所选的产品、分类和语言,初始同步可能需要数个小时。 之后的所有同步耗时应该会缩短。
手动设置 WSUS
从 WSUS VM 打开“服务器管理器”,然后选择“添加角色和功能” 。
选择“下一步”,直到出现“选择服务器角色”页 。 选择“Windows Server Update Services” 。 出现“添加 Windows Server Update Services 所需的功能?”提示时,选择“添加功能”
选择“下一步”,直到出现“选择角色服务”页 。
- 默认情况下,可以使用“WID 连接” 。
- 如果需要为使用多个不同 Windows 版本(例如,Windows 11 和 Windows 10)的客户端提供支持,请使用“SQL Server 连接”。
选择“下一步”,直到出现“内容位置选择”页 。 输入要用于存储更新的位置。
选择“下一步”,直到出现“确认安装选择”页 。 选择“安装” 。
打开已安装的 Windows Server Update Services,然后选择“运行” 。
选择“下一步”,直到出现“连接到上游服务器”页 。 选择“开始连接” 。
选择“下一步”,直到出现“选择语言”页 。 选择所需语言。
选择“下一步”,直到出现“选择产品”页 。 选择所需产品。
选择“下一步”,直到出现“选择分类”页 。 选择所需更新。
选择“下一步”,直到出现“设置同步计划”页 。 选择同步首选项。
选择“下一步”,直到出现“已完成”页 。 选择“开始初始同步”,然后选择“下一步” 。
选择“下一步”,直到出现“后续步骤”页,然后选择“完成” 。
如果在导航窗格中选择 WSUS 名称(例如,WsusVM),应会看到“同步状态”为“空闲”,“上次同步结果”为“成功” 。
在导航窗格中,选择“选项”>“计算机”>“在计算机上使用组策略或注册表设置” 。 选择“确定” 。
在同步期间,WSUS 会确定自上次同步以来是否有任何新的更新可用。 如果你是第一次同步 WSUS,系统会立即下载元数据。 仅当启用了本地存储,并且已批准至少一个计算机组的更新时,才会下载有效负载。
注意
初始同步可能需要一小时以上时间。 之后的所有同步耗时应该会显著缩短。
配置与 WSUS 通信所需的虚拟网络
接下来,请设置 Azure 虚拟网络对等互连或全局虚拟网络对等互连,以便与中心通信。 建议在已部署的每个区域中设置 WSUS 服务器,最大程度地减少延迟。
在每个充当分支的 Azure 虚拟网络上,需要创建具有以下规则的 NSG 策略:
- 在端口 8530 上允许来自 WSUS VM 的流量的入站/出站 NSG 规则(默认规则,除非进行了配置)。
- 拒绝来自 Internet 的流量的入站/出站 NSG 规则。
接下来,创建从分支到中心的 Azure 虚拟网络对等互连。
客户端 VM
- 为了进一步提高安全性,可以删除 VM 的关联公共 IP 地址。 有关详细信息,请参阅查看、删除公共 IP 地址或更改其设置。
- 有关如何通过使用 JIT 更安全地访问虚拟机的信息,请参阅使用即时功能管理虚拟机访问。
配置客户端虚拟机
WSUS 可用于更新运行 Windows(家庭版 SKU 除外)的任何虚拟机。 在每个客户端虚拟机上完成以下步骤,以启用 WSUS 和客户端之间的通信:
在客户端 VM 中
- 打开“本地组策略编辑器”(或“组策略管理编辑器”)。
- 转到“计算机配置”>“管理模板”>“Windows 组件”>“Windows 更新” 。
- 启用“指定 Intranet Microsoft 更新服务位置” 。
- 输入 URL
http://\<WSUS name>:8530
。 (可以在“更新服务”页上找到 WSUS 名称[例如,WsusVM]。) 此设置可能需要一段时间(长达数小时)才能反映出来。 - 转到“设置”>“更新和安全”>“Windows 更新”。
- 选择“检查更新” 。
在 WSUS VM 中
- 打开“Windows Server Update Services” 。 应该可以看到你的客户端 VM 在“计算机”>“所有计算机”下列出 。
- 选择“更新”>“所有更新” 。
- 将“批准”设置为“除已拒绝项之外的任何项” 。
- 将“状态”设置为“需要” 。 现在,可以看到客户端 VM 需要的所有更新。
- 右键单击任何更新,然后选择“批准” 。
验证
- 在客户端 VM 上,转到“设置”>“更新和安全”>“Windows 更新”。
- 选择“检查更新” 。 应该会看到一个更新,其中包含你在 WSUS VM 中批准的 KB 文章编号(例如,4480056)。
如果你是管理大型网络的管理员,请参阅配置自动更新和更新服务位置,了解有关如何使用组策略设置来自动配置客户端的信息。
多个云的 WSUS 部署
不能跨公有云和私有云设置虚拟网络对等互连。 跨公有云和私有云部署的网络需要在每个云中设置至少一个 WSUS 服务器。
支持说明
目前,WSUS 不支持与 Windows 家庭版 SKU 同步。
Azure 更新管理器
可以使用 Azure 更新管理器来管理和计划针对 WSUS 同步的 VM 的操作系统更新。 根据已将 VM 配置为与之同步的源评估 VM 的修补状态(即缺少哪些修补程序)。 如果将 Windows VM 配置为向 WSUS 报告,则结果可能不同于 Microsoft 更新所显示的内容,具体取决于 WSUS 上次通过 Microsoft 更新进行同步的时间。 配置 WSUS 环境后,即可启用更新管理。 有关详细信息,请参阅 Azure 更新管理器概述。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
首席作者:
- Paul Reed | Azure 合规性高级项目经理
后续步骤
- 有关规划部署的详细信息,请参阅规划 WSUS 部署。
- 若要详细了解如何管理 WSUS、设置 WSUS 同步计划以及其他内容,请参阅 WSUS 管理。