Windows 中 TCP 端口 139 和 445 的使用

Microsoft 在 Windows 2000 中引入了 TCP 端口 445,它仍在 Windows 10 和 Windows Server 2019 中使用。我将解释此端口的用途,以及它与 Windows 中的安全性有何关系。同时,我还将解释如何禁用旧的 TCP 端口 139。

TCP 上的 SMB 与 NBT 上的 SMB

SMB(服务器消息块)协议的一项核心任务是文件共享。在 Windows NT 中,它运行在 NBT(TCP/IP 上的 NetBIOS)之上,它使用著名的端口 UDP 137 和 138 以及 TCP 139。在 Windows 2000 中,Microsoft 添加了直接通过 TCP/IP 运行 SMB 的选项,而没有额外的 NBT 层。这就是 TCP 端口 445 的用途。

启用和禁用 NBT 以控制端口 137、138 和 139

在 Windows 2000 之后的 Windows 版本中,您可以选择禁用 TCP/IP 上的 NetBIOS。首先,找到相应的网络适配器图标,然后右键单击并选择属性。如何找到网络适配器图标在 Windows 版本之间略有不同。接下来,单击 Internet 协议 (TCP/IP) 和属性。此处的确切名称在不同版本之间也略有不同。现在单击高级,然后选择 WINS 选项卡。您可以在那里启用或禁用 TCP/IP 上的 NetBIOS。更改会立即生效,无需重新启动系统。

禁用 NBT(TCP/IP 上的 NetBIOS)以关闭 UDP 端口 137 和 138 以及 TCP 端口 139。启用 NBT 以再次打开这些端口。

Windows 使用端口 445 时,以及使用端口 139 时

从现在开始,我将“客户端”称为映射驱动器和其他共享资源的计算机,“服务器”称为共享资源的计算机。例如,客户端可以是 Windows Server安装,如果您从它连接到另一台计算机。

如果客户端是旧版本的 Windows,如 Windows 2000,并且启用了 NBT,它将始终尝试同时在端口 139 和 445 上连接到服务器。如果有来自端口 445 的响应,它会向端口 139 发送 TCP RST(重置),并仅将其 SMB 会话继续到端口 445。如果没有来自端口 445 的响应,它会继续它的 SMB 会话到端口 139,如果它从那里得到响应。如果任何一个端口都没有响应,会话将失败。

如果客户端禁用了 NBT,它将始终尝试仅在端口 445 上连接到服务器。如果服务器在端口 445 上应答,会话将在该端口上建立并继续。如果它没有回答,会话将失败。其中一种情况是服务器运行 Windows NT 4.0。

较新版本的 Windows,如 Windows 10 和 Windows Server 2019,是有趣的案例。作为客户端,他们也总是首先尝试在端口 445 上连接到服务器,但如果失败,即使启用了 NBT,他们也不会尝试端口 139。会话将简单地失败。

如果服务器启用了 NBT,它会监听 UDP 端口 137 和 138,以及 TCP 端口 139 和 445。如果它禁用了 NBT,它只会监听 TCP 端口 445。所有四个端口在所有版本的 Windows 中都默认打开,包括 Windows 10 和 Windows Server 2019。

来自客户端的空会话

在 Windows NT 4.0 的情况下,空会话始终使用端口 139。像Winfo这样的工具可以为您提供有关 Windows NT 4.0 的大量信息,但是这在 Windows 2000 和更新版本上如何工作?答案很简单——它从客户端的角度根据上述描述工作。如果您从 Windows 2000 运行 Winfo 并启用了 NBT,则端口选择将根据目标系统自动进行。如果您希望 Winfo 从不使用端口 445 以外的任何内容,请禁用 NBT。如果您从较新版本(如 Windows 10 或 Windows Server 2019)运行它,则无论 NBT 状态如何,它都不会使用端口 445 以外的任何内容。但是,默认情况下,较新版本的 Windows 可以很好地防止空会话攻击。

标签