🗺️ 資安考證地圖

日誌管理與 SIEM:從一行紀錄到一則告警

出事之後,每個人都會問同樣的問題:是誰、在什麼時間、從哪裡、做了什麼、成功了沒有。能回答的只有日誌,前提是它有被記下來、沒被刪掉、時間對得上,而且有人或系統真的在看。

日誌記什麼、怎麼保護 Syslog、NTP 與事件 ID 判讀 SIEM 關聯規則與告警調校

💡 先搞懂問題:日誌散落各處時,調查會卡在哪裡

想像一家網購公司某天接到客訴:有會員說自己的帳號被人登入,還改了收件地址。資安人員要回答的問題其實很固定:是哪個帳號、什麼時間、從哪個 IP 連進來、做了哪些操作、有沒有成功。這些答案都在日誌(Log,系統自動寫下的事件紀錄)裡,但實際去找時,常常卡在下面幾件事。

第一,日誌分散在防火牆、網站伺服器、資料庫、網域控制站各自的硬碟裡,格式也各不相同,只能一台一台登入翻找。第二,每台設備的時鐘快慢不一,防火牆記的是 09:11、網站記的是 09:15,同一次攻擊在不同設備上的紀錄根本兜不起來。第三,攻擊者拿到管理權限後,第一件事往往就是清掉本機日誌。第四,就算日誌都在,每天幾百萬筆紀錄也不可能靠人眼看完,等到有人發現,通常已經是幾週之後。

內部 NTP 時間主機 (沒有共同的時間來源,各自的時鐘慢慢飄移) 防火牆 09:11:00 09:15:00 格式:廠牌專屬 網站伺服器 09:15:00 09:15:00 格式:存取日誌 資料庫 09:17:00 09:15:00 格式:稽核表格 網域控制站 09:14:00 09:15:00 格式:事件 ID 時鐘慢 4 分 時間正確 時鐘快 2 分 本機日誌已被清除 調查人員:逐台登入、逐種格式翻找 時間對不上,也不知道哪台少了什麼 集中日誌伺服器/SIEM 即時轉送・另一組人管理・防竄改 Syslog 等 即時轉送 正規化後 關聯與告警

← 左右滑動看完整圖 →

各自保存:四台設備的時鐘各差幾分鐘,格式各不相同,網域控制站的本機日誌還被攻擊者清掉了。調查人員只能逐台翻找,拼不出完整經過。

用一個比喻抓住整件事:社區管理室的訪客登記簿

一個社區有好幾棟大樓,每棟一樓都有管理室和訪客登記簿,訪客進出要寫下姓名、時間、要去哪一戶、進出是否被放行。如果登記簿就放在各棟管理室的抽屜裡,會遇到和上面一模一樣的問題:各棟牆上的時鐘快慢不一、登記方式不同;值班保全若和小偷串通,可以直接撕掉那一頁;登記簿寫滿了就被丟掉;也沒有人每天去比對各棟的紀錄。

改善的方法很直覺:每位訪客登記完,影本立刻送到總管理處(集中);所有大樓的時鐘每天和總管理處的標準鐘對時(時間同步);總管理處的檔案櫃上鎖、保全無權打開,影本每頁還蓋騎縫章(防竄改);總管理處有專人或程式每天比對「同一位訪客半夜在三棟之間反覆進出」這類跨棟的異常(關聯分析與告警)。

點任一階段,看比喻與真正的做法

← 左右滑動看完整圖 →

日誌的一生:從設備產生紀錄,到有人收到告警並處理,中間每一段出問題,最後都會變成「查不到」或「看不懂」。點上方任一階段看說明。

回到資安,登記簿就是各系統自動產生的日誌;影本立刻送到總管理處,對應用 Syslog 等協定把日誌即時轉送到集中的日誌伺服器;各棟時鐘對時,對應全部設備以 NTP(Network Time Protocol,網路時間協定)同步時間;上鎖的檔案櫃與騎縫章,對應存取權限控管、雜湊或 WORM(Write Once Read Many,寫入後只能讀不能改)等防竄改機制;專人比對跨棟異常,就是 SIEM(Security Information and Event Management,安全資訊與事件管理)做的正規化、關聯分析與告警。
這個比喻有兩個地方容易讓人誤會。其一,登記簿是人寫的,會漏寫;日誌是系統自動產生的,但「要記哪些事件」仍然要事先設定,沒開啟的稽核項目事後查不到。其二,總管理處收齊影本不代表就安全了:集中那一台本身也是攻擊目標,需要更嚴格的權限與保護,而且 SIEM 比對規則寫得不好,一樣會漏抓或誤報。

