【Linux专题】SMB端口号说明
通常情况下,对于通过TCP/IP直接托管的SMB,端口号为TCP/445;中间人攻击(MITM,man in the middle) 和 NetBIOS 名称服务(NBNS) 欺骗攻击在启用NTB的网络中很常见,特别是在相关端口没有得到适当保护的情况下。另一方面,SMB协议反而可能依赖NetBIOS与不支持TCP/IP直接托管的SMB的旧设备进行通信,因此,SMB协议在通过NBT运行时依赖于139
SMB端口号说明
SMB端口号是 TCP/445,还有一些说法是 SMB端口号还包括 137~139, 这种说法只是部分正确;
早期版本的 SMB(SMB 1.0) 最初设计为在 TCP/IP(NBT)上的 NetBIOS 上运行,它使用:
-
TCP/139 进行会话服务(session services)
-
TCP/UDP/137 进行名称服务(name services)
-
UDP/138 进行数据报服务(datagram services)
默认情况下,为了向后兼容,NBT在windows种被安装和启用; 它因将文件共享和其他信息暴露给网络上的所有人而闻名;虽然它在局域网中这样做问题不大,但如果暴露在互联网上,就会有安全风险。
中间人攻击(MITM,man in the middle) 和 NetBIOS 名称服务(NBNS) 欺骗攻击在启用NTB的网络中很常见,特别是在相关端口没有得到适当保护的情况下。
SMB 和 NTB 有什么关系?
TCP/IP上的NetBIOS(NBT)是一个完全独立于SMB的服务,它不依赖SMB的任何东西。
另一方面,SMB协议反而可能依赖NetBIOS与不支持TCP/IP直接托管的SMB的旧设备进行通信,因此,SMB协议在通过NBT运行时依赖于139端口。
通常情况下,对于通过TCP/IP直接托管的SMB,端口号为TCP/445; 如果 NetBIOS 与 SMB 同时可用(也就是说 139 和 445 端口同时监听),那么哪个先响应,就和哪个协议进行通信。
而 SMB2.0 只可以在 TCP/445 上运行,所以用户可以安全的禁用NBT,以提高安全性并减少NetBIOS广播引起的网络开销。
要查看系统中 139 和 445 端口的状态,可以使用以下powershell 命令。
PS C:\Users\Administrator> Get-NetTCPConnection -LocalPort 139,445 -ea 0 | select Local*,Remote*,State,@{n="ProcessName";e={(Get-Process -Id $_.OwningProcess).ProcessName}}| ft -Auto
LocalAddress LocalPort RemoteAddress RemotePort State ProcessName
------------ --------- ------------- ---------- ----- -----------
:: 445 :: 0 Listen System
192.168.157.1 139 0.0.0.0 0 Listen System
192.168.3.91 139 0.0.0.0 0 Listen System
172.25.254.100 139 0.0.0.0 0 Listen System
172.25.253.1 139 0.0.0.0 0 Listen System
169.254.102.110 139 0.0.0.0 0 Listen System
可以看到当前本地网络正在监听...如果想要禁用 NBT,则需要手动在每个网络接口上单独完成,操作步骤如下图:
如果有多张网卡想要批量一次性关闭,可以执行如下 powershell 的脚本
$adapters = (Get-WmiObject Win32_NetworkAdapterConfiguration | where {$_.IPEnabled -eq $true})
Foreach ($adapter in $adapters)
{
$adapter.SetTcpipNetbios(2) # 2表示禁用;0 表示通过DHCP配置NetBIOS; 1表示启用
将以上代码保存为 disable_NBT.ps1 并右键以 powershell 进行运行即可生效,执行后再次查看端口监听状态可以发现 139 端口全部没了
PS C:\Users\Administrator> Get-NetTCPConnection -LocalPort 139,445 -ea 0 | select Local*,Remote*,State,@{n="ProcessName";e={(Get-Process -Id $_.OwningProcess).ProcessName}}| ft -Auto
LocalAddress LocalPort RemoteAddress RemotePort State ProcessName
------------ --------- ------------- ---------- ----- -----------
:: 445 :: 0 Listen Syste
end
更多推荐
所有评论(0)