主機怪怪的?伺服器資安健診會檢查什麼
約 6 分鐘
客戶打電話來的說法通常很像:這台機器最近怪怪的。CPU 沒跑什麼東西卻長期八九成,遠端連線變慢,或是某天登入時多出一個沒印象的帳號。這些現象可能只是硬體老化或設定沒調好,也可能代表有人已經在裡面挖礦、留了後門。健診的作用,是在你決定要不要重灌之前先把現況盤清楚。
1. 哪些徵兆代表主機可能出問題
找上門的客戶多半是先感覺到不對勁,才回頭查紀錄。麻煩的是這些徵兆單獨看都有無害的解釋:CPU 滿載可能是排程備份,連線變慢可能是頻寬被佔。真正值得排查的訊號是同時出現兩三項,或它們在同一段時間開始。
不同的東西留下的痕跡也不一樣。挖礦程式相對明顯,長時間高負載加上對外連到礦池,很難藏。後門與遠端控制工具安靜得多,平常不吃資源,只在帳號、排程與開放的連接埠上留下線索。所以「機器不慢」不代表沒事。
六個值得回頭查的徵兆
- 負載降不下來。CPU 或 GPU 長時間高負載,但業務量沒變,離峰時段也一樣。
- 對外連線變得奇怪。連到沒聽過的網址、每隔固定時間發一次的規律連線、少見的連接埠上有長時間連線。
- 多出不認識的帳號,或既有帳號被加進管理員群組。
- 防毒被關掉。即時防護停用、排除清單多了奇怪的資料夾路徑。
- 排程工作多出你沒建立的項目,尤其是開機或每小時觸發的。
- 日誌被清空,或某段時間的紀錄缺漏。
2. 健診實際會檢查哪些面向
健診的核心是盤點:把這台主機當下的狀態逐項列出來,再判斷合不合理。我用自行開發的工具,以管理員權限在主機上跑一輪,蒐集程序、修補狀態、帳號與已安裝軟體等資料。
工具負責收集與比對,判讀由人來做。因為「這個程序該不該出現在這台機器上」沒有標準答案,要看它的業務用途。一支遠端連線軟體在 IT 部門的機器上很正常,出現在會計的電腦上就要問一下。
| 面向 | 看什麼 |
|---|---|
| 執行中的程序 | 名稱、執行檔完整路徑、啟動帳號、父程序。特別留意跑在暫存目錄或使用者資料夾的執行檔 |
| 修補狀態 | 作業系統版本、已裝與缺漏的更新、距離上次修補多久 |
| 帳號與權限 | 有哪些帳號、誰在管理員群組、密碼原則、長期閒置或離職未刪的 |
| 已安裝軟體 | 版本過舊的元件、遠端控制工具、破解版軟體、來路不明的工具程式 |
| 開放服務與埠口 | 哪些服務在監聽、是否對外網開放。遠端桌面、遠端連線與資料庫的連接埠是重點 |
| 排程與自動啟動 | 排程工作、服務、啟動資料夾與登錄檔的自動執行位置 |
| 日誌 | 登入成功與失敗紀錄、帳號建立與權限變更、服務反覆異常重啟 |
3. 程序比對 VirusTotal 在做什麼
蒐集到程序清單之後,我會取每支執行檔的檔案指紋送 VirusTotal 比對。它匯集數十家防毒引擎的判定,一個檔案若被其中十幾家標記為惡意,訊號就很清楚。
用指紋比對而不是上傳檔案,是刻意的。送出去的只是一串代表檔案內容的編碼,不是檔案本身,所以不會有公司資料外流的問題。這點在替客戶做健診時很重要。
判讀時要看命中的引擎數量,也要看命中的名稱一不一致。單一引擎的通用型判定常常是誤報,自製或小眾程式尤其容易被誤標。反過來,被十幾家同時標成同一種木馬,那就幾乎不用懷疑。
4. 健診、弱點掃描、防毒軟體差在哪
這三件事常被當成同一種服務詢價,但它們看的東西與時間點都不同。搞混的代價是買錯:以為裝了防毒就不用健診,或以為做過弱掃就知道主機裡面有什麼。
| 看什麼 | 什麼時候 | 盲點 | |
|---|---|---|---|
| 防毒/EDR | 檔案與行為 | 常駐即時 | 客製化與不落地的攻擊;被關掉時你可能不會察覺 |
| 弱點掃描 | 版本與設定 | 定期、從外部看 | 只找已知弱點,不會告訴你裡面被植入什麼 |
| 資安健診 | 現況與組態 | 單次、從內部看 | 不會即時攔截,反映的是執行當下的狀態 |
三者是互補的:健診回答「現在的組態有什麼問題」,掃描追蹤「已知弱點修了沒」,防毒負責日常攔截。但三者都不等於事件調查鑑識,要確認入侵的時間軸與影響範圍,那是更深也更貴的另一種工作。
5. 報告會給你什麼
健診結束後交付一份報告,內容是盤點結果加上加固建議,每一項都標註風險等級與判斷依據。分級的用意不是嚇人,是幫你排順序。中小企業的資訊人力有限,一次修二十項不現實。
高風險項目通常有一個共同點:可以直接從外部利用。例如遠端桌面對整個網際網路開放、多年沒修補的作業系統、來路不明的管理員帳號。這幾類會排在最前面。
每一項發現都會寫出現況、風險分級、可能造成的影響與建議處理方式。另外附上可疑程序的比對結果與判讀說明、帳號盤點表、開放服務清單,以及修補落差。建議還會依可行性分組,區分今天就能改的,與需要停機或調整架構的。
6. 需要提供什麼?會不會影響營運?
健診需要管理員權限,因為要讀取程序清單、帳號資料與系統設定。這是最多人猶豫的一點,所以先說清楚範圍:執行過程只做讀取與盤點,不改設定、不刪檔案、不重啟服務。修補與加固等你們評估之後再另行安排時程。
工具跑一輪通常在幾分鐘到十幾分鐘之間,視軟體數量而定,對效能的影響接近一般的系統盤點指令,不需要停機。主機負載本來就吃緊的話,可以約離峰或夜間執行。執行方式可以遠端也可以到場,依你的網路政策決定。
7. 多久做一次比較合理
健診反映的是執行當下的狀態。隔幾個月裝了新軟體、開了新服務,狀態就變了。合理的節奏是一年一到兩次,而且先從關鍵主機做起,例如檔案伺服器、ERP、對外提供服務的機器。
除了固定頻率,有幾個時機值得插隊。新機器上線、或從前一個廠商手上接管既有主機時,先做一次建立基準。出現前面那些徵兆時盡快排查。人員異動之後,確認離職者的帳號與遠端存取都清乾淨。系統大幅變更之後也值得再看一次,例如升版、搬遷機房、新開對外服務。
把修補與帳號盤點納入例行維運之後,健診就會退回到驗收的角色,不需要每季重做。那也是比較健康的狀態:平常有人顧,健診只是定期確認沒有漏掉什麼。
伺服器資安健診交給你的,是一份清楚的現況清單和一組排好順序的加固建議,讓「主機怪怪的」這種模糊感覺變成可以逐項處理的工作。它無法保證找出每一支惡意程式,客製化或不落地的攻擊仍可能躲過盤點與比對。若盤點結果顯示已經被入侵,那需要的是事件調查與鑑識,我會據實告訴你,並協助評估後續怎麼走。
常見問題
- 主機 CPU 一直滿載,一定是中挖礦程式嗎?
- 不一定。備份排程、資料庫索引重建、記憶體不足導致的持續換頁、失控的應用程式,都會造成長時間高負載。判斷方式是看哪個程序在吃 CPU、它的執行檔放在什麼路徑、離峰時段會不會降下來、有沒有對外連到不熟悉的位址。健診會把這幾項一起列出來,讓你有依據判斷,而不是憑感覺重灌。
- 做完伺服器資安健診,可以保證主機沒有惡意程式嗎?
- 不能。健診是盤點與加固建議,涵蓋執行中的程序、帳號權限、排程工作、開放埠口與修補狀態,並比對程序的檔案指紋。客製化的惡意程式、尚未被收錄的新樣本、只存在記憶體的攻擊,都可能不會被標記出來。健診能縮小盲區、把明顯的風險攤開來,無法宣稱把主機清空。
- 健診會不會影響營運?需要停機嗎?
- 不需要停機。過程是以管理員權限讀取系統資訊,不變更設定、不刪除檔案、不重啟服務,一台通常幾分鐘到十幾分鐘。主機負載吃緊的話可以約離峰或夜間執行。後續的修補與加固由你們決定時程,我不會在健診當下逕行修改設定。