主机高危漏洞怎么处理
去年冬天凌晨两点,主机我接到运维老张的高危电话。他声音发紧:“一台对外服务器被提权了,漏洞对方留了后门,处理估计是主机那个刚爆的RCE漏洞。”我让他先别关机,高危直接拔网线、漏洞断掉所有外联。处理这个动作救了他——如果当时他选择重启,主机内存里的高危攻击痕迹和加密密钥可能就全没了。
主机高危漏洞处理,漏洞第一原则不是处理修,而是主机控。漏洞本身不会造成损失,高危被利用才会。漏洞所以发现高危漏洞(比如CVSS 9.8以上、能被远程无交互利用的那种)后,先问自己:这台机器现在还能不能对外提供服务?如果不能立刻打补丁,就先用防火墙规则把攻击面掐死。Web服务只放行必要端口,SSH只允许跳板机IP,数据库别监听0.0.0.0。这些动作比急着登上去打补丁更管用。
你可能会想:那我直接打补丁不就行了?问题在于,很多高危漏洞从爆出到武器化不到24小时。去年Log4j那个洞,周六凌晨公开,周日早上就有扫描器满互联网跑。你等周一上班再走变更流程,黄花菜都凉了。所以我的习惯是:高危漏洞公告一出来,先判断两件事——我的资产里有没有这个组件?有的话,能不能在半小时内通过配置或网络策略临时缓解?能就立刻做,不能就准备紧急变更。
说个具体的。有一次某中间件爆了反序列化漏洞,官方补丁要重启服务,而那个服务承载着实时订单。重启十分钟损失几十万。我们最后没打补丁,而是在WAF上加了一条规则,拦截所有带特定序列化头部的请求。同时把该服务的出站流量全禁了,防止被反连。撑了三天,等业务低峰期才重启修复。这不是偷懒,是权衡。高危漏洞处理从来不是纯技术问题,是风险、成本、时间的三角博弈。
补丁打完之后呢?很多人就到此为止了。但真正的处理从这时候才开始。你要做三件事:查日志、找痕迹、改密码。查什么日志?Web访问日志里有没有异常的POST请求,系统日志里有没有新用户被创建,cron有没有被加奇怪的任务。有一次我帮朋友看一台被挖矿的机器,补丁打了,矿也杀了,但三天后又中招。原因是他没改SSH密钥,攻击者第一次入侵时往authorized_keys里塞了自己的公钥。你补丁只补了入口,后门还在。
还有一点,别迷信扫描器。扫描器能告诉你“这个版本有漏洞”,但告诉不了你“这个漏洞在当前配置下能不能被利用”。比如一个反序列化漏洞,如果你的服务前面有反向代理做了协议剥离,实际打不进来。反过来,有些漏洞扫描器扫不出来,但攻击者手动构造请求就能打穿。所以高危漏洞的最终确认,得靠人去看代码、看配置、看网络路径。工具只是辅助。
最后说个血的教训。某次一个高危漏洞,我们按流程打了补丁、重启了服务、改了密码,觉得万事大吉。两周后收到云厂商的告警,说那台主机在往外发DDoS流量。查了半天发现,攻击者第一次入侵时留了一个内核模块级别的rootkit,补丁和重启都没清掉。最后只能重装系统。所以高危漏洞处理,如果确认已经被利用过,最干净的做法是:备份数据,重装,别修。修的成本往往比重装高,而且你永远不知道对方留了几层后门。
处理高危漏洞,心态上要当急诊医生,不是修理工。先止血,再检查,最后才考虑怎么修得漂亮。顺序错了,修得再漂亮也是白搭。
(责任编辑:焦点)
