端口445(SMB over TCP)一旦暴露在公网,平均存活时间不超过15分钟就会被扫描器锁定。这不是危言耸听,而是全球威胁情报的共识。勒索软件、蠕虫病毒、挖矿木马对445端口的扫描从未停止,每秒都有自动化攻击在尝试利用SMB协议漏洞进行暴力破解或漏洞利用。治理445端口不是可选项,而是Windows服务器安全加固的底线。

认清445端口的真实风险

445端口承载着SMB协议,负责Windows文件共享、打印机共享、NetBIOS-less通信等核心功能。永恒之蓝漏洞利用的就是SMBv1的缺陷,WannaCry勒索病毒正是通过445端口在数小时内感染了全球数十万台主机。即便系统已打补丁,弱口令、NTLM中继、SMB签名缺失等问题依然能让攻击者通过445端口横向移动,拿下域控只是时间问题。很多人以为装了杀软、打了补丁就万事大吉,实际上445端口只要可达,攻击面就始终存在。密码喷洒、哈希传递、暴力枚举共享目录,这些攻击手法对开放445的主机屡试不爽。

先判断445端口是否必须开放

治理的第一步是搞清楚这台服务器到底需不需要445端口对外提供服务。绝大多数Web服务器、应用服务器、数据库服务器根本不需要向公网或办公网开放445。文件共享需求应当严格限定在内网特定网段,通过防火墙策略做最小化暴露。如果你管理的是一台面向互联网的Windows服务器,立刻检查入站规则,确认445端口的放行范围。很多运维习惯直接关闭Windows防火墙,或者图省事放行所有端口,这种做法等于把服务器大门敞开。对于必须使用文件共享的场景,优先考虑VPN组网后再访问,或者改用SFTP、HTTPS文件传输等替代方案,从协议层面规避SMB的风险。

通过本地组策略关闭445端口

最彻底的治理方式就是在不需要SMB服务的服务器上直接禁用445端口。Windows系统本身提供了多种关闭方式,操作前请确认业务不依赖SMB协议。打开网络和共享中心,进入更改适配器设置,右键网卡属性,取消勾选“Microsoft网络的文件和打印机共享”和“Microsoft网络客户端”,这一步能直接阻止445和139端口监听。但仅靠界面操作不够彻底,还需要进入注册表确认。定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters,将SMBDeviceEnabled值设为0,然后重启系统。对于Windows Server 2016及更高版本,还可以通过PowerShell命令禁用SMBv1乃至整个SMB协议栈。

# 禁用SMBv1(需管理员权限,重启生效)
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

# 临时关闭SMB服务(立即生效,重启后恢复)
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

# 完全禁用SMB服务器服务(谨慎操作)
Stop-Service LanmanServer
Set-Service LanmanServer -StartupType Disabled

执行上述命令前务必确认服务器角色。域控制器依赖SMB进行SYSVOL和NETLOGON共享复制,禁用LanmanServer服务会导致域控功能彻底瘫痪。文件服务器、DFS复制节点同样不能直接关闭SMB服务。对于这些必须保留445端口的服务器,治理策略要从“关闭”转向“加固”。

Windows防火墙精细化控制445端口

对于必须开放445但又需要限制访问来源的场景,Windows防火墙的高级安全规则是最直接有效的工具。不要用简单的“放行”或“阻止”一刀切,而要基于来源IP、网络配置文件、身份验证条件做精细化控制。打开“高级安全Windows防火墙”,新建入站规则,选择端口,指定TCP 445,在“作用域”中填写允许访问的远程IP地址段。这一步至关重要,只允许信任的管理网段或特定跳板机IP访问445,其余来源一律默认阻止。同时建议将规则绑定到“域”网络配置文件,确保服务器在非域环境下自动阻断445流量。

很多人忽略了防火墙的出站控制。如果服务器已被入侵,攻击者可能利用445端口反向连接外部C2服务器。建议同样配置出站规则,限制445端口仅向必要的内网目标发起连接,阻止一切向公网的445出站流量。日志记录也要开启,定期审计被拒绝的连接尝试,这些日志往往是发现内网横向移动攻击的早期信号。

关闭139端口和NetBIOS over TCP/IP

谈到445就绕不开139端口。139端口基于NetBIOS会话服务,与445共同构成Windows文件共享的通信通道。即便关闭了445,如果139端口依然开放,攻击者仍可通过NetBIOS进行名称解析欺骗、会话劫持和共享枚举。治理445必须同步关闭139。方法是在网络适配器属性的TCP/IPv4高级设置中,进入WINS标签页,选择“禁用TCP/IP上的NetBIOS”。也可以通过DHCP作用域选项统一推送此设置。注册表路径HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces下,将对应网卡GUID的NetbiosOptions值设为2,代表禁用NetBIOS。重启网卡或系统后,139端口将不再监听。

SMB协议加固:签名、加密与版本管控

对于必须运行SMB服务的服务器,协议层面的加固是纵深防御的关键。SMB签名能有效防止NTLM中继攻击和中间人篡改。默认情况下,Windows Server的SMB签名策略可能未强制启用。通过组策略或PowerShell强制要求SMB签名,可以大幅提升攻击门槛。

# 查看当前SMB签名配置
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol, RequireSecuritySignature

