前年有一家做线上教育平台的公司找到我,说他们的后台数据库每隔一段时间就会莫名其妙地丢失一批新产生的用户注册数据。每次丢失的数据量不大,大概几百条,而且都是在凌晨一两点之间发生的。数据库没有出现异常错误日志,安全扫描也没发现病毒,防火墙日志看起来一切正常。公司的技术总监百思不得其解,甚至怀疑是不是数据库本身有Bug。
我带着团队去现场做了一次全面的安全排查。登录他们那台部署在内网的数据库服务器之后,并没有发现明显的异常。但在检查系统定时任务的时候,问题浮出了水面。服务器上有一个不起眼的定时脚本,每天凌晨两点悄悄执行一次,功能是筛选出当天新增的用户注册信息,打包加密后通过一个隐蔽的网络连接发送到一个外部IP地址。而创建这个定时任务的人,正是半年前离职的运维主管张某某。
张某某在这家公司做了三年多的运维,公司所有的服务器、数据库、网络设备的账号密码他全部掌握。他离职前和公司闹得不太愉快,原因是对年终奖的分配不满,觉得公司亏待了他。离职交接时他表面上配合,把系统账号密码都交给了接替的人,但公司的技术负责人没有核对他的操作日志,也没有更换核心系统的管理员密码。
他留下的后门程序写得相当隐蔽。程序被伪装成一个系统日志清理脚本,文件名和正常的系统文件名非常相似,如果不仔细看根本发现不了。定时任务的触发时间选在了凌晨所有人都不在线的时候,数据传输通过一个正常的HTTPS端口出去,在防火墙上看跟普通的网页访问请求一模一样。他离职后大半年,这个脚本一直稳定运行,累计窃取了超过两万条用户数据,包括注册手机号、账号密码的加密哈希值和学习记录等信息。
从风险分析的角度来看,这个案例暴露出企业在员工离职交接中的一个严重漏洞。很多企业认为离职交接就是交还电脑、退回工牌、签个字走人,很少有人会想到要去彻底更换核心系统的管理员密码。但实际上,一个心怀不满的运维人员在离职之前有很多种方法可以给自己留后路。他可能已经创建了隐藏账号,可能已经设置了一个只有自己知道的远程访问通道,可能已经在某个不起眼的脚本里加入了后门。如果公司不彻底重置密码、不全面审计系统,这些后门就可以长期潜伏下去。
这个案例给所有有技术团队的企业提了一个醒。核心系统管理员的离职流程应该跟普通员工完全不同,它需要包含几个标准动作。第一步是在通知当事人离职之前,就提前把超级管理员权限转移到其他可信人员身上,避免当事人在得知自己被离职后利用剩余的操作权限做手脚。第二步是全面更换核心系统的管理员密码,包括服务器Root密码、数据库管理员密码、路由器交换机管理密码、云服务商的主账号密码,确保离职人员掌握的密码全部失效。第三步是对系统进行全面审计,重点检查定时任务、计划任务、隐藏账号、异常端口监听和非常规的网络连接,发现可疑脚本立刻隔离分析。第四步是持续监控一段时间,看看系统中是否还存在之前没发现的远程控制通道。这四步说起来不算复杂,但执行起来需要制度保障和责任心。数据安全工作中的很多风险往往不是技术多难防,而是管理上少了关键的几个动作。






