记得那年公司内网被WannaCry勒索病毒扫荡的时候,我正蹲在机房折腾一台老旧的Windows XP服务器。突然整个办公区炸锅了——财务部的报表全部变成了加密文件,行政部的考勤记录锁死,连打印室的共享打印机都在疯狂吐加密警告单。后来溯源发现,罪魁祸首就是445端口没关。那是我入行以来第一次亲手处理大规模安全事件,从此我对端口安全再也不敢掉以轻心。

说实话,XP这老家伙现在确实有点过时了,但不少工厂控制机、老式POS机甚至学校机房还在用。445端口作为SMB协议的核心通道,简直就是黑客们的后门快递专用通道。关掉它不一定能百分百免疫所有攻击,但至少能挡掉八成以上的网络扫描和蠕虫传播。我的经验是,只要不是必须用文件共享的场景,关掉绝对利大于弊。
先说说我最喜欢用的组策略方法吧。组策略这东西就像给系统装了个内部警察,直接从系统行为层面封杀端口,比单纯靠防火墙更底层。不过XP的组策略编辑器藏得有点深,你得先点开始菜单→运行→输入gpedit.msc(注意啦,家庭版的XP压根没这功能,得用专业版或企业版)。打开之后别眼花,跟着我一步步走:计算机配置→Windows设置→安全设置→IP安全策略 在这儿右键选择“创建IP安全策略”,名字随便取个比如“Block445”,然后一路下一步。
到了关键步骤了——添加规则。这里有个坑:很多新手会忘记勾选“激活默认响应规则”,千万别勾!那个是用于域环境的,咱们单独封端口用不上。然后在新规则属性里点“添加”,描述写“拒绝445入站”,再下一步。这时候要选“此规则不指定隧道”,身份验证用默认的Kerberos就行。接着配置筛选器操作,选“阻止”然后完成。
最关键的来了:配置筛选器列表。得新建一个筛选器,源地址选“任何IP”,目标地址选“我的IP地址”,协议类型选TCP,然后从任意端口到此端口445。同样的步骤再建一个UDP的筛选器,因为445端口两者都用的。最后把这两个筛选器绑到刚才的规则上,再右键分配策略,才算真正生效。
记得有次我给客户部署这个策略,死活不生效,折腾半天才发现是组策略没刷新。后来学乖了,每次改完都必跑一行命令:gpupdate /force 。然后重启系统才稳妥。XP有时候就是这样,配置生效慢半拍,急不得。
当然组策略也不是万能的。有时候你会遇到权限问题,比如用受限账户登录改策略时会灰显点不动。这时候就得用管理员账户,或者干脆用命令runas /user:administrator gpedit.msc来提权。还有一次碰到某台机器组策略编辑器直接报错,后来发现是系统文件损坏,只能从同版本XP拷贝个gpedit.msc过来补救。
再说说防火墙方案。其实对于新手来说,防火墙可能更直观些。打开控制面板→Windows防火墙→例外标签,找到“文件和打印机共享”然后点编辑→删除445端口。但注意啊,这里有个隐藏坑:XP的防火墙默认不开放445,但如果之前有人改过设置,可能需要先删除现有规则再重建。
我更喜欢用命令行搞防火墙,因为更快更精准。用管理员打开cmd,输入:
netsh firewall set portopening TCP 445 disable
(这行命令的意思是直接封掉TCP 445端口)
不过要记得UDP也得单独处理:
netsh firewall set portopening UDP 445 disable
有时候你会遇到防火墙服务没启动的尴尬情况,这时候得先跑一行:net start sharedaccess 。如果提示失败,可能是防火墙服务被禁用了,还得去服务管理里手动开启。
坦白说,我总觉得防火墙规则比组策略灵活,但也没那么彻底。有次我帮学校机房做安全加固,明明用防火墙关了445,但用netstat -an检查时发现端口还在监听状态。后来才明白防火墙只是拦截外部访问,而组策略是直接让系统不响应端口请求。所以现在我的习惯是:两台机器先用防火墙快速处理,重要的服务器必须上组策略。
验证端口是否关闭其实很简单。最简单的办法是在本机打开cmd输入:netstat -an | find "445" 。如果啥都不返回,那就恭喜了。或者用telnet测试:telnet 127.0.0.1 445 ,如果显示无法连接就对了。不过我习惯用第三方工具比如TCPView再扫一遍,因为有时候netstat会有缓存延迟。
说到验证,有个小技巧分享下。最好从局域网其他机器扫描,比如用Advanced Port Scanner这类工具,因为有些端口本地显示关闭,但从网络层面还是可访问的。记得有次我差点被netstat骗了,本地显示445关闭,结果同事用nmap一扫还是open状态,后来发现是IPv6的445没关...
现在回头看,XP系统确实该淘汰了。但现实是很多老设备还在跑,直接升级系统反而会导致硬件不兼容。我的建议是:如果必须用XP,至少要把445、135、139这些高危端口都关了。另外最好加个第三方防火墙,比如TinyWall或者Comodo,毕竟XP自带的防火墙实在太简陋。
对了,如果你懒得手动设置,我可以分享个注册表方案:直接新建个reg文件,内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]
"SMBDeviceEnabled"=dword:00000000
导入后重启也能禁用SMB服务,不过这个有点猛,会把所有相关功能都关掉,适合彻底隔离的机器。
最后说点心得吧。安全防护从来不是单一措施就能搞定的,我现在的做法是组策略+防火墙双保险,每隔三个月还用Nessus扫一遍漏洞。毕竟啊,在安全领域,偏执狂才能活得久。虽然XP已经退场,但它的安全教训依然有用:再老的系统也得打好补丁、关好端口、定期检查。这不是技术问题,而是责任心问题。
新手如果第一次操作,建议先在测试机上练手,别直接在生产环境动刀。老鸟的话,不妨试试用脚本批量部署,比如写个bat文件自动设置组策略和防火墙,能省不少时间。毕竟保护这些老系统就像给旧房子换锁,虽然麻烦,但总不能由着贼随便进吧?


评论