網(wǎng)失控全過程復(fù)盤:智能體框架引發(fā)的安全事件與加固方案)
2. 這次事故到底是怎么爆的一次典型的內(nèi)網(wǎng)失控全過程先交代一下背景。我們是一家做企業(yè)服務(wù)的公司研發(fā)、測(cè)試、運(yùn)營(yíng)加起來一百多人內(nèi)網(wǎng)環(huán)境屬于典型的“比上不足比下有余”——有基礎(chǔ)的防火墻、有核心交換機(jī)但離嚴(yán)格的分區(qū)隔離和全量審計(jì)還差得遠(yuǎn)。這種環(huán)境平時(shí)夠用一旦有人“硬上”某個(gè)不成熟的工具就會(huì)瞬間露出所有短板。事情的起因非常樸素。老板不知道從哪看到一個(gè)開源的智能體編排框架名字就不點(diǎn)了反正就是那種可以對(duì)接內(nèi)部系統(tǒng)、自動(dòng)處理工單、跑審批流程的東西。他覺得這東西能幫我們解決跨部門協(xié)作效率低的問題于是讓運(yùn)維直接在辦公網(wǎng)段部署了一套連通了內(nèi)部的知識(shí)庫(kù)、工單系統(tǒng)和一部分測(cè)試環(huán)境的數(shù)據(jù)庫(kù)。前后不到半天問題就來了。2.1 第一波癥狀網(wǎng)絡(luò)延遲飆升辦公網(wǎng)段直接卡死最先感知到異常的是行政和財(cái)務(wù)的同事。平時(shí)打開OA系統(tǒng)、收發(fā)郵件都很流暢那天下午突然開始轉(zhuǎn)圈刷新頁(yè)面要等十幾秒視頻會(huì)議直接沒法開。緊接著運(yùn)維后臺(tái)的監(jiān)控圖表開始報(bào)警內(nèi)網(wǎng)核心交換機(jī)的入向流量從平時(shí)的幾百兆跳到了接近帶寬上限CPU占用率長(zhǎng)時(shí)間維持在90%以上。我當(dāng)時(shí)的第一個(gè)反應(yīng)是“有設(shè)備被攻破了正在被利用往外發(fā)包”。因?yàn)檫@種流量特征太典型了——不是瞬時(shí)突刺而是持續(xù)占滿帶寬像是有什么程序在不停地上傳或下載數(shù)據(jù)。但奇怪的是防火墻上的外聯(lián)記錄并沒有顯示大規(guī)模的外部連接流量似乎都集中在內(nèi)網(wǎng)網(wǎng)段之間。這一下問題就變得棘手了。如果只是外部攻擊封掉外聯(lián)端口就能止血但如果是內(nèi)網(wǎng)自己跑的程序在互相通信那就要找出通信源頭。2.2 第一次排查以為是中毒其實(shí)是智能體在“沸騰”我先在核心交換機(jī)上做了流量采樣用端口鏡像把流量導(dǎo)到分析機(jī)上然后按源IP排序。結(jié)果讓我很意外——流量大頭來自老板部署那套智能體工具的服務(wù)器而且它和辦公網(wǎng)內(nèi)的幾十臺(tái)終端都在建立連接。換句話說這臺(tái)服務(wù)器正在瘋狂地“呼叫”內(nèi)網(wǎng)里的每一臺(tái)機(jī)器。進(jìn)一步看連接狀態(tài)發(fā)現(xiàn)它是在嘗試調(diào)用各臺(tái)機(jī)器上開放的接口和端口。正常情況下智能體應(yīng)該通過提前配置好的接口列表去對(duì)接指定系統(tǒng)但這個(gè)框架默認(rèn)開啟了網(wǎng)絡(luò)探測(cè)能力會(huì)把內(nèi)網(wǎng)網(wǎng)段里所有可達(dá)的IP都掃一遍然后自動(dòng)識(shí)別開放的服務(wù)端口嘗試?yán)斫夂驼{(diào)通。這本來是一個(gè)方便自動(dòng)化的功能但部署時(shí)沒有做任何網(wǎng)絡(luò)邊界配置它就把整個(gè)辦公網(wǎng)當(dāng)成了自己的“操作范圍”。這就是為什么會(huì)卡死它不是在做一件惡意的事情但它做的事和惡意掃描沒什么區(qū)別——對(duì)整個(gè)網(wǎng)段發(fā)起大量并發(fā)探測(cè)每個(gè)探測(cè)都要經(jīng)過交換機(jī)轉(zhuǎn)發(fā)短時(shí)間內(nèi)生成了海量的會(huì)話記錄直接把交換機(jī)的轉(zhuǎn)發(fā)能力拖垮了。2.3 我最初踩的坑先重啟設(shè)備差點(diǎn)把證據(jù)弄沒了說到這里我必須坦白一個(gè)教訓(xùn)。當(dāng)時(shí)我第一反應(yīng)是重啟核心交換機(jī)想著先把業(yè)務(wù)恢復(fù)再說。還好同事拉住了我——重啟交換機(jī)意味著所有內(nèi)存里的會(huì)話記錄、轉(zhuǎn)發(fā)緩存、端口狀態(tài)全部清空如果這臺(tái)服務(wù)器真的有問題重啟之后我們就很難再還原它到底訪問過哪些機(jī)器。正確的做法是先切斷故障源頭而不是重啟基礎(chǔ)設(shè)施。我們把那臺(tái)智能體服務(wù)器直接從交換機(jī)上拔線隔離然后立刻對(duì)它的磁盤做只讀鏡像保留系統(tǒng)日志、進(jìn)程內(nèi)存轉(zhuǎn)儲(chǔ)和應(yīng)用配置文件。這些證據(jù)在后來的復(fù)盤和加固中起到了關(guān)鍵作用如果重啟了交換機(jī)很多信息就永遠(yuǎn)找不回來了。2.4 隔離之后事情并沒有結(jié)束數(shù)據(jù)還在悄悄往外傳把服務(wù)器隔離之后辦公網(wǎng)的流量恢復(fù)正常了。但我心里不踏實(shí)又去看了一眼防火墻的會(huì)話日志。這一看發(fā)現(xiàn)問題了——在服務(wù)器被隔離之前它已經(jīng)通過辦公網(wǎng)段的出口訪問過一次外部地址而且傳輸?shù)臄?shù)據(jù)量大概有幾百M(fèi)B。這個(gè)外部地址是那個(gè)開源框架默認(rèn)的遙測(cè)端點(diǎn)。很多開源工具會(huì)默認(rèn)開啟使用統(tǒng)計(jì)和崩潰上報(bào)功能把運(yùn)行日志、異常堆棧、使用情況發(fā)給開發(fā)者的服務(wù)器。這本來是正常的軟件行為但在企業(yè)內(nèi)網(wǎng)環(huán)境里這代表公司的一部分內(nèi)部數(shù)據(jù)已經(jīng)離開了內(nèi)網(wǎng)邊界而且沒有任何人審批過。我不覺得開源工具收集遙測(cè)數(shù)據(jù)是惡意行為但在企業(yè)內(nèi)部部署時(shí)這必須被當(dāng)作敏感事件來處理。公司的數(shù)據(jù)出去是出去了這就不能當(dāng)作“沒發(fā)生”看待。而且這件事也暴露了一個(gè)更嚴(yán)重的問題我們當(dāng)時(shí)根本沒有任何審計(jì)機(jī)制能提前發(fā)現(xiàn)這臺(tái)服務(wù)器在對(duì)外通信。2.5 根因總結(jié)三句話能說清楚但代價(jià)不小復(fù)盤到最后這起事故的根因其實(shí)不復(fù)雜第一一個(gè)功能強(qiáng)大但邊界缺失的工具被不加保護(hù)地放進(jìn)了辦公網(wǎng)核心位置。它具備網(wǎng)段探測(cè)、接口自動(dòng)發(fā)現(xiàn)、外部遙測(cè)等功能但部署時(shí)沒有限制它的網(wǎng)絡(luò)可達(dá)范圍和行為邊界。第二審批流程形同虛設(shè)。老板直接要求部署運(yùn)維沒有經(jīng)過變更評(píng)審也沒有做安全評(píng)估。流程這東西平時(shí)覺得煩出了事才知道它是用來救命的。第三監(jiān)控覆蓋不足。我們對(duì)出口流量有基本的日志記錄但對(duì)內(nèi)網(wǎng)東西向流量服務(wù)器與終端之間的通信幾乎完全透明等到交換機(jī)都被拖垮了才意識(shí)到異常。這三點(diǎn)放在任何一家公司可能都成立但真正把這些隱患點(diǎn)炸開的是一次“無心但無約束”的快速部署。所以后面我們?cè)谧黾庸痰臅r(shí)候思路非常明確不是去追究誰的責(zé)任而是從制度、技術(shù)和意識(shí)三個(gè)層面把漏洞補(bǔ)上。3. 事后止血與加固一套可以落地的內(nèi)網(wǎng)安全操作方案如果說前面是復(fù)盤那這一部分就是要?jiǎng)邮纸鉀Q的問題。我們花了大概兩周時(shí)間把整件事從“臨時(shí)救火”推進(jìn)到“系統(tǒng)性加固”。下面這些措施都是基于這次事故的親身經(jīng)歷不拔高、不空談每一步都經(jīng)歷過驗(yàn)證。3.1 第一件事重新梳理網(wǎng)絡(luò)分區(qū)劃分信任邊界最根本的問題是那臺(tái)服務(wù)器擁有過大的網(wǎng)絡(luò)權(quán)限。要解決這個(gè)問題第一件事就是按“最小權(quán)限原則”重新劃分內(nèi)網(wǎng)。我給網(wǎng)段做了這樣的區(qū)分辦公網(wǎng)段員工終端、打印機(jī)、門禁設(shè)備等彼此之間默認(rèn)不互信。業(yè)務(wù)網(wǎng)段運(yùn)行OA、知識(shí)庫(kù)、工單系統(tǒng)等內(nèi)部應(yīng)用的服務(wù)器區(qū)域。數(shù)據(jù)網(wǎng)段存放數(shù)據(jù)庫(kù)、文件存儲(chǔ)等核心數(shù)據(jù)資產(chǎn)的區(qū)域。管理網(wǎng)段給運(yùn)維人員做設(shè)備管理和配置用的獨(dú)立網(wǎng)絡(luò)與其他區(qū)域隔離。測(cè)試網(wǎng)段研發(fā)調(diào)試用的臨時(shí)環(huán)境按項(xiàng)目隔離隨時(shí)可銷毀。這次出問題的智能體服務(wù)器被我劃到了“業(yè)務(wù)網(wǎng)段”里的一個(gè)獨(dú)立子網(wǎng)并且用防火墻策略明確限制它只允許訪問業(yè)務(wù)網(wǎng)段里指定的那幾臺(tái)應(yīng)用服務(wù)器不能訪問數(shù)據(jù)網(wǎng)段不能訪問辦公網(wǎng)段出口流量必須經(jīng)過統(tǒng)一的互聯(lián)網(wǎng)代理。這個(gè)事情難在哪兒難在舊系統(tǒng)太多了。很多老系統(tǒng)部署的時(shí)候圖省事跨網(wǎng)段互相訪問甚至在辦公網(wǎng)上直接開數(shù)據(jù)庫(kù)端口。真正按新規(guī)則去收斂的時(shí)候一個(gè)個(gè)業(yè)務(wù)系統(tǒng)都要重新確認(rèn)通信需求溝通成本非常高。但這一步不做后面所有防護(hù)都沒意義。3.2 第二件事給開源工具做“能力裁剪”去掉不必要的權(quán)限很多開源框架功能越強(qiáng)大默認(rèn)開啟的能力就越危險(xiǎn)。這次的智能體框架就是一個(gè)典型它默認(rèn)能做網(wǎng)絡(luò)探測(cè)、接口自動(dòng)發(fā)現(xiàn)、外部數(shù)據(jù)上報(bào)。這些功能在單機(jī)開發(fā)環(huán)境里很實(shí)用但對(duì)內(nèi)網(wǎng)部署來說就是安全隱患。我們就地對(duì)部署方案做了改造在配置文件中顯式關(guān)閉網(wǎng)絡(luò)探測(cè)和自動(dòng)接口發(fā)現(xiàn)功能所有的對(duì)接目標(biāo)改成手工白名單維護(hù)禁止服務(wù)器主動(dòng)發(fā)起外聯(lián)請(qǐng)求出網(wǎng)必須通過代理并在代理層做域名/端口白名單需要連的企業(yè)系統(tǒng)提前申請(qǐng)、逐一審批把遙測(cè)、統(tǒng)計(jì)上報(bào)等業(yè)務(wù)全部關(guān)閉不讓任何內(nèi)部數(shù)據(jù)未經(jīng)允許離開內(nèi)網(wǎng)。這里有一個(gè)容易忽略的細(xì)節(jié)修改這些配置之后一定要檢查工具是否還會(huì)重新生成默認(rèn)配置。有些框架啟動(dòng)時(shí)會(huì)自動(dòng)補(bǔ)齊缺失的配置項(xiàng)你以為關(guān)閉了重啟之后它又悄悄開啟了。正確做法是在配置文件里顯式寫上“禁用”而不是簡(jiǎn)單地刪除或注釋掉相關(guān)選項(xiàng)這樣才能確保工具不會(huì)“自作主張”把默認(rèn)行為加回來。3.3 第三件事基于最小權(quán)限建設(shè)賬號(hào)和接口體系收斂攻擊面隔離了網(wǎng)絡(luò)、裁剪了功能接下來就是賬號(hào)和接口層面的收斂。首先是賬號(hào)體系。我們把這個(gè)服務(wù)器上的所有應(yīng)用賬號(hào)統(tǒng)一到企業(yè)內(nèi)的統(tǒng)一身份認(rèn)證體系并且按照“最小權(quán)限”分配了角色機(jī)器人賬號(hào)只擁有查詢工單、發(fā)起審批流程的權(quán)限不擁有修改、刪除、批量導(dǎo)出數(shù)據(jù)的權(quán)限不能讀取數(shù)據(jù)庫(kù)里的客戶原始數(shù)據(jù)所有操作日志追回到統(tǒng)一日志平臺(tái)。然后是接口層面。我們把內(nèi)部各系統(tǒng)對(duì)外的API做了一次全面梳理建立了三個(gè)級(jí)別的接口規(guī)范核心敏感數(shù)據(jù)接口只允許經(jīng)統(tǒng)一網(wǎng)關(guān)轉(zhuǎn)發(fā)應(yīng)用接口要求必須有獨(dú)立的身份校驗(yàn)和限流控制內(nèi)部調(diào)試接口全部關(guān)閉或者只允許管理網(wǎng)段訪問。這個(gè)改造直接把未來接口被濫用的可能性壓低了一大截。3.4 第四件事補(bǔ)齊監(jiān)控與告警告別“出了事才發(fā)現(xiàn)”這次事故最大的教訓(xùn)是我們對(duì)內(nèi)網(wǎng)東西向流量完全沒有視界。所以補(bǔ)監(jiān)控是優(yōu)先級(jí)很高的任務(wù)。我們?cè)诤诵慕粨Q機(jī)和關(guān)鍵匯聚交換機(jī)上部署了流量分析探針覆蓋了辦公網(wǎng)、業(yè)務(wù)網(wǎng)和管理網(wǎng)之間的所有必經(jīng)鏈路。一方面建立全網(wǎng)的流量臺(tái)賬另一方設(shè)了四條告警規(guī)則單個(gè)IP在單位時(shí)間內(nèi)發(fā)起的連接數(shù)超過閾值比如每秒超過兩百個(gè)新建連接單個(gè)IP訪問的內(nèi)網(wǎng)目標(biāo)數(shù)超過閾值比如一分鐘內(nèi)訪問超過五個(gè)不同的網(wǎng)段非管理網(wǎng)段出現(xiàn)對(duì)外聯(lián)請(qǐng)求流量趨勢(shì)曲線出現(xiàn)長(zhǎng)時(shí)間高位平穩(wěn)而不是業(yè)務(wù)高峰那種周期性波動(dòng)。這些規(guī)則未必能覆蓋所有攻擊場(chǎng)景但捕捉這次事故這種“智能體沸騰”型事件已經(jīng)夠用。運(yùn)維同學(xué)現(xiàn)在每天只需要花幾分鐘看告警隊(duì)列確認(rèn)沒有異常即可徹底告別了過去那種靠人肉翻日志的日子。3.5 第五件事從流程上下手把“人”這個(gè)變量管住技術(shù)手段做到位之后還要解決“老板硬上”這個(gè)源頭問題。我們專門建立了一個(gè)“高風(fēng)險(xiǎn)變更評(píng)估表”。任何系統(tǒng)只要滿足以下條件之一就必須走完整評(píng)估流程能訪問員工個(gè)人信息能訪問客戶數(shù)據(jù)有對(duì)外發(fā)起網(wǎng)絡(luò)請(qǐng)求的能力有自動(dòng)執(zhí)行操作的能力能對(duì)接三個(gè)以上內(nèi)部系統(tǒng)。這次出問題的智能體框架五條全占在評(píng)估表里屬于最高風(fēng)險(xiǎn)等級(jí)。同時(shí)給管理層專門做了一次匯報(bào)核心意思是不是說不能用新工具而是要用得安全。我們給出了一個(gè)標(biāo)準(zhǔn)化的接入路徑先申請(qǐng)、再評(píng)估、然后選型、部署、測(cè)試、上線。流程看起來多了一步但每一步都有明確的責(zé)任人和時(shí)限不會(huì)讓業(yè)務(wù)等著急。注意這里說的審批不是走形式。我自己見過太多公司把“變更評(píng)審”做成十分鐘簽字會(huì)那就是掩耳盜鈴。真正的評(píng)審重點(diǎn)是讓技術(shù)負(fù)責(zé)人看一遍網(wǎng)絡(luò)拓?fù)渥兏尠踩?fù)責(zé)人看一遍數(shù)據(jù)流圖讓業(yè)務(wù)負(fù)責(zé)人確認(rèn)系統(tǒng)不能被外部直接訪問。三方都確認(rèn)了這個(gè)會(huì)才算開完。3.6 一件順手做掉但很重要的補(bǔ)丁賬號(hào)權(quán)限全面盤點(diǎn)既然賬面都翻了一遍我建議順手把公司里的“僵尸賬號(hào)”和“高權(quán)限賬號(hào)”清理一輪?,F(xiàn)在很多企業(yè)系統(tǒng)已經(jīng)支持接入統(tǒng)一身份認(rèn)證但很多歷史遺留的老系統(tǒng)還依賴本地密碼。這些老系統(tǒng)的賬號(hào)往往被人遺忘了離職員工的賬號(hào)沒刪、行政小妹有數(shù)據(jù)庫(kù)管理員權(quán)限、外包開發(fā)拿著root密碼。這種問題的風(fēng)險(xiǎn)不亞于一臺(tái)沒做防護(hù)的服務(wù)器。我們用了一個(gè)周末做了全量盤點(diǎn)把使用超過一年且沒有登錄記錄的賬號(hào)全部?jī)鼋Y(jié)再把所有管理員權(quán)限壓縮到十人以內(nèi)雙向認(rèn)證全部開啟。這個(gè)工作和前面的網(wǎng)絡(luò)隔離一樣辛苦但它能把“一旦被攻破后的爆炸半徑”再縮小一圈。做完了這些我們才敢說這次事故算是真正處理完了。4. 一些真實(shí)的排查細(xì)節(jié)與工具經(jīng)驗(yàn)這個(gè)部分我相信是實(shí)操中最容易卡住的地方。很多文章講安全只說大概念不聊細(xì)節(jié)。我把自己在排查過程中真正用到的方法和踩過的坑寫下來希望能幫到正在處理類似問題的同行。4.1 工具選型實(shí)測(cè)可視化分析配合流量審查當(dāng)交換機(jī)CPU告警、網(wǎng)絡(luò)全線卡頓的時(shí)候命令行工具已經(jīng)很難實(shí)時(shí)操作了。我們最先做的是把核心交換機(jī)的端口鏡像開啟用流量分析工具抓取真實(shí)流量。分析工具不用追求大而全關(guān)鍵要看兩點(diǎn)能不能快速按IP做排序統(tǒng)計(jì)能不能跨時(shí)間維度做回溯。我這次用的組合是“抓包工具加可視化分析平臺(tái)”抓包工具負(fù)責(zé)收集原始流量包保留到本地可視化分析平臺(tái)負(fù)責(zé)把抓到的數(shù)據(jù)按五元組源IP、源端口、目標(biāo)IP、目標(biāo)端口、協(xié)議做索引方便我們快速定位是哪個(gè)IP在和哪個(gè)IP通信。這套組合的好處是即使當(dāng)時(shí)沒有配置全量的網(wǎng)絡(luò)分析設(shè)備只要有一臺(tái)普通服務(wù)器和交換機(jī)端口鏡像就能臨時(shí)搭出分析環(huán)境為事后追溯提供足夠證據(jù)。4.2 日志審查時(shí)最容易忽略的幾個(gè)字段我們常規(guī)都會(huì)看訪問日志里的時(shí)間、用戶、操作類型但出了這類事才發(fā)現(xiàn)真正要重點(diǎn)盯的是這幾個(gè)字段用戶代理、來源IP、目標(biāo)地址、傳輸字節(jié)數(shù)、設(shè)備指紋、以及會(huì)話持續(xù)時(shí)長(zhǎng)。就拿這次事件來說那臺(tái)智能體服務(wù)器訪問外部遙測(cè)端點(diǎn)時(shí)用戶代理字段就顯示了框架的名稱和版本號(hào)。如果我們當(dāng)初的日志系統(tǒng)能對(duì)這種用戶代理做告警整個(gè)事件可以提前幾小時(shí)發(fā)現(xiàn)。傳輸字節(jié)數(shù)也很重要內(nèi)部系統(tǒng)的常規(guī)接口調(diào)用往往只有幾十KB單次會(huì)話傳出幾百M(fèi)B數(shù)據(jù)這本身就是再明顯不過的危險(xiǎn)信號(hào)。建議所有負(fù)責(zé)運(yùn)維和安全的朋友在做日志審計(jì)時(shí)一定要把這兩個(gè)維度加進(jìn)去異常用戶代理自動(dòng)告警、異常傳輸量自動(dòng)告警。光看“有沒有登錄成功”是遠(yuǎn)遠(yuǎn)不夠的。4.3 三個(gè)典型的故障排查手段最后分享三個(gè)在排查這次事故時(shí)實(shí)際用到的判定方法第一個(gè)是“丟包率定位法”。當(dāng)網(wǎng)絡(luò)卡頓時(shí)用工具去ping不同網(wǎng)段的幾個(gè)關(guān)鍵IP對(duì)比丟包率。如果所有網(wǎng)段都掉包那問題大概率出在核心設(shè)備如果只有某個(gè)網(wǎng)段掉包就往該網(wǎng)段內(nèi)部的終端和設(shè)備上找原因。我們當(dāng)時(shí)就是用這個(gè)方法先從交換機(jī)上確定了故障點(diǎn)再用流量分析鎖定了具體的故障服務(wù)器。第二個(gè)是“香農(nóng)熵”的另類用法。流量基線穩(wěn)定的時(shí)候源IP和目的IP的分布是比較“整齊”的但當(dāng)有設(shè)備在做全網(wǎng)掃描時(shí)目的IP出現(xiàn)頻率會(huì)變得非常均勻熵值會(huì)異常下降。雖然網(wǎng)格化的流量數(shù)據(jù)分析工具可以直接看到這種變化但如果你手頭只有基礎(chǔ)的數(shù)據(jù)包文件也可以用腳本計(jì)算IP分布熵來做快速判斷數(shù)據(jù)上一樣能看出掃描行為。第三個(gè)是“長(zhǎng)連接清單”檢查法。我們?cè)诤诵姆阑饓ι侠×艘惶靸?nèi)所有持續(xù)時(shí)間超過三分鐘的連接記錄逐一核對(duì)這些連接對(duì)應(yīng)的進(jìn)程和業(yè)務(wù)。正常的企業(yè)應(yīng)用連接大多是短連接出現(xiàn)大量長(zhǎng)連接說明有東西在保持通信。這次事故中那臺(tái)服務(wù)器的對(duì)外遙測(cè)連接恰好就是一條長(zhǎng)連接在清單里非常扎眼一眼就揪出來了。4.4 跟設(shè)備廠商打交道的經(jīng)驗(yàn)該做快照就做快照這次出事的服務(wù)器操作系統(tǒng)和上面跑的框架涉及不止一個(gè)軟件廠商。我們?cè)谂挪檫^程中想請(qǐng)廠商的技術(shù)支持幫忙分析框架行為對(duì)方提出要我們提供系統(tǒng)日志和進(jìn)程快照。說實(shí)話當(dāng)時(shí)線上服務(wù)已經(jīng)處于不穩(wěn)定狀態(tài)運(yùn)維同事很擔(dān)心做快照會(huì)不會(huì)影響正常業(yè)務(wù)。最終我們用了一臺(tái)同型號(hào)的空閑服務(wù)器裝了同樣的操作系統(tǒng)和框架版本然后做了一次完整的模擬部署和踩踏實(shí)驗(yàn)——安全、嚴(yán)謹(jǐn)?shù)貜?fù)現(xiàn)了“硬上”導(dǎo)致內(nèi)網(wǎng)擁塞的過程再將完整快照提供給廠商。這樣做既沒有影響線上業(yè)務(wù)也拿到了廠商需要的診斷材料。這個(gè)經(jīng)驗(yàn)很有用當(dāng)你需要?jiǎng)e人幫你分析問題務(wù)必給到一個(gè)可復(fù)現(xiàn)的環(huán)境而不是讓別人的技術(shù)支持對(duì)著線上半死不活的環(huán)境遠(yuǎn)程操作。時(shí)間上雖然會(huì)慢但整個(gè)過程是可控、安全的。4.5 一些“便宜但管用”的老辦法最后還想說一個(gè)容易被年輕人忽略的點(diǎn)很多老辦法在關(guān)鍵時(shí)刻比花哨的工具更有用。我們這次能快速定位到那臺(tái)服務(wù)器很大程度上依賴的是一套非常原始的方法——在核心交換機(jī)上按接入端口流量做了半小時(shí)排序然后把流量最大的十個(gè)端口逐個(gè)和物理資產(chǎn)表對(duì)了一遍。這種“土辦法”雖然慢但它在任何環(huán)境下都能做不依賴任何高級(jí)工具。建議每家公司都建一個(gè)“物理資產(chǎn)端口對(duì)應(yīng)表”哪怕是用電子表格記錄交換機(jī)的哪個(gè)端口接的是哪臺(tái)機(jī)器IP是什么用途是什么。出了事你才知道這張表有多值錢——有些公司連核心交換機(jī)的端口接什么都說不清楚那就只能眼看著問題在眼前發(fā)生卻沒辦法下手。5. 從一次事故到一套機(jī)制這件事給我留下的三點(diǎn)體會(huì)整個(gè)事件從發(fā)生到徹底處理完花了大概兩周時(shí)間?,F(xiàn)在回頭看我最大的體會(huì)不是技術(shù)本身而是安全這件事的機(jī)制價(jià)值。第一如果你把一臺(tái)服務(wù)器當(dāng)成“自己人”放進(jìn)內(nèi)網(wǎng)就必須給它畫好邊界。無論它是不是開源的、是不是老板親自部署的、是不是自帶各種自動(dòng)化能力只要它能觸達(dá)公司內(nèi)部系統(tǒng)和數(shù)據(jù)就要按最高風(fēng)險(xiǎn)等級(jí)來對(duì)待。這是這次事故最深刻的教訓(xùn)。第二監(jiān)控不一定越貴越好。我們這次事后配置的四條告警規(guī)則實(shí)際上就是基于已有設(shè)備能力做了組合并沒有采購(gòu)任何新的硬件。搞清楚自己手里有什么設(shè)備、設(shè)備能供什么數(shù)據(jù)然后把規(guī)則寫對(duì)比迷信“采購(gòu)一套高級(jí)安全系統(tǒng)”管用得多。第三流程和意識(shí)必須綁定。就算我們把所有安全機(jī)制都建好了如果老板還想著“下次再快速部署一個(gè)工具”技術(shù)手段也攔不住。所以事后我們專門給管理層做了一次“十五分鐘安全課”核心內(nèi)容就一句話新工具接入沒有問題但接入之前必須過流程、劃邊界、留權(quán)限。沒有這三個(gè)動(dòng)作任何部署都是裸奔。這次課之后效果還是很明顯的——至少現(xiàn)在沒人敢再繞過流程去動(dòng)核心網(wǎng)段了。最后再分享一個(gè)小細(xì)節(jié)我們?cè)诮o那臺(tái)智能體服務(wù)器做隔離時(shí)刻意沒有關(guān)機(jī)而是保持了六小時(shí)只讀掛載狀態(tài)。這六小時(shí)里我們完整導(dǎo)出了應(yīng)用日志和系統(tǒng)會(huì)話記錄還順手找到了三條它試圖連通但因?yàn)槟繕?biāo)端口不一致而失敗的記錄。這些記錄后來成為判斷信息泄露范圍的關(guān)鍵證據(jù)。如果當(dāng)時(shí)為了“省事”直接關(guān)機(jī)或者重新啟動(dòng)了服務(wù)這些痕跡就再也找不回來了。遇到大規(guī)模變動(dòng)的時(shí)候切記先保護(hù)現(xiàn)場(chǎng)再談恢復(fù)。