🎮 互動實驗室

五個實驗室依照日誌的一生排列:先認識 Syslog 怎麼標示輕重,再看時間不同步會把事件順序弄亂,接著練習讀 Windows 與 Linux 的登入紀錄、網站存取日誌,最後親手調一條 SIEM 告警規則。所有日誌、IP 與帳號都是頁面內虛構的示意資料。

1Syslog 嚴重等級排序與 PRI 解碼

Syslog 用 0 到 7 八個嚴重等級(Severity)標示一筆訊息有多急,數字越小越嚴重。下方八個等級被打亂了,請從最嚴重的開始,依序點選放進格子裡。

從最嚴重的等級開始點。提示:最嚴重的那一級代表整個系統已經無法使用。

PRI 解碼器:一個數字藏著兩個資訊

每筆 Syslog 訊息開頭都有一個角括號包住的數字,叫做 PRI(Priority,優先值),算法是 PRI = Facility × 8 + Severity。Facility(設施)說明訊息來自哪一類程式。拖動滑桿或直接改下拉選單,看兩邊如何互相換算。

PRI 134 除以 8 得 16 餘 6,所以這筆訊息來自 Facility 16(local0,自訂用途),嚴重等級 6(資訊)。

2三台設備、一場攻擊:時間不同步會發生什麼事

下面是同一次攻擊在三台設備上留下的五筆紀錄。調查時,我們只能依照每台設備「自己寫下的時間」排序。拖動滑桿改變各設備的時鐘偏差,觀察排序後的故事是否還合理;最後按下「開啟 NTP 對時」。

每一列顯示的是設備自己記下的時間。三台設備的時鐘偏差不同,依記錄時間排序後,事件的前後關係就可能和實際發生順序不一致。

3事件代碼配對:Windows 事件 ID 與 Linux auth.log

先點左邊一張代碼或日誌卡,再點右邊你認為對應的意義。配對正確的卡會固定下來。Windows 這組全部配完後,會把這些事件串成一段完整的故事。

點左邊任一張卡開始。

左邊是日誌裡實際會看到的代碼或原文,右邊是它代表的意思。判讀日誌的第一步,就是能把這些代碼翻譯成「發生了什麼事」。

4網站存取日誌偵探

這是一段虛構網站在一分多鐘內的存取日誌,採用常見的 Apache Combined 格式。先用「欄位解說」模式點每一段文字看它的意義,再切到「找出可疑行」模式,點選你認為可疑的紀錄後按「檢查」。

點任何一段彩色文字,例如開頭的 IP 或中間的 200、404。

目前是欄位解說模式:每一行被拆成 IP、身分、時間、請求、狀態碼、大小、來源頁與瀏覽器等欄位,點哪一段就解說哪一段。

5SIEM 關聯規則模擬:門檻怎麼調才不會誤報又不漏報

SIEM 的關聯規則把多筆單獨看來無害的紀錄串起來判斷。這裡模擬一條常見規則:同一帳號在一段時間內失敗登入達到門檻,接著又成功登入,就可能是密碼被猜中了。下面六個帳號是某天 09:00 到 10:00 的登入紀錄,其中兩個真的被入侵。調整兩個參數,看告警結果怎麼變。

登入失敗登入成功觸發告警的時間窗

每一列是一個帳號,紅點是失敗、綠點是成功。規則會從每次成功登入往前看一個時間窗,數窗內的失敗次數,達到門檻就發出告警。

📘 原理補完

1. 一筆好日誌要回答五個問題

日誌的目的是事後能還原經過並追究責任,也就是可歸責性(Accountability)與不可否認性(Non-repudiation):做過的事賴不掉。因此每筆紀錄至少要能回答誰、何時、從哪、做了什麼、結果如何。點下圖的每一段看它回答哪個問題,以及少了它會怎樣。

