NBT 和 SMB 到底是什么关系?运维必懂底层逻辑
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广播引起的网络开销。
开放 NBT 带来的致命安全隐患
- 全网广播自动泄露主机名、工作组、网段信息,黑客扫描一键收集资产;
- NBNS 名称欺骗攻击,中间人伪造共享服务器,窃取账号密码;
- 端口暴露公网后,易触发永恒之蓝、弱口令爆破等高危漏洞;
企业标准化安全规范:全部服务器禁用 NBT,只保留 445 端口通信。
企业批量加固脚本:一键关闭所有网卡 NBT,消除 139 端口风险
如果想要禁用 NBT,则需要手动在每个网络接口上单独完成,操作步骤如下图:
如果有多张网卡想要批量一次性关闭,可以执行如下 powershell 的脚本
$adapters = (Get-WmiObject Win32_NetworkAdapterConfiguration | where {$_.IPEnabled -eq $true})Foreach ($adapterin$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 -AutoLocalAddress LocalPort RemoteAddress RemotePort State ProcessName------------ --------- ------------- ---------- ----- -----------:: 445 :: 0 Listen Syste