凌晨两点半,手机突然像疯了一样震动。不是闹钟,是十几个运维监控群同时炸了。我揉着眼睛从行军床上爬起来,屏幕的冷光刺得人发晕。WannaCry。勒索病毒。全球爆发。高校内网瘫痪,加油站系统停摆,比特币赎金。
操。
我脑子里嗡的一声,不是为那些新闻里的机构,是为我自己那几十台刚部署完的VPS。过去三个月,我像蚂蚁搬家一样,在五六个云服务商那里攒出了一个站群。每个VPS都塞满了爬虫脚本、内容聚合器和刚有点起色的SEO页面。那是Q2全部的希望,是流量闭环的雏形。如果它们全被一锅端……我甚至不敢想那个画面。
手指已经比脑子先动了。SSH客户端一个个窗口弹开,黑色的背景,绿色的字符。深夜的出租屋里,只有键盘敲击声,清脆,密集,带着一种孤注一掷的节奏。我先停了所有爬虫任务,然后开始写那个临时的批量扫描脚本。
永恒之蓝漏洞。445端口。SMBv1协议。这些名词在眼前跳动。技术细节在恐慌里反而异常清晰:微软其实早就发了补丁,MS17-010。但我的这些机器,为了追求极致的纯净和性能,很多都用了老版本的系统镜像,自动更新?根本没开。追求效率的代价,此刻变成了悬在头顶的刀。
脚本的核心逻辑很简单,但写的时候手有点抖。先用nmap快速扫描所有IP的445端口状态,列出开放列表。然后通过Ansible,对开放了445的机器,第一时间用iptables封掉端口。这是紧急止血。接着,更冒险的一步:从本地仓库分发MS17-010的独立补丁包,强制安装,然后重启。
风险在于,批量重启本身就可能引发问题。有些爬虫脚本的状态会丢失,有些服务可能起不来。但比起被加密锁死,这代价微不足道。
等待第一批十台机器返回结果的那几分钟,我盯着屏幕,能听见自己心跳。屋里没开空调,后背却一阵阵发凉。32岁了,还像个救火队员一样,在深夜里赌上全部家当。这就是“野蛮生长”的真相吗?没有团队,没有备份预案,所有风险都压在自己一个人的神经上。
第一台返回了。“Port 445 filtered. Patch applied.” 我长出了一口气,但这口气只松了一半。还有四十多台。
一台,又一台。脚本输出的绿色“OK”字样,在黑色背景上连成一片,像救命的信号弹。窗外的天色,从浓黑慢慢变成深蓝。我灌下今晚第三罐红牛,喉咙里泛起一股铁锈般的甜腻。
当最后一台机器也报告补丁安装成功时,已经是早上六点多。手指因为长时间保持一个姿势而有些僵硬。我瘫在椅子上,看着逐渐亮起来的天空。
这次是侥幸。下一次呢?
我意识到,过去半年我沉迷于“规模化”的幻梦。堆机器,堆内容,堆外链,以为这就是业务的全部。但WannaCry这一夜,像一盆冰水浇下来。规模每扩大一分,你暴露的攻击面就大一圈。你享受了集中管理、批量部署的效率红利,就必然要承受可能被“团灭”的系统性风险。安全不是成本,是操盘手的命门。那些枯燥的漏洞扫描、权限管理、备份策略,才是真正托住你野心的底盘。
天彻底亮了。我保存好今晚写的所有应急脚本,给它们建了一个新的文件夹,命名为“20170512_幸存日”。然后,我给所有VPS的定时任务加了一条:每周自动检查系统更新。
该睡会儿了。但我知道,有些课,必须连夜补上。














