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,以及TCP139。在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有响应,则它将TCP RST(重置)发送到端口139,并仅继续其SMB会话到端口445。如果没有来自端口445的响应,则只要它从那里获得响应,它就会继续其SMB会话到端口139。如果两个端口均未响应,则会话将失败。
如果客户端禁用了NBT,它将始终尝试仅通过端口445连接到服务器。如果服务器在端口445上应答,则将建立会话并在该端口上继续。如果未回答,则会话将失败。服务器运行Windows NT 4.0时就是这种情况之一。
例如Windows 10和Windows Server 2019的Windows的较新版本是有趣的情况。作为客户端,他们还将始终仅首先尝试仅在端口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可以很好地保护其免受空会话攻击。