屏幕上的数据流终于恢复正常值时,刘英华在工位上仰起头。
他揉了揉布满血丝的眼睛,连续四十八小时紧绷的神经发出嗡鸣。
办公室里爆发出一阵压抑后的欢呼,几个同事冲过来拍他的肩。
杨振国站在会议室门口,手里拿着文件夹。
他的脸上没有笑容,只是看着刘英华。
总结会上,杨振国先用了五分钟肯定团队的努力。
然后他翻开文件夹,念出一段员工守则03第七条。
“未按规定流程提前报备超时加班,处以相应罚款。”
他看向刘英华:“三万。规矩不能破,对事不对人。”
所有人都愣住了。
刘英华沉默了几秒。
然后他低下头,肩膀微微颤动,发出了一声很轻的笑。
那笑声里听不出愤怒,也听不出嘲讽。
只是轻轻地,像风吹过纸页。
![]()
01
凌晨三点二十七分,服务器监控平台的警报灯突然红了。
不是闪烁,是持续的红。
刘英华从行军床上坐起来时,手机还在震。
他昨晚十一点处理完一个边缘系统的兼容性问题,索性没回家。
办公室里只有应急灯微弱的光,还有服务器机房传来的持续低鸣。
他光着脚走到工位前,屏幕上的曲线已经跳成了一个陡坡。
数据库读写异常,索引混乱,三号存储节点的响应时间超过警戒值三倍。
这不是普通故障。
刘英华没有去碰桌上的内线电话。
他直接登录了核心运维终端,手指在键盘上敲出一串命令。
日志像瀑布一样滚下来。
他的眼睛迅速扫描着那些代码和时戳,瞳孔在屏幕蓝光里微微收缩。
找到了。
一个冷备份同步进程卡死了,连锁反应拖垮了三个关联服务。
问题不大,但如果不立刻处理,早高峰的业务流量冲进来时,整个订单系统会崩溃。
他用了十七分钟。
十七分钟后,曲线回落,警报灯熄灭。
刘英华向后靠进椅背,长长吐了口气。
窗外的天色还是深黑,远处有几栋楼的轮廓亮着零星的灯。
他起身去茶水间冲咖啡。
热水灌进杯子里,白色的雾气升起来。
走廊里传来脚步声,很稳,带着某种节奏。
杨振国出现在茶水间门口。
他穿着熨烫平整的衬衫,手里提着公文包,头发梳得一丝不苟。
“这么早?”刘英华举了举杯子。
“习惯。”杨振国的目光扫过他光着的脚,又看向他工位边卷着的行军毯,“昨晚又没回去?”
“处理点问题。”
“什么级别的问题需要通宵?”
“三级存储异常,可能影响早高峰。”
“按规定,夜间值班期间发现三级及以上异常,必须立即上报值班主管并填写事件报告。”
杨振国的声音不高,但每个字都像量过,“你报了吗?”
刘英华端着咖啡的手顿了顿。
“问题已经解决了。”
“我问的是流程。”杨振国从包里拿出一个黑色的笔记本,翻开,用钢笔写了什么,“这次不处罚,记录在案。下不为例。”
他合上本子,走向自己的独立办公室。
门轻轻关上。
刘英华站在原地,看着那扇门。
咖啡的热气扑在脸上,有点烫。
他走回工位,穿上袜子,把行军毯塞进柜子。
屏幕上是恢复正常的数据监控界面,绿色的曲线平稳地延伸。
他关掉页面,打开公司内网,找到《网络安全部事件上报流程规范》。
PDF文件,三十七页。
他拖动鼠标滚轮,页面哗啦啦地往下滑。
02
周二上午九点,部门周会。
杨振国坐在长桌尽头,面前摊着笔记本和笔。
他先通报了上周的安全事件统计,数字比前一周下降了两个百分点。
“这是好事。”他说,“但隐患依然存在。”
他的目光在会议室里扫了一圈,最后落在刘英华身上。
刘英华正看着窗外的树,手指在桌沿无意识地敲着。
“有些同事,技术能力强,责任心也强。”杨振国的声音平稳,“这是优点。”
他停顿了一下。
会议室里很安静,只能听见空调出风口的嗡嗡声。
“但个人英雄主义要不得。”杨振国继续说,“尤其是我们部门,流程就是生命线。你跳过流程,哪怕解决了问题,也是在破坏整个防御体系。”
丁婉如坐在刘英华斜对面,悄悄抬眼看他。
刘英华的侧脸没什么表情,手指停住了敲击。
“今天早上,我就发现一起未按规定上报的事件。”杨振国翻开黑色笔记本,“凌晨三点到四点之间,三级存储异常,有人私自处理了。”
几个同事互相看了看。
“这次没有造成损失,所以只做记录。”杨振国合上本子,“但我必须强调,规矩定下来,就是让人遵守的。‘对事不对人’是我的原则,不管谁,违反了就要承担后果。”
刘英华转回头,看向杨振国。
他的眼睛里有血丝,是昨晚没睡好的痕迹。
“杨主管。”他开口,“如果当时按流程走,先打电话给值班主管,等他起床,查看情况,再决定是否启动应急小组——那时候早高峰已经开始了,订单系统可能已经瘫痪了。”
“可能。”杨振国重复这个词,“但你无法证明一定会瘫痪。而你不报备就处理,是确定违反了规定。”
他拿起笔,在笔记本上又记了一笔。
“风险评估和流程遵守,比事后补救更重要。”他说,“这个道理,我希望每个人都记住。”
会议在九点四十五分结束。
大家陆续起身往外走,椅子腿摩擦地板发出刺耳的声音。
丁婉如跟在刘英华身后,小声说:“刘哥,其实我们都知道,昨晚多亏了你……”
“按流程来。”刘英华打断她,语气很平淡,“主管说得对。”
他走进办公室,坐到工位前。
屏幕亮起来,是密密麻麻的代码和监控窗口。
他盯着看了一会儿,然后最小化了所有工作界面。
打开公司内部知识库,搜索“事件上报流程”。
弹出的链接有十三个。
他一个一个点开,开始看。
![]()
03
下午两点多,丁婉如拿着一个U盘过来。
她来部门三个月,还在学习期。
“刘哥,能帮我看看这个脚本吗?”她把U盘放在刘英华桌上,“自动巡检的,老报错,我查了两天手册也没找到原因。”
刘英华接过U盘,插进电脑。
代码打开,他滚动鼠标看了大约一分钟。
“这里。”他指着一行,“变量类型不匹配,手册07第三节有例子。”
“可是手册上说这种场景应该用动态解析……”
“手册是基础。”刘英华把U盘拔下来还给她,“但实际情况里,这个接口返回的数据类型不稳定,你得做类型校验和转换。”
丁婉如似懂非懂地点头。
“那……具体怎么改呢?”
刘英华张了张嘴,话到嘴边又停住了。
他看向杨振国办公室的方向。
门关着,但百叶窗的缝隙里能看见人影在动。
“你先回去把手册07仔细看一遍。”刘英华转回屏幕,“按手册的标准写法先试,如果还不行,就按流程提技术支援单。”
丁婉如愣了愣。
“提单?那不是要走两三天流程吗?这个巡检明天就要用……”
“那就更说明你该早点看手册。”刘英华的声音没什么起伏,“流程之所以存在,就是避免临时抱佛脚。”
丁婉如咬了咬嘴唇,拿起U盘走了。
刘英华继续盯着屏幕。
他面前的窗口里,是实时监控的系统健康度仪表盘。
有一个指标,磁盘阵列的预失效报警计数,在过去一周里缓慢爬升。
数字很小,从0.01%到0.03%。
普通人不会注意,但刘英华知道那意味着什么。
那是公司用了七年的老存储系统,架构陈旧,文档不全。
三年前就该升级换代,但预算一直没批下来。
现在,它开始发出细微的呻吟。
刘英华点开详细日志,拉出最近一个月的错误记录。
模式很隐蔽,但确实存在。
他截了几张图,整理成一份简短的观察报告。
然后他打开邮件客户端。
收件人输入“杨振国”,主题写“关于旧存储系统潜在风险的初步观察”。
邮件正文里,他客观描述了现象,附上截图,并在最后写:“建议启动深度排查,必要时准备应急迁移方案。”
点击发送。
邮件显示送达。
刘英华关掉窗口,继续处理手头的日常告警。
十五分钟后,新邮件提示音响起。
杨振国的回复。
“收到。请先按规范填写《系统风险评估申请表》,附详细技术分析及影响范围评估,提交部门审批后,我会酌情上报。”
附件里是一份表格模板。
刘英华点开。
表格有八页,包括但不限于:问题描述、历史数据、可能成因分析、影响业务范围、排查方案、所需资源、时间预估、备用方案、成本估算……
最后一项是“申请人承诺”,需要手写签名。
刘英华拉动滚动条,看完最后一页。
他靠在椅子上,闭上眼睛。
窗外传来隐约的汽车鸣笛声,很远。
04
表格刘英华花了三个小时填写。
不是因为内容复杂,而是因为每一个数据都要有出处。
预失效报警计数需要从监控系统导出原始日志,按时间轴排列,计算出现频率。
可能成因分析需要查阅七年前的系统部署文档,对比硬件型号的常见故障模式。
影响业务范围需要列出所有依赖该存储的二十七个服务和模块,并评估每个服务的SLA等级。
备用方案需要联系供应商询问替代设备的供货周期和报价。
成本估算需要财务部的模板,区分人力成本和硬件成本。
刘英华做完这些,把八页表格打印出来。
纸还是温的。
他拿着表格走到杨振国办公室门口,敲了门。
“进。”
杨振国正在看一份报告,抬头看见他手里的文件。
“填好了?放这儿吧。”
刘英华把表格放在办公桌角落。
“杨主管,这个风险不是理论上的。”他说,“错误模式有加速趋势,最近三天出现的频率是前一周的两倍。”
“所以更需要严谨评估。”杨振国拿起表格,快速翻了几页,“你这里写,建议三天内启动排查?”
“最好明天就开始。”
“明天?”杨振国放下表格,“排查需要抽调两名高级工程师,至少三天工作量,这会影响现有项目进度。我需要和项目组协调,还要报给肖总批。”
他看了眼日历。
“这周五之前我会处理这份申请。”
“周五可能就晚了。”
“风险评估本身就是预防晚。”杨振国看着他,“如果人人都觉得自己的事最紧急,流程就形同虚设。”
刘英华没再说话。
他走出办公室,带上门。
走廊里空荡荡的,天花板上的灯管发出轻微的电流声。
回到工位,他打开监控页面。
预失效计数跳了一下,从0.03%变成0.04%。
他盯着那个数字看了很久。
然后他打开个人工作日志,新建一条记录。
时间,现象,已采取行动,上级反馈。
保存。
丁婉如从旁边经过,看见他屏幕上的曲线。
“刘哥,这个是不是……”
“等审批。”刘英华关掉页面。
丁婉如欲言又止,最后还是走开了。
下班时间到了,同事们陆续收拾东西离开。
刘英华没动。
他坐在那里,看着窗外天色一点点暗下去。
城市的灯光亮起来,一片一片的,像倒过来的星空。
七点十分,杨振国从办公室出来,手里提着公文包。
他看见刘英华还在,点了点头。
“早点回去休息。”
“好。”
杨振国走了,脚步声消失在走廊尽头。
刘英华重新打开监控页面。
数字还在,0.04%。
他调出实时流量图,业务高峰期已经过去,曲线平缓下滑。
一切看起来都很正常。
![]()
05
周五上午,刘英华刚到公司,就看见杨振国站在他工位旁。
表格拿在手里。
“申请我看了。”杨振国说,“有几个地方需要补充。”
“您说。”
“影响范围这里,你只写了技术层面。需要加上业务层面的预估损失,最好有财务部提供的参考数据。”
“财务部出数据要走跨部门流程,至少一周。”
“那就等。”杨振国把表格递还给他,“还有,备用方案你只考虑了硬件替换,有没有软件层面的临时方案?比如数据迁移到备用存储?”
“那套备用存储性能只有三分之一,迁移过去,二十七个服务至少有一半会超时。”
“超时具体是多少?有没有量化?”
刘英华吸了口气。
“我需要时间算。”
“那就算清楚再交上来。”杨振国看了眼手表,“下午我有会,明天给我。”
他转身要走,又停下。
“对了,肖总下周出差回来,到时候我会把完整的申请报给他。”
刘英华看着手里的表格。
第八页的“申请人承诺”栏还空着。
他拿起笔,在横线上签了自己的名字。
字迹很工整。
整个上午他都在补充材料。
业务损失预估需要联系产品经理要数据,软件方案需要搭建测试环境模拟。
丁婉如过来问一个防火墙配置问题,看见他屏幕上密密麻麻的文档。
“刘哥,你还在弄那个申请啊?”
“嗯。”
“其实……我昨天听到运维组的人在说,旧存储那边偶尔会有IO卡顿,但重启就好了。”
刘英华抬起头。
“谁说的?具体什么时候?”
“好像是前天夜里,张哥值班时候遇到的,他没报事件,因为重启后监控没告警。”
刘英华立刻调出前天的系统日志。
深夜两点到三点之间,存储控制器确实有一次自动重启记录。
但健康检查报告里,这次重启被标记为“计划内维护”。
“计划内?”刘英华皱眉,“谁计划的?”
他点开维护日志,发现一条自动生成的记录:“系统检测到临时性能降级,触发自愈流程。”
不是人为操作的。
是系统自己觉得不行了,重启了。
他截下这条记录,补充到申请表格的“历史数据”部分。
然后继续算迁移方案的超时数据。
下午三点,邮件提示音密集地响起来。
不是一台电脑,是整个办公室。
所有人都抬起头。
刘英华点开最新告警。
核心数据库响应时间飙升,五百毫秒,八百毫秒,一千二百毫秒。
业务系统的错误日志像雪崩一样滚出来。
客服部的电话开始响,一声接一声。
丁婉如站起来,脸色发白。
“怎么了?”
刘英华没回答。
他直接登录了数据库管理终端,连接,被拒绝。
再试,还是拒绝。
权限错误。
他换了一个更高权限的账户,强行登录进去。
眼前的画面让他的手指僵在键盘上。
数据表在被批量删除。
不是误操作,是标准的删除语句,一条接一条,带着条件筛选。
有人在有选择地清空数据。
同时,另一个进程在加密备份文件,加密密钥是随机生成的,没有记录。
勒索。
刘英华抓起桌上的内线电话,拨给机房值班室。
占线。
他拨杨振国的手机。
响了六声,接通。
“主管,旧存储系统被入侵了,正在删数据和加密备份,需要立刻物理断网。”
电话那边沉默了两秒。
“确定是旧存储系统?不是其他?”
“确定,攻击入口就是那个预失效报警相关的漏洞,我申请里写过。”
“……应急预案启动了吗?”
“还没有,需要您授权。”
“按流程走,先发全员通报,再启动三级应急响应,我马上回来。”
电话挂断了。
刘英华放下话筒,看着屏幕上还在滚动的删除日志。
他手指动了动,敲下一条强制终止进程的命令。
系统提示:权限不足。
需要应急领导小组组长授权,也就是杨振国。
或者,CTO肖承运。
他找出肖承运的紧急联系号码,拨过去。
关机。
可能在飞机上。
办公室里的电话铃声已经响成一片,同事们在接听,声音急促。
“是,我们正在排查……”
“请稍等,有消息会第一时间通知……”
“具体影响范围还在评估……”
刘英华坐回椅子,打开那份还没提交的申请表格。
最后一页,他的签名清晰可见。
他把表格窗口拖到一边,打开另一个终端。
开始手动抓取还在流动的数据。
能救多少是多少。
06
杨振国冲进办公室时,脸色铁青。
他直接走到刘英华工位旁。
“情况怎么样?”
“删了百分之三十的用户资料表,备份文件加密了百分之七十。”刘英华没抬头,“攻击还在继续,我需要权限终止进程。”
“给。”杨振国拿出自己的身份卡,“用我的权限。”
刘英华刷卡登录,重新输入终止命令。
这一次,进程停了。
但数据已经没了,加密还在继续。
“能恢复吗?”杨振国问。
“被删的难,加密的可以试。”刘英华调出日志,“攻击者留了勒索信息,要五百万美元,七十二小时。”
“报警了吗?”
“按流程,需要您决定。”
“报。”杨振国掏出手机,走到窗边打电话。
办公室里乱成一团,电话铃声、键盘敲击声、急促的对话声混在一起。
丁婉如小跑过来。
“刘哥,客服部说投诉电话打爆了,问我们什么时候能恢复。”
“不知道。”
刘英华盯着屏幕,手指飞快地敲打。
他在尝试逆向加密算法,但密钥是随机生成且在攻击后自毁了。
只能从内存残留里找线索。
杨振国打完电话回来。
“警方一小时内到,肖总正在赶回来的路上。”他看向刘英华,“现在最重要的是止损,你有方案吗?”
“两个方向。”刘英华拉出两张图,“第一,尝试恢复被删数据,需要从磁盘底层扫描残留;第二,破解加密,需要算力支持。”
“需要什么资源?”
“四台高性能服务器,至少四十八小时连续运算,还需要存储厂商的底层工具支持。”
“工具怎么弄?”
“厂商的技术支持需要合同号和服务码,走加急通道也要两小时。”
“太慢。”杨振国皱眉,“有没有别的办法?”
“有。旧存储系统用的是七年前的老架构,当时有一个未公开的管理后门,可以用来直接读写磁盘扇区。”
“后门?安全吗?”
“不安全,但快。”
“用。”杨振国拍板,“责任我担。”
刘英华看了他一眼。
然后他调出一个命令行窗口,输入一串复杂的长指令。
屏幕黑了,然后跳出一行行白色的代码。
底层访问开启了。
他小心地定位被删除数据所在的磁盘区域,开始尝试恢复。
进度条缓慢移动,百分之二,百分之三。
时间一分一秒过去。
窗外天色暗了又亮。
警方来了又走,取证,记录。
肖承运半夜赶到公司,在会议室里和杨振国谈了半个小时。
出来时,他的脸色也很难看。
他走到刘英华身后,拍了拍他的肩。
“英华,尽力就好。”
刘英华点头,眼睛没离开屏幕。
他已经连续工作了十八个小时。
丁婉如买了咖啡和面包放在他桌上,凉了又热,热了又凉。
他喝了一口咖啡,继续敲键盘。
恢复数据比预想的难。
删除操作很彻底,而且攻击者在删除后还往磁盘里写入了随机数据,覆盖了一部分区域。
刘英华只能一块一块地抢救。
第二天的中午,他恢复了百分之十五的数据。
加密破解那边进展更慢,试了上百种可能,都失败了。
杨振国在办公室和会议室之间来回跑,接电话,解释,承诺。
他的声音从最初的镇定,渐渐透出疲惫。
第三天凌晨,刘英华找到了突破口。
在加密进程的内存转储里,他发现了一个伪随机数生成器的种子残留。
很隐蔽,但他认出来了。
那是旧存储系统的一个硬件特征码,理论上每次启动都会变。
但攻击者可能复用了。
他立刻用这个种子尝试解密一小段数据。
成功了。
屏幕上的乱码变成了可读的用户信息。
他站起来,腿麻了,差点摔倒。
扶住桌子,他喊:“找到了!”
办公室里昏昏欲睡的几个人都惊醒了。
杨振国从沙发上站起来,快步走过来。
“能全部解开?”
“需要时间,但方向对了。”
刘英华坐回去,开始写批量解密脚本。
他的手指在颤抖,不知道是累的,还是别的什么。
窗外的天边泛起鱼肚白。
第四十八个小时,最后一个加密文件被解开。
核心数据库的备份完整恢复,包括用户资料、订单记录、交易流水。
估值八亿的数据,保住了。
刘英华靠在椅背上,闭上眼睛。
办公室里响起掌声,稀稀拉拉的,但持续了很久。
丁婉如哭了,用手背擦眼睛。
杨振国长长地吐了口气,拿起手机,走到走廊去打电话。
刘英华坐在那里,听着自己的心跳。
咚,咚,咚。
很慢,很沉。
![]()
07
总结会在第三天下午召开。
所有人都到了,包括CTO肖承运。
会议室里很安静,能听见空调的风声。
杨振国先做了事件复盘。
从攻击入口到响应时间,从数据损失到恢复过程,他讲得很详细。
最后,他看向刘英华。
“这次危机能够化解,刘英华同志发挥了关键作用。”他说,“技术能力、责任心、临场应变,都值得肯定。”
肖承运带头鼓掌。
掌声比之前热烈得多。
刘英华坐在那里,脸上没什么表情。
他的眼睛还是红的,血丝没退。
杨振国等掌声平息,翻开面前的文件夹。
“但是。”他说。
会议室里的空气凝了一下。
“在应急响应过程中,我们也要看到问题。”杨振国念着文件上的字,“根据《网络安全事件应急处置规范》04第十二条,紧急情况下启动非常规技术手段,需经应急领导小组组长书面授权。”
他抬起头。
“刘英华使用了旧存储系统的未公开后门,这个操作,我没有给出书面授权。”
刘英华看着他。
“当时您说‘用,责任我担’。”
“那是口头授权。”杨振国说,“按规范,口头授权在事件结束后二十四小时内必须补书面记录,你没有提交。”
他翻到下一页。
“还有,《员工加班管理规定》第六条,连续加班超过十二小时需提前报备,超过二十四小时需部门主管特别批准。你连续工作了四十八小时,没有走报备流程。”
刘英华的手指微微蜷缩。
“当时在救数据。”
“规矩不能破。”杨振国的声音很稳,“对事不对人。你救了数据,功是功;你违反流程,过是过。”
他合上文件夹。
“综合考虑,功过相抵后,按规章,对你处以三万元罚款。罚款从下季度绩效中扣除。”
会议室里死寂。
丁婉如张了张嘴,没发出声音。
肖承运皱起眉,看向杨振国。
杨振国没看他,只是看着刘英华。
“你有什么要说的吗?”
然后他低下头,肩膀微微颤动。
发出了一声很轻的笑。