5.16 如何关闭445/TCP口 https://scz.617.cn/windows/200602071156.txt Q: sc config lanmanserver start= disabled net stop srv 禁用Server服务之后,445/TCP仍会出现在netstat输出里。虽然已经无法建立SMB会 话,但我对netstat输出有洁癖,如何让它消失? A: http://www.petri.co.il/what's_port_445_in_w2k_xp_2003.htm HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters TransportBindName REG_SZ \Device\ 删除缺省的"\Device\",留一个空值。重启后"netstat -na"将看不到445/TCP口。但 同时客户端SMB机制支持一并被取消。 A: Jean Baptiste Marchand 2002-02-09 至少有两种办法可以关闭445/TCP: 1) 禁用NetBT驱动 第一种方法彻底禁用了系统中的SMB机制,客户端、服务端支持均被取消。为了停止 NetBT驱动,必须先停止工作站、服务器服务,如果不这样做而试图直接停止NetBT驱 动,系统将出故障。 net stop rdr net stop srv net stop netbt rdr、srv不是服务名称,也不是显示名称,而是net命令自己支持的,在此分别等价 于lanmanworkstation、lanmanserver。445/TCP将被热关闭。 "NetBios over Tcpip"驱动可以手工停止,但不能手工启动,只能重启才可恢复。为 了阻止NetBT驱动在重启OS时自动加载,必须将启动类型由缺省的1改成4: -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT] "Start"=dword:00000004 -------------------------------------------------------------------------- sc config netbt start= disabled 2) 修改注册表 更多时候第一种方法不是我们所期望的,客户端SMB机制的支持还是需要的。通过修 改注册表可以实现禁用由TCP层直接承载的SMB协议,但继续启用NetBT。 -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] "SMBDeviceEnabled"=dword:00000000 -------------------------------------------------------------------------- 重启OS使之生效,445/TCP不再侦听中。 A: devmgmt.msc->查看->显示隐藏设备->非即插即用驱动程序->NetBios over Tcpip->右键停用->重启OS使之生效 这将彻底禁用系统中的SMB机制,客户端、服务端支持均被取消。 D: tk@nsfocus 2004-07-22 逆向分析netbt.sys之后,发现可以通过注册表改变445/TCP、445/UDP: -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Smb] "SessionPort"=dword:00000000 "DatagramPort"=dword:00000000 -------------------------------------------------------------------------- 本来试图通过这种办法关闭445/TCP,重启之后,系统自动处理成1/TCP、1/UDP。如 将SessionPort指定成135/TCP,在争夺中原EPM功能将丧失,SMB功能争夺成功。 D: sparrow@smth 2006 装了IPv6之后,tk给出的注册表项就不起作用了。在此情况下为使之继续起作用,需 额外修改注册表: -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] "UseNewSmb"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Smb] "SessionPort"=dword:000001bd "DatagramPort"=dword:000001bd -------------------------------------------------------------------------- 装了IPv6之后,增加了一个驱动smb.sys,处理IPv6下的SMB协议。UseNewSmb非0时将 使用smb.sys,该驱动中固化了445/TCP。 D: microsoft 有注册表项可以禁用服务端的SMBv1、SMBv2: Windows Registry Editor Version 5.00 -------------------------------------------------------------------------- [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters] "SMB1"=dword:00000000 "SMB2"=dword:00000000 -------------------------------------------------------------------------- 0表示禁用,1表示启用(缺省值)。 禁用客户端的SMBv1: sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi sc.exe config mrxsmb10 start= disabled 启用客户端的SMBv1: sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi sc.exe config mrxsmb10 start= auto 禁用客户端的SMBv2、SMBv3: sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi sc.exe config mrxsmb20 start= disabled 启用客户端的SMBv2、SMBv3: sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi sc.exe config mrxsmb20 start= auto 更多细节参看: How to enable and disable SMBv1, SMBv2, and SMBv3 in Windows and Windows Server https://support.microsoft.com/en-us/help/2696547/how-to-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and-windows-server 这条Discuss是给高级用户看的,小白不要用,尤其不要轻易禁用客户端SMB支持。