445 为什么必须盯住
SMB 是跨平台的文件共享协议:Windows 由系统服务提供,Linux 上通常是 Samba。它的问题是历史漏洞集中且利用不需要凭据——蠕虫类攻击可以沿着 445 直接在网内横向传播。加上老式 NetBIOS 会话通道同样能建连,只封一个端口并不足以关闭这条路。核查要点是确认这些端口既不暴露到公网,也不在内部无限制可达。
基本信息
| 加固项 | 文件共享端口收敛 |
|---|---|
| 适用平台 | Linux(Samba)与 Windows(系统服务) |
| 风险等级 | 高 |
| 基线 | 135、137 至 139、445 不对公网开放,内部按需限制来源 |
| 关键动作 | 边界封禁、及时补丁、关闭旧版协议 |
典型使用场景
- 暴露面核查:确认文件共享端口是否被放行到公网
- 蠕虫防护:历史蠕虫事件中的现场排查与封堵
- 专线互联核查:内网互通后共享端口往往被无意放开
- 共享服务治理:文件服务器需要确认访问来源与权限
- 多平台统一:Linux 与 Windows 各自检查,避免只覆盖一侧
Linux 侧核查与收敛
Linux 侧核查与收敛
ss -tlnp | grep -E ':445|:139 '
systemctl status smb nmb --no-pager 2>/dev/null | head -6
iptables -A INPUT -p tcp -m multiport --dports 135,137,138,139,445 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 135,137,138,139,445 -j DROP
testparm -s | head -20 # 查看 Samba 当前生效配置Windows 侧核查
Windows 侧核查
Get-NetTCPConnection -State Listen | Where-Object { $_.LocalPort -in 135,139,445 } | Select-Object LocalAddress,LocalPort,OwningProcess
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol,RequireSecuritySignature,EncryptData
Get-SmbShare | Select-Object Name,Path,Description # 共享清单与用途端口与组件对照
| 端口 | 组件 | 说明 |
|---|---|---|
| 445 | SMB 直接承载 | 蠕虫横向的主要通道,重点盯防 |
| 139 | NetBIOS 会话服务 | 老式通道,只封 445 不足以关闭 |
| 137 至 138 | NetBIOS 名称与数据报 | 常与浏览服务相关,非必要一并收敛 |
| 135 | 远程过程调用定位 | 横向移动常用,需限制来源 |
蠕虫类攻击不需要凭据即可横向移动,所以文件共享的防护是组合动作:边界封禁、补丁更新、关闭旧版协议三件事缺一不可。只做其中一项,其余两项仍会让攻击链成立。
Windows 的管理共享(例如系统盘与管理目录的默认共享)属于系统默认行为,无法删除,只能通过网络层限制来源,所以这类主机不要直接暴露在边界上。Linux 侧的 Samba 配置要用测试工具核对实际生效值,而不是只看配置文件写法。
收敛策略怎么定
按三层推进:边界层完全不开放文件共享端口;主机层按业务需要限制来源网段,关闭不需要的旧协议;共享层核对每个共享的用途与访问权限,删除或停用无人维护的条目。三层都做完再复查一次端口与共享清单,结果同时体现「端口不可达」与「共享有归属」。