# 强制启用SMB签名
Set-SmbServerConfiguration -RequireSecuritySignature $true -Force
Set-SmbClientConfiguration -RequireSecuritySignature $true -Force

SMB加密是另一项关键配置。在传输敏感数据的场景下,启用SMB加密可以防止数据包被嗅探。Windows Server支持对单个共享或整个服务器启用SMB加密。对于承载财务数据、客户信息的共享目录,建议单独启用加密。命令为Set-SmbShare -Name "共享名" -EncryptData $true。SMB版本管控同样重要,SMBv1已知漏洞众多且已被微软弃用,必须彻底禁用。SMBv2和v3在安全性和性能上大幅改进,应确保服务器仅启用这两个版本。通过Get-SmbServerConfiguration查看当前启用的协议版本,确认EnableSMB1Protocol为False。

组策略统一管控企业内网445端口

企业环境中单台服务器逐一配置效率太低且容易遗漏,必须借助组策略实现规模化治理。在域控上创建专门的GPO,链接到需要加固的服务器OU。通过“计算机配置-策略-Windows设置-安全设置-高级安全Windows防火墙”路径,统一部署445和139端口的入站限制规则。同时利用“计算机配置-管理模板-网络-Lanman工作站”和“Lanman服务器”策略项,集中管控SMB签名、SMB版本、空闲会话超时等参数。空闲会话超时建议设置为15分钟以内,减少会话劫持风险。对于非域环境,可以导出防火墙策略为.wfw文件,通过脚本批量导入,或者使用DSC(期望状态配置)实现基础设施即代码的安全基线。

RDP端口3389的协同治理

高危端口治理不能只盯着445,3389同样是重灾区。RDP暴力破解是勒索团伙最常用的初始入侵手段之一。如果必须开放3389,务必修改默认端口号,但这只是障眼法,不能替代实质性加固。核心措施包括:启用网络级身份验证(NLA),确保在建立完整RDP会话前先完成身份认证;配置账户锁定策略,连续5次登录失败锁定30分钟以上;使用强密码或多因素认证;通过Windows防火墙限制RDP访问来源IP。对于管理需求,优先部署堡垒机或特权访问管理方案,避免直接暴露RDP端口。

其他高危端口的协同治理清单

135端口(RPC Endpoint Mapper)、137端口(NetBIOS名称服务)、138端口(NetBIOS数据报服务)与139、445共同构成NetBIOS/SMB攻击面,应一并处置。关闭NetBIOS over TCP/IP后,137和138端口会自动停止监听。135端口涉及RPC服务,无法直接关闭,但可以通过防火墙限制访问来源,并在注册表中限制RPC动态端口范围,配合防火墙策略做精准管控。此外,1433(SQL Server)、3306(MySQL)、6379(Redis)、27017(MongoDB)等数据库端口同样属于高危范畴,这些服务默认监听所有网络接口,极易因配置疏忽暴露在公网。治理原则一致:最小化监听范围,绑定内网IP,强制认证,禁用危险功能。

建立端口暴露的持续监控机制

治理不是一次性工程,配置漂移、业务变更、新服务器上线都可能重新引入风险。需要建立自动化的端口暴露检测能力。利用内网扫描工具定期对服务器网段进行端口扫描,生成暴露面报告。将扫描结果与CMDB资产信息关联,自动识别新增的端口监听。对于Windows服务器,可以通过PowerShell脚本定期获取监听端口列表,与基线对比,发现异常即时告警。

# 获取当前所有TCP监听端口及对应进程
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess | 
ForEach-Object {
    $process = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
    [PSCustomObject]@{
        IPAddress = $_.LocalAddress
        Port = $_.LocalPort
        PID = $_.OwningProcess
        ProcessName = $process.ProcessName
    }
} | Sort-Object Port | Format-Table -AutoSize

将上述脚本纳入定期任务,输出结果与已知的安全基线对比。任何非预期的445、139、3389监听都应触发安全事件工单。同时建议部署主机入侵检测系统,监控SMB会话异常、登录失败激增、可疑进程注入等行为,与端口治理形成互补。

云端Windows服务器的特殊注意事项

云上Windows服务器往往通过安全组而非Windows防火墙控制网络访问。很多运维习惯在安全组层面放行445,却忽略了操作系统内部的加固,导致同一VPC内的其他主机成为攻击跳板。云环境下的445治理需要双层防护:安全组层面严格限制445入站来源为必需的内网IP段,操作系统层面同步执行SMB加固和防火墙规则。特别注意云厂商提供的“安全组默认规则”,很多默认模板会放行同一安全组内所有流量,如果安全组范围过大,445端口在内网的暴露面依然很广。建议按业务角色细化安全组划分,避免使用过于宽泛的IP范围。

445端口治理的本质是攻击面管理。每关闭一个不必要的端口,就减少一条攻击者可以利用的路径。在勒索软件产业化、自动化攻击工具泛滥的今天,端口治理是最基础也最有效的防御手段之一。与其在入侵事件发生后紧急响应,不如现在就动手检查每一台Windows服务器的监听端口,把445、139、135、3389这些高危敞口逐一收紧。安全没有银弹,但扎实的基础加固能让90%的自动化攻击无功而返。