← 左右滑動看完整圖 →

點上方任一段:這是一筆示意的登入紀錄,五段各自回答一個調查問題。

依常見的日誌規範,應該記錄的事件包括:登入與登出(成功與失敗都要)、存取被拒絕的紀錄、帳號與權限的新增或變更、特權帳號的使用、系統組態變更、重要檔案或資料的存取,以及網路位址與協定等。反過來,明文密碼、完整卡號這類機敏資料不應寫進日誌,否則日誌本身就變成外洩來源。也不是全部稽核項目都開到最大:記得太多,重要事件會被淹沒、儲存空間也會很快用完,應該依風險挑選重要的事件。

名詞小提醒:日誌是一筆一筆的事件紀錄;稽核軌跡(Audit Trail)是把這些紀錄串起來、足以重建某人行為過程的證據鏈。

2. Syslog:日誌的共通格式與傳送方式

Syslog 是網路設備、Linux 主機與許多應用程式共用的日誌格式與傳送協定,目前的標準是 RFC 5424。一筆訊息大致長這樣:<PRI>版本 時間 主機名 程式名 程序ID 訊息ID 結構化資料 訊息內容。開頭的 PRI 就是實驗室 1 算過的「Facility × 8 + Severity」。

代碼英文中文示意情境
0Emergency緊急系統已無法使用
1Alert警報必須立即採取行動,例如主要資料庫損毀
2Critical嚴重重大故障,例如硬體錯誤
3Error錯誤一般錯誤,例如服務啟動失敗
4Warning警告尚未出錯但需要注意,例如磁碟快滿
5Notice注意正常但值得留意的事件
6Informational資訊一般運作訊息
7Debug除錯最詳細的除錯訊息

設定「只收某個等級以上」時,是指收該數字以下(更嚴重)的等級。例如門檻設為 3(錯誤),會收到 0~3,收不到 4~7。示意情境為常見用法,各廠牌的實際分級可能略有不同。

傳送方式有三種常見選擇,差別在可靠性與機密性。按下方的播放鍵,看同樣送出五筆日誌時各發生了什麼事。

← 左右滑動看完整圖 →

準備好了:三條線路各自要把五筆日誌從設備送到日誌伺服器。按「送出」開始。

UDP 514 是最傳統的做法,不建立連線、也不確認對方有沒有收到,流量大時封包遺失了雙方都不知道。改用 TCP 可以確認送達並重送,但內容仍是明文,路過的人看得到。需要機密性時,用 TLS 加密傳輸(RFC 5425,常用 6514 埠),同時可以驗證日誌伺服器的身分;所以「Syslog 無法加密」是錯誤說法,也不需要事先自己把內容加密。從 DMZ 的伺服器把日誌送回內網時,防火牆只要開放「那台伺服器到日誌伺服器的指定埠」即可。Windows 本身的事件紀錄不是 Syslog 格式,實務上會用 Windows 事件轉送(Windows Event Forwarding)或收集代理程式送到集中平台。

容易混淆:Syslog 是日誌的「格式與傳送協定」,負責把紀錄送到集中的地方;SIEM 是收下日誌之後,做正規化、關聯分析與告警的「平台」。兩者是上下游關係,不是二選一。

3. NTP:時間對不上,證據就站不住

實驗室 2 已經看到,只要設備之間差幾秒,事件的前後順序就可能顛倒;差幾分鐘,跨設備的關聯分析就完全失準。時間不準還有另一個後果:日誌要作為證據時,對方只要指出時間不可信,整份紀錄的證明力就會打折。所以時間同步的目的是讓日誌能對齊、經得起檢驗,和機密性或防止 DDoS 無關。

可信的外部時間來源 國家標準時間服務、GPS 等 只有這一台對外校時(UDP 123) 內部 NTP 主機 全公司唯一的時間基準 防火牆、交換器 伺服器 網域控制站 日誌伺服器/SIEM 其他設備只跟 內部主機對時 對外只開一個 出口,來源一致

← 左右滑動看完整圖 →

