我正在尝试禁用不需要的服务,以改善延迟并提高安全性。
我发现通过在 localhost 和端口 445 上执行 telnet,端口 445 仍然打开。由于我不需要端口 445,因此我宁愿关闭它。
我如何才能知道谁在监听端口 445,以及如何禁用它?
请注意,我不想使用防火墙或类似的东西来阻止端口 445,而是想禁用打开端口 445 的程序。
答案1
以下只是引用了两个不同的来源,我曾用它们成功禁用了 Windows XP 计算机上的 445 端口。我关闭了 445 和 135、137 - 139 端口,因此我按照文章中的所有说明操作,结果成功了。
有关端口 445 的常规信息(档案链接)
Windows 2000 使用的新端口包括 TCP 端口 445,用于 SMB over TCP。SMB(服务器消息块)协议用于 Windows NT/2000/XP 中的文件共享等。在 Windows NT 中,它在 NetBT(TCP/IP 上的 NetBIOS)上运行,后者使用著名的端口 137、138(UDP)和 139(TCP)。在 Windows 2000/XP 中,Microsoft 增加了直接通过 TCP/IP 运行 SMB 的可能性,而无需额外的 NetBT 层。为此,他们使用 TCP 端口 445。
简单来说,LAN 上的 NetBIOS 可能只是旧版软件的必要之恶。但是,WAN 或 Internet 上的 NetBIOS 是一个巨大的(愚蠢的……)安全风险。各种信息(例如您的域、工作组和系统名称以及帐户信息)都可以通过 NetBIOS 获得。确保 NetBIOS 永远不会离开您的网络确实符合您的最佳利益。
如果您使用的是多宿主机器,即有超过 1 张网卡,那么您应该禁用每个网卡上的 NetBIOS,或者禁用 TCP/IP 属性下的拨号连接,这些网卡不属于您的本地网络。
要禁用端口 445:
添加以下注册表项:
项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters 名称:SMBDeviceEnabled 类型:DWORD (REG_DWORD) 数据:0
禁用上述端口后,请务必重启计算机。此外,要检查这些端口是否已禁用,您可以打开命令提示符并输入 netstat -an 以确认您的计算机不再监听这些端口。
(Windows 7 及更高版本的注册表项有所不同,请参阅Microsoft 文章)
答案2
我想延长这个答案
Windows 中的端口 445 默认由“Server”服务(真实名称为“lanmanserver”)使用,用于通过 SMB 协议提供文件共享。要阻止 Windows 监听此端口,您需要停止并禁用此服务。
- 您需要拥有管理员权限或能够提升为管理员。
- 以管理员身份打开命令提示符。
- 输入
sc stop lanmanserver
,按 Enter。 - 由于某种原因,此时端口仍处于活动状态(根据我的经验,今天就是这样做的)。您需要重新启动系统以防止它监听端口,但服务将在重新启动后重新启动,因此您需要禁用它:
- 输入
sc config lanmanserver start=disabled
,按 Enter。 - 重启。
- 在命令提示符下使用 进行验证
netstat -n -a | findstr "LISTENING" | findstr ":445"
,它应该打印一个空白行,这意味着没有任何内容在端口上监听。(对于非英语版本的 Windows,命令可能会有所不同,不确定,您可能需要将“LISTENING”更改为翻译版本)
在 Windows 中释放端口 445 的原因有很多,其中之一在我看来非常有趣,那就是允许通过 SSH 进行 SMB 隧道传输 - 当 Windows 不使用该端口时,您现在可以告诉 Putty / Cygwin'ed SSH 使用它并通过安全连接转发到远程主机 - 然后您就可以通过 安全地访问远程文件共享\\localhost
。
答案3
开始-运行-services.msc,禁用服务器服务。
答案4
端口 445 = SMB = 打印机和文件共享。因此,请在网络连接选项中禁用文件共享以关闭该端口。