美国服务器收到高危漏洞预警后,48小时该做什么?
八月的漏洞消息密度不低。比较受关注的一条是 Zimbra 协作套件的远程命令执行漏洞,CERT Polska 在月中确认它已被在野利用——攻击者无需认证即可以 zimbra 用户身份执行系统命令;而 Shadowserver 的扫描数据显示,全网仍有上万台 Zimbra 实例直接暴露在公网上。同一时间段,微软补丁日也修掉了一批被证实用于实战的提权漏洞。
上线前的加固清单我们之前写过,这里不重复。这篇想聊的是另一种处境:机器已经在跑业务,你在某个早上刷到一条高危预警,然后呢?
第一件事不是打补丁,是确认这条预警跟你有没有关系
大部分人的第一反应是登录机器准备升级。但在此之前,先花点时间回答一个更基础的问题:我到底受不受影响。
还是拿 Zimbra 举例。这个漏洞的触发条件写得相当具体:装了可选的 zimbra-snmp 包、启用了 SNMP 通知、并且 watchdog 服务在运行。三条同时满足才会中招。也就是说,同样跑着 Zimbra,有的机器需要连夜处理,有的机器可以按正常节奏走。
判断的时候有两个容易出错的地方。一是"我没装那个组件"这句话往往不太可靠——用面板部署、跑过一键脚本、或者机器是从别人手里接过来的,都很可能装了自己不知道的东西,最好实际查一遍包列表和配置项,而不是凭记忆。二是别把"暂时不满足触发条件"当成长期结论,漏洞公开之后研究者继续往下挖、把触发条件放宽的情况并不少见,所以这类机器仍然要排进升级队列,只是优先级可以靠后。
顺带说一句:如果手上没有一份现成的资产清单,这个"花点时间"会变成花大半天,一台台机器去查版本和配置。这也是文章最后要讲的事情之一。
一个经常被搞反的顺序
确认受影响之后,很多人直接就升级重启了。对内网机器来说这没问题;但如果这台是公网直连、而且漏洞已经确认在野利用,最好先停一下。
原因有两个。第一,重启会带走内存里的取证线索,日志也可能因为轮转被冲掉,等你事后想查"到底有没有被进来过",能用的材料已经少了一大半。第二,打补丁只堵住了入口,它不会删掉攻击者已经放好的 webshell、加进去的 SSH 公钥、写好的 crontab。补丁打完、机器重启,后门原封不动地跟着一起活过来——这种情况并不罕见。
所以对公网直连的关键机器,比较合理的顺序是:先做一份快照或磁盘镜像留证,再升级。快照这一步通常只要几分钟,但它决定了你后面是"能查"还是"只能猜"。
补丁打不下去的时候,止血也是有代价的
理想情况是补丁已经在了,直接升。Zimbra 这个漏洞的修复版本在预警出来之前就已经发布了一段时间——"补丁早就有、只是没人打",其实占了实际被打穿案例里的相当一部分。
但现实里总有升不动的时候:业务窗口不允许重启,或者当前版本跨度太大,升上去可能连不上数据库。这时候退而求其次,是砍掉触发条件——停掉非必需的可选模块、把相关端口从公网收回内网、给管理后台加上 IP 白名单。
需要提醒的是,这些动作都不是免费的。关掉 SNMP 通知,意味着监控从这台机器上收不到告警了;加 IP 白名单如果只配了办公室出口 IP,某天在外面处理故障就会发现自己被挡在门外;端口收回内网,跑在上面的第三方对接可能直接断掉。临时止血是为了换时间,不是替代升级,所以做之前最好把话说明白:这个状态维持到什么时候,谁负责把它恢复回去。
处理顺序上没什么悬念,先公网直连的,再负载均衡后面的,最后是纯内网互通的。同一个漏洞,暴露方式不同,风险差好几个量级。
补丁打完了,还得回头看一眼
漏洞公开之后,攻击方的扫描通常比防守方的补丁快。所以补完之后正确的心态不是"安全了",而是"我打补丁之前那段时间,有没有人已经进来过"。
翻痕迹大致是这么几个方向:
- 服务的异常重启,或者状态在 stopped 和 running 之间反复跳,往往是恶意进程被反复拉起的副产物。Zimbra 场景可以重点看 /var/log/zimbra.log。
- Web 目录和临时目录下,由服务账号在最近一段时间新建的文件。Zimbra 对应的是 /opt/zimbra/jetty/webapps/、/opt/zimbra/jetty_base/webapps/ 和 /tmp/。
- 出站连接。被控制的机器基本都会主动外连,翻一遍防火墙和流量日志里的陌生目的 IP、非常规端口。
- 新增的系统账号、SSH 公钥、crontab 条目、systemd 服务单元。
如果真查到了东西,处置路径是隔离、取证、重装,不要试图"清干净了继续用"——你不知道自己漏了什么。业务不能停的,先把流量切到备用节点,再慢慢处理这一台。
美国机房多出来的两个变量
上面这些流程放在哪个机房都成立。落到美国服务器上,有两件事值得单独说。
一是时区。漏洞预警和厂商公告大多在美东时间的工作时间发出,对应到国内基本是深夜到凌晨。如果运维只在国内白天在线,实际响应起点会比预警晚十几个小时——而这十几个小时,恰好是扫描器最活跃的窗口。可行的做法是给关键机器配好带外管理通道,深夜能直接远程处置,不必等着开工单排队;跨区域部署的团队,值班表按机房时区排,比按人所在地排更实际。
二是服务商的响应速度。有些动作必须机房侧配合——临时封端口、调整防火墙策略、重启带外、紧急回滚快照。这时候工单多久有人接,直接决定止血速度。这一项其实应该在选服务商的时候就问清楚,而不是等出事那天才知道要排几个小时。
两天之后
眼前的火灭完了,剩下的是怎么让下一次不这么狼狈。这部分不复杂,但需要有人真的去做。
最基础的是一份资产台账:每台机器跑什么服务、什么版本、开了哪些端口、谁负责。Excel 就够了,关键是有人维护,否则三个月后它和没有是一样的。然后是持续收敛暴露面,管理后台、数据库,以及 SNMP、IPMI、BMC 这类带外和监控组件——最后这几个最容易被忘在公网上。
情报源选两三个固定看就行,CISA 的 KEV 目录、厂商安全公告、CERT 通告都可以。但要清楚 KEV 是有滞后的,不少漏洞被确认在野利用时还没进目录,等它更新再动作就晚了。
最后一条建议是拿一台非核心机器,完整走一遍升级加回滚,把耗时和踩到的坑记下来。真出事的那天,你不会想第一次执行这个流程。
写在最后
漏洞本身不可怕,可怕的是补丁早就躺在那儿,而没人知道自己该打。响应速度的差距,很多时候不在技术水平,而在手上有没有清单、有没有快照、有没有一条深夜能用的带外通道。
SellBGP 的美国服务器部署在洛杉矶 CoreSite LA2、600 West 7th Street 等 Tier III+ 数据中心,提供 7×24 小时工单响应,支持定时快照与异地备份——这两样东西在紧急升级和回滚时,换来的是实打实的时间差。暴露面比较大的业务,也可以直接考虑内置多层防护的美国高防服务器。
两个常见疑问
补丁刚发布就升级,会不会踩到兼容性问题?
有可能,但这需要和被利用的风险放在一起权衡。如果漏洞已确认在野利用、且无需认证即可触发,尽快升级通常是更划算的一边。稳妥的做法是先在一台非生产机器上验证,升级前做好快照,确保出问题能在几分钟内退回去。
只有一两台机器,也需要搞资产台账吗?
一两台确实不用做表格,但要做的事情是一样的:知道上面跑了什么、版本多少、开了哪些端口。规模小的时候这些信息都在脑子里,问题是半年后你会忘,或者交接给别人的时候讲不清楚。写进一个文本文件,成本也就几分钟。