建議架構:一台內部主機向可信來源校時,其餘設備再與它同步,全公司的時間基準只有一個。

除了對時,還要注意時區。不同系統預設記錄的時區不一定相同,例如 IIS 網站日誌預設使用 UTC,和台灣時間差 8 小時;比對時要先換算成同一時區,最好在日誌中保留時區資訊(例如 +08:00)。

4. 日誌保護:讓紀錄事後仍然可信

日誌最大的敵人是「剛好有權限的人」。攻擊者拿到管理員權限後會清除日誌,內部人員也可能修改自己的操作紀錄。所以保護的重點是完整性(沒被改)與可用性(沒被刪、需要時拿得到),做法可以分成下面幾層。

下圖用雜湊鏈示範「防竄改」怎麼運作:每一筆的雜湊值,是把「這筆內容」加上「前一筆的雜湊值」一起計算出來的,所以改動任何一筆,都會和後面的鏈接不起來。

← 左右滑動看完整圖 →

目前狀態:五筆紀錄的雜湊都驗證通過,最新一筆的雜湊也和另一台伺服器上保存的副本一致。雜湊值為示意用的簡化計算。

容易混淆:日誌保護重在防竄改、防刪除(完整性與可用性);日誌加密重在防偷看(機密性)。把日誌加密並不能證明它沒被改過,要證明完整性得靠雜湊、簽章或 WORM。

5. 看懂 Windows 與 Linux 的登入紀錄

Windows 的紀錄在「事件檢視器(Event Viewer)」裡,登入、帳號、權限相關的事件集中在「安全性」紀錄,每種事件有固定的事件 ID。下表是調查時最常遇到的幾個,常用的篩選條件可以用「建立自訂檢視」存起來重複使用。

事件 ID意義所在紀錄調查時的看法
4624帳戶登入成功安全性看登入類型:2 是本機互動、3 是網路(例如存取共用資料夾)、10 是遠端桌面
4625帳戶登入失敗安全性同一帳號大量失敗像暴力破解;同一來源對很多帳號各失敗幾次,像密碼噴灑
4634帳戶已登出安全性與 4624 搭配,可推算登入期間
4672新登入被指派特殊權限安全性管理員等級的帳號登入時會出現,追查特權使用的起點
4688已建立新的處理程序安全性開啟命令列稽核後,可看到執行了什麼程式與參數
4720已建立使用者帳戶安全性非預期的新帳號,可能是攻擊者留下的後門
4732成員已加入啟用安全性的本機群組安全性被加入 Administrators 等高權限群組要特別注意;全域群組則是 4728
4740帳戶已被鎖定安全性連續失敗超過鎖定門檻,常和大量 4625 一起出現
1102稽核紀錄已被清除安全性正常維運很少需要清除,出現就要追查是誰、為什麼
7045系統已安裝新服務系統常見的持久化手法,也可能是正常的軟體安裝
4104PowerShell 指令碼區塊記錄PowerShell/Operational可看到解碼後的腳本內容,追查編碼過的指令時很關鍵

Linux 的日誌多半在 /var/log 底下,是可以直接搜尋的文字檔;使用 systemd 的系統也可以用 journalctl 查詢。

檔案記錄內容查看方式
/var/log/auth.log(Debian、Ubuntu)
/var/log/secure(Red Hat 系)
登入與驗證,包括 SSH 遠端登入、sudo 提權、帳號新增文字檔,直接搜尋關鍵字
/var/log/syslog(Debian 系)
/var/log/messages(Red Hat 系)
一般系統訊息文字檔
/var/log/wtmp成功的登入、登出歷史last 指令
/var/log/btmp失敗的登入嘗試lastb 指令
/var/log/lastlog每個帳號最近一次登入lastlog 指令
/var/log/cron(Red Hat 系)排程工作的執行文字檔

wtmp、btmp、lastlog 是二進位檔,不能直接用文字編輯器看,要用對應的指令。另外,要查某個 IP 在特定時間分配給哪台電腦,要看的是 DHCP 伺服器的日誌,不是主機本身的登入紀錄。

6. 網站存取日誌怎麼讀

