如何禁用在Windows Server上打开端口445的功能?


13

我试图禁用不需要的服务,以改善延迟并提高安全性。

我发现通过在localhost和端口445上进行telnet,端口445仍然处于打开状态。由于我不需要端口445,因此我希望将其关闭。

如何确定谁在监听445端口以及如何禁用它?

请注意,我不想使用防火墙或类似功能阻止端口445,而是要禁用已打开端口445的程序。


2
四年之后,这个问题的日子到了。
BlackPanda

1
对于非极客人士:BlackPanda是指WannaCry勒索软件
Gras Double

Answers:


7

以下仅是引用了两个不同的来源,我曾经成功地在Windows XP计算机上禁用了端口445。我关闭了端口445和135和137-139,所以我按照本文中的所有说明进行了操作,对我来说很有效。

有关端口445的常规信息(存档链接)

Windows 2000使用的新端口中有TCP端口445,用于TCP上的SMB。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永远不会离开您的网络确实符合您的最大利益。

如果使用的是多宿主计算机(即多个网卡),则应禁用每个网卡上的NetBIOS或TCP / IP属性下的“拨号连接”(这不是本地网络的一部分)。

如何禁用端口445

禁用端口445:

添加以下注册表项:

密钥:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ NetBT \ Parameters名称:SMBDeviceEnabled类型:DWORD(REG_DWORD)数据:0

禁用上述端口后,请不要忘记重新启动计算机。另外,要检查这些端口是否被禁用,您可以打开命令提示符并键入netstat -an,以确认您的计算机不再侦听那些端口。

(Windows 7及更高版本的注册表项不同,请参阅此Microsoft文章


禁用端口445是否与使用防火墙相同?解决症状而不是原因。相反,仅禁用NetBIOS会阻止端口445打开吗?只是问问。(如果不是,也许OP确实必须禁用该端口)
nixda 2013年

我当时是在阻止网络中的计算机使用Windows网络期货相互通信。您知道Windows网络-这是非常不安全的。一台计算机感染了病毒,并且会四处传播(是的,使用上述端口)。就我而言,我什至不需要这些计算机就可以知道彼此的存在,但是我仍然需要它们位于同一网段中。因此,防火墙不是我的解决方案。
VL-80

我试过了,它也可以在Windows Server 2008 R2 SP1上工作。
javapowered

我也发现了这篇有用的文章ssj100.fullsubject.com/…–
javapowered

同意!这篇文章是我的回答(:二环线
VL-80

10

我想扩展这个答案

Windows中的端口445在默认情况下由“服务器”服务(真实名称为“ lanmanserver”)使用,以通过SMB协议提供文件共享。为了防止Windows侦听此端口,您需要停止并禁用此服务。

  1. 您需要具有管理员权限或能够提升为管理员。
  2. 以管理员身份打开命令提示符。
  3. 类型sc stop lanmanserver,按Enter键。
  4. 由于某种原因,该端口仍将处于活动状态(根据我的经验,今天已这样做)。您需要重新引导系统以防止其侦听端口,但是该服务将在重新引导后重新启动,因此需要禁用它以使其无法启动:
  5. 类型sc config lanmanserver start=disabled,按Enter键。
  6. 重启。
  7. 在命令提示符下使用验证netstat -n -a | findstr "LISTENING" | findstr ":445",它应该打印一个空行,表示该端口上没有侦听任何内容。(对于非英语版本的Windows,命令可能会有所不同,不确定,您可能需要将“ LISTENING”更改为翻译后的变体)

在Windows中释放端口445的原因多种多样,其中一个很有趣,它是允许SMB通过SSH进行隧道传输-当Windows不使用该端口时,您现在可以告诉Putty / Cygwined SSH使用并转发通过安全连接到远程主机-然后您可以通过以下方式安全地访问远程文件共享 \\localhost。。


1
禁用服务器服务可能会产生非常意外的后果。在我的系统上,它安装了Light Explorer插件而损坏了Notepad ++。尝试启动程序不再提供任何可见窗口(尽管它正在运行,在任务管理器中可以观察到)。
Gras Double

1

Start-run-services.msc,禁用服务器服务。


2
我做到了,但我仍然能够连接到本地主机上的端口445
javapowered

1

使用TCPView找出哪个程序正在侦听端口445。

如果侦听器是svchost.exe,则这是系统服务。要猜出哪个,记下它的PID,转到任务管理器,选择Services,然后单击PID对其进行排序。带有此PID的服务将很多,并且所有这些都是候选对象。如果您不能确定哪个,请张贴候选服务的名称,以便我们对其进行评论。

请注意,开放的端口不需要监听器。当端口未被防火墙阻止时,该端口称为“开放”。


防火墙上的开放端口不同于计算机上的开放端口。如果存在侦听器并监视该端口的通信,则该端口是打开的。如果不存在任何侦听器,则将其关闭。防火墙添加了另一层,该层可能允许,阻止(返回表示其已关闭的数据包)或丢弃(静默忽略)数据包,但这与端口在OS中是打开还是关闭是分开的。
NetworkLlama


0

电源外壳:

$netBTParametersPath = "HKLM:\SYSTEM\CurrentControlSet\Services\NetBT\Parameters" 
IF(Test-Path -Path $netBTParametersPath) { 
    Set-ItemProperty -Path $netBTParametersPath -Name "SMBDeviceEnabled" -Value 0 
} 
Set-Service lanmanserver -StartupType Disabled 
Stop-Service lanmanserver -Force

更多细节如何禁用功能,它通过PowerShell中打开445端口上的窗户


请不要对多个问题发布相同的答案。如果相同的信息确实回答了两个问题,则应关闭一个问题(通常是较新的问题),作为另一个问题的重复。您可以通过投票将其关闭作为重复项来表明这一点,或者,如果您没有足够的声誉,可以举一个标志来表明它是重复项。否则,请针对这个问题量身定制答案,而不仅仅是在多个地方粘贴相同的答案。
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.