在 Windows Server 中保护 SMB 流量
作为深度防御措施,可以使用分段和隔离技术来保护 SMB 流量并减少网络设备之间的威胁。
SMB 用于文件共享、打印和进程间通信,例如命名管道和 RPC。 它还用作存储空间直通、存储副本、Hyper-V 实时迁移和群集共享卷等技术的网络数据结构。 使用以下部分可配置 SMB 流量分段和终结点隔离,帮助防止出站和横向网络通信。
阻止入站 SMB 访问
在公司硬件防火墙处阻止来自 Internet 的 TCP 端口 445 入站访问。 通过阻止入站 SMB 流量,可阻止从 Internet 进行的访问,从而保护网络内的设备。
如果希望用户在网络边缘访问其入站文件,可以使用基于 QUIC 的 SMB。 这默认使用 UDP 端口 443,并提供 TLS 1.3 加密的安全隧道,例如用于 SMB 流量的 VPN。 该解决方案需要 Windows 11 和在 Azure Stack HCI 上运行的 Windows Server 2022 Datacenter:Azure Edition 文件服务器。 有关详细信息,请参阅基于 QUIC 的 SMB。
阻止出站 SMB 访问
在公司防火墙处阻止到 Internet 的 TCP 端口 445 出站访问。 阻止出站 SMB 流量可防止网络内的设备使用 SMB 将数据发送到 Internet。
不太可能需要允许使用 TCP 端口 445 进行任何到 Internet 的出站 SMB 访问,除非需要将其作为公有云产品/服务的一部分。 主要方案包括 Azure 文件存储和 Office 365。
如果使用 Azure 文件存储 SMB,请使用 VPN 发送出站 VPN 流量。 通过使用 VPN,可将出站流量限制为所需的服务 IP 范围。 有关 Azure 云和 Office 365 IP 地址范围的详细信息,请参阅:
Azure IP 范围和服务标记:
JSON 文件每周更新一次,包括完整文件和每个单独的服务标记的版本控制。 AzureCloud 标记提供云的 IP 范围(公共云、美国政府云、德国云或中国),并按该云中的区域分组。 添加 Azure 服务后,文件中的服务标记将增加。
使用 Windows 11 和 Windows Server 2022 Datacenter:Azure Edition,可以使用基于 QUIC 的 SMB 连接到 Azure 中的文件服务器。 这默认使用 UDP 端口 443,并提供 TLS 1.3 加密的安全隧道,例如用于 SMB 流量的 VPN。 有关详细信息,请参阅基于 QUIC 的 SMB。
清点 SMB 使用情况和共享
通过清点网络的 SMB 流量,可以了解正在出现的流量,并确定其是否有必要。 使用以下问题清单来帮助识别不必要的 SMB 流量。
对于服务器终结点:
- 哪些服务器终结点需要入站 SMB 访问权限才能发挥其作用? 它们是从所有客户端、某些网络还是某些节点进行入站访问?
- 是否有剩余的服务器终结点需要入站 SMB 访问?
对于客户端终结点:
- 哪些客户端终结点(例如 Windows 10)需要入站 SMB 访问? 它们是从所有客户端、某些网络还是某些节点进行入站访问?
- 是否有剩余的客户端终结点需要入站 SMB 访问?
- 是否有剩余的客户端终结点需要运行 SMB 服务器服务?
对于所有终结点,确定是否以最安全的方式允许最少范围的出站 SMB。
查看需要 SMB 入站访问的服务器内置角色和功能。 例如,文件服务器和域控制器需要 SMB 入站访问才能发挥其作用。 有关内置角色和功能网络端口要求的详细信息,请参阅 Windows 的服务概述和网络端口要求。
查看需要从网络内访问的服务器。 例如,可能需要在网络中的任何位置访问域控制器和文件服务器。 但是,应用程序服务器访问权限可能仅限于同一子网上的一组其他应用程序服务器。 可以使用以下工具和功能来帮助清点 SMB 访问:
- 使用 AZSBTools 模块集中的
Get-FileShareInfo
命令来检查服务器和客户端上的共享。 - 使用注册表项
Security Settings\Advanced Audit Policy Configuration\Audit Policies\Object Access\File Share
来启用 SMB 入站访问的审核跟踪。 由于事件数可能很多,请考虑在指定的时长内启用,或使用 Azure Monitor。
通过检查 SMB 日志,可知道哪些节点在通过 SMB 与终结点通信。 可以确定某个终结点的共享是否正在使用中,并了解存在的共享。
配置 Windows Defender 防火墙
使用防火墙规则进一步增强连接安全性。 配置规则以阻止包含例外的入站和出站通信。 出站防火墙策略可阻止在托管网络外部和内部使用 SMB 连接,同时允许访问最少的服务器集而不允许访问其他设备,这是一种横向深度防御措施。
有关需要为入站和出站连接设置的 SMB 防火墙规则的信息,请参阅支持文章防止 SMB 流量横向连接以及进入或离开网络。
该支持文章包括用于以下对象的模板:
- 基于任何类型的网络配置文件的入站规则。
- 用于专用/域(受信任)网络的出站规则。
- 用于来宾/公共(不受信任)网络的出站规则。 对于不受阻止出站流量的防火墙保护的移动设备和居家远程办公人员,必须强制使用此模板。 通过在笔记本电脑上强制实施这些规则,可以减少将用户发送到恶意服务器以获取凭据或运行攻击代码的钓鱼攻击的可能性。
- 包含域控制器和文件服务器的替代允许列表的出站规则,称为“只允许安全连接”。
要使用 null 封装 IPSEC 身份验证,必须在网络中参与规则的所有计算机上创建安全连接规则。 否则,防火墙例外不起作用,只会任意阻止。
注意
应在广泛部署之前测试安全连接规则。 不正确的规则可能会阻止用户访问其数据。
要创建连接安全规则,请使用“具有高级安全性的 Windows Defender 防火墙”控制面板或管理单元:
- 在 Windows Defender 防火墙中,选择“连接安全规则”,然后选择“新建规则”。
- 在“规则类型”中,选择“隔离”,然后选择“下一步”。
- 在“要求”中,选择“请求对入站和出站连接进行身份验证”,然后选择“下一步”。
- 在“身份验证方法”中,选择“计算机和用户(Kerberos V5)”,然后选择“下一步”。
- 在“配置文件”中,选中所有配置文件(“域”、“专用”、“公共”),然后选择“下一步”。
- 输入规则的名称,然后选择“完成”。
请记住,必须在参与入站和出站规则的所有客户端和服务器上创建连接安全规则,否则会阻止它们连接 SMB 出站。 这些规则可能已经通过环境中的其他安全措施实施,并且像防火墙入站/出站规则一样,可以通过组策略进行部署。
在根据防止 SMB 流量横向连接以及进入或离开网络支持文章中的模板配置规则时,请设置以下内容以自定义“只允许安全连接”操作:
- 在“操作”步骤中,选择“只允许安全连接”,然后选择“自定义”。
- 在“自定义只允许安全连接设置”中,选择“允许连接使用 null 封装”。
使用“只允许安全连接”选项可覆盖全局阻止规则。 可以使用简单但最不安全的“允许连接使用 null 封装”和 *替代阻止规则,这些规则依赖于 Kerberos 和域成员身份进行身份验证。 Windows Defender 防火墙允许使用更安全的选项,例如 IPSEC。
有关配置防火墙的详细信息,请参阅具有高级安全性的 Windows Defender 防火墙部署概述。
更新的防火墙规则
从 Windows 11 版本 24H2 和 Windows Server 2025 开始,内置防火墙规则不再包含 SMB NetBIOS 端口。 在 Windows Server 早期版本中创建共享时,防火墙会自动启用文件和打印机共享组中的某些规则。 具体而言,内置防火墙会自动使用入站 NetBIOS 端口 137 至 139。 使用 SMB2 或更高版本进行的共享不使用 NetBIOS 端口 137-139。 如果出于传统兼容性原因而需要使用 SMB1 服务器,则必须手动重新配置防火墙以打开这些端口
我们做出这一更改是为了提高网络安全性。 此更改使 SMB 防火墙规则更符合 Windows Server 文件服务器 角色的标准行为。 默认情况下,防火墙规则只会打开共享数据所需的最少端口数。 管理员可以重新配置规则以恢复传统端口。
禁用 SMB 服务器(如果未使用)
Windows 客户端和网络上的某些 Windows 服务器可能不需要运行 SMB 服务器服务。 如果不需要 SMB 服务器服务,可以禁用该服务。 禁用 SMB 服务器服务之前,请确保计算机上的应用程序和进程都不需要该服务。
已准备好实现时,可以使用组策略首选项在大量计算机上禁用该服务。 有关配置组策略首选项的详细信息,请参阅配置服务项。
使用策略进行测试和部署
首先在选定服务器和客户端上使用小规模手动部署进行测试。 通过分阶段推出组策略进行这些更改。 例如,从使用 SMB 最多的用户(例如你自己的 IT 团队)开始。 如果在部署入站和出站防火墙规则后,团队的笔记本电脑和应用以及文件共享访问正常工作,请在广泛的测试和 QA 环境中创建测试组策略。 根据结果,开始对一些部门计算机进行抽样,然后向外扩展。
后续步骤
观看 Jessica Payne 的 Ignite 会议会话 Windows 防火墙揭秘