實驗室 4 使用的 Apache Combined 格式,每行依序是:用戶端 IP、身分識別(通常是 -)、HTTP 驗證的使用者名稱(沒有就是 -)、時間、請求行(方法、路徑、協定版本)、狀態碼、回應大小、來源頁(Referer)、用戶端程式(User-Agent)。狀態碼的第一位數最重要:2 開頭是成功、3 開頭是轉址、4 開頭是用戶端的問題(401 未通過驗證、403 禁止存取、404 找不到)、5 開頭是伺服器出錯。

單獨一筆 404 通常沒什麼,可能只是網站少了一個小圖示;可疑的是模式:同一 IP 幾秒內連續要求 /admin/、/.env、/backup.zip 這類不存在的敏感路徑,是在掃描;同一 IP 對登入介面連續 401、最後出現成功,可能是密碼被猜中;網址裡出現 ../ 或它的編碼 %2e%2e%2f,是目錄遊走;出現帶單引號的 OR 條件,是 SQL 注入的試探。這些攻擊本身的原理可以參考 網站攻擊互動教學。還要注意,網站前面若有反向代理或 CDN,日誌記到的 IP 可能是代理伺服器,真正的來源要看代理轉送的標頭或代理本身的日誌。

7. SIEM 到底做了什麼

日誌管理(Log Management)著重在收集與保存;SIEM 在這之上再加入即時的正規化、關聯分析與告警,也負責長期保存與合規報表,例如向稽核證明「敏感資料所在的伺服器與資料庫,所有成功與失敗的存取都有紀錄」。下圖用同一次攻擊在三台設備留下的紀錄,一步一步看 SIEM 怎麼處理。

← 左右滑動看完整圖 →

容易混淆:資料清理是把格式錯誤、不完整的壞資料刪除或修正;正規化是把「好的資料」統一成相同欄位與格式。先清理、再正規化,後面的關聯規則才比對得起來。

SIEM 買來不會自動變安全。它的價值取決於兩件事:收進來的資料品質,以及告警規則設計得好不好。規則太鬆,就像實驗室 5 看到的,每天幾千則告警,值班人員很快就麻木而漏掉真正的攻擊,這叫告警疲勞(Alert Fatigue),根源通常是規則設計失當;規則太嚴,真正的攻擊又溜過去。所以規則要持續調校,並搭配白名單、多條件組合與風險分數。告警成立後,常會再用 MITRE ATT&CK 標註攻擊者走到哪個階段,方便判斷下一步。

8. SIEM、UEBA、SOAR、SOC 的分工

這四個名詞常一起出現,但層次不同:SOC 是「單位」,其他三個是它使用的「工具或技術」。點下圖的每個方塊看它負責什麼。

← 左右滑動看完整圖 →

點任一方塊:外框是 SOC,裡面是它用來「看見、抓異常、自動動手」的工具,以及做最後判斷的人。

名稱是什麼主要工作不負責或要注意
SIEM
安全資訊與事件管理
平台集中日誌、正規化、以關聯規則找出跨系統的可疑模式並告警;長期保存與合規報表本身不負責自動阻擋;規則寫不好會誤報或漏報
UEBA
使用者與實體行為分析
分析技術,常內建於 SIEM先學習使用者與設備平常的行為基線,偏離時提出異常,例如半夜大量下載、從沒去過的地點登入不依賴已知攻擊特徵,適合抓內部威脅與帳號盜用;需要學習期,也會有誤報
SOAR
安全協調、自動化與回應
自動化平台把封鎖 IP、停用帳號、隔離主機、開單通知寫成劇本(Playbook)自動執行,縮短回應時間不負責發現;劇本依據的告警若是誤報,就會自動做錯事
SOC
資安監控中心
組織單位:人員+流程+工具全天候監控、判讀告警、啟動事件應變、持續調校規則不是一套軟體,買了 SIEM 不等於有了 SOC

一句話記分工:SIEM 負責看全貌並告警,UEBA 負責抓「和平常不一樣」,SOAR 負責依劇本動手,SOC 的人負責判斷與決策。

✅ 自我檢測

以下是原創情境題,點選答案後會立即顯示對錯與解析。

🎯 重點整理