屏幕上的數據流終于恢復正常值時,劉英華在工位上仰起頭。
他揉了揉布滿血絲的眼睛,連續四十八小時緊繃的神經發出嗡鳴。
辦公室里爆發出一陣壓抑后的歡呼,幾個同事沖過來拍他的肩。
楊振國站在會議室門口,手里拿著文件夾。
他的臉上沒有笑容,只是看著劉英華。
總結會上,楊振國先用了五分鐘肯定團隊的努力。
然后他翻開文件夾,念出一段員工守則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第十二條,緊急情況下啟動非常規技術手段,需經應急領導小組組長書面授權。”
他抬起頭。
“劉英華使用了舊存儲系統的未公開后門,這個操作,我沒有給出書面授權。”
劉英華看著他。
“當時您說‘用,責任我擔’。”
“那是口頭授權。”楊振國說,“按規范,口頭授權在事件結束后二十四小時內必須補書面記錄,你沒有提交。”
他翻到下一頁。
“還有,《員工加班管理規定》第六條,連續加班超過十二小時需提前報備,超過二十四小時需部門主管特別批準。你連續工作了四十八小時,沒有走報備流程。”
劉英華的手指微微蜷縮。
“當時在救數據。”
“規矩不能破。”楊振國的聲音很穩,“對事不對人。你救了數據,功是功;你違反流程,過是過。”
他合上文件夾。
“綜合考慮,功過相抵后,按規章,對你處以三萬元罰款。罰款從下季度績效中扣除。”
會議室里死寂。
丁婉如張了張嘴,沒發出聲音。
肖承運皺起眉,看向楊振國。
楊振國沒看他,只是看著劉英華。
“你有什么要說的嗎?”
然后他低下頭,肩膀微微顫動。
發出了一聲很輕的笑。