💡 先搞懂問題:日誌散落各處時,調查會卡在哪裡
想像一家網購公司某天接到客訴:有會員說自己的帳號被人登入,還改了收件地址。資安人員要回答的問題其實很固定:是哪個帳號、什麼時間、從哪個 IP 連進來、做了哪些操作、有沒有成功。這些答案都在日誌(Log,系統自動寫下的事件紀錄)裡,但實際去找時,常常卡在下面幾件事。
第一,日誌分散在防火牆、網站伺服器、資料庫、網域控制站各自的硬碟裡,格式也各不相同,只能一台一台登入翻找。第二,每台設備的時鐘快慢不一,防火牆記的是 09:11、網站記的是 09:15,同一次攻擊在不同設備上的紀錄根本兜不起來。第三,攻擊者拿到管理權限後,第一件事往往就是清掉本機日誌。第四,就算日誌都在,每天幾百萬筆紀錄也不可能靠人眼看完,等到有人發現,通常已經是幾週之後。
← 左右滑動看完整圖 →
各自保存:四台設備的時鐘各差幾分鐘,格式各不相同,網域控制站的本機日誌還被攻擊者清掉了。調查人員只能逐台翻找,拼不出完整經過。
用一個比喻抓住整件事:社區管理室的訪客登記簿
一個社區有好幾棟大樓,每棟一樓都有管理室和訪客登記簿,訪客進出要寫下姓名、時間、要去哪一戶、進出是否被放行。如果登記簿就放在各棟管理室的抽屜裡,會遇到和上面一模一樣的問題:各棟牆上的時鐘快慢不一、登記方式不同;值班保全若和小偷串通,可以直接撕掉那一頁;登記簿寫滿了就被丟掉;也沒有人每天去比對各棟的紀錄。
改善的方法很直覺:每位訪客登記完,影本立刻送到總管理處(集中);所有大樓的時鐘每天和總管理處的標準鐘對時(時間同步);總管理處的檔案櫃上鎖、保全無權打開,影本每頁還蓋騎縫章(防竄改);總管理處有專人或程式每天比對「同一位訪客半夜在三棟之間反覆進出」這類跨棟的異常(關聯分析與告警)。
← 左右滑動看完整圖 →
日誌的一生:從設備產生紀錄,到有人收到告警並處理,中間每一段出問題,最後都會變成「查不到」或「看不懂」。點上方任一階段看說明。
🎮 互動實驗室
五個實驗室依照日誌的一生排列:先認識 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、身分、時間、請求、狀態碼、大小、來源頁與瀏覽器等欄位,點哪一段就解說哪一段。
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」。
| 代碼 | 英文 | 中文 | 示意情境 |
|---|---|---|---|
| 0 | Emergency | 緊急 | 系統已無法使用 |
| 1 | Alert | 警報 | 必須立即採取行動,例如主要資料庫損毀 |
| 2 | Critical | 嚴重 | 重大故障,例如硬體錯誤 |
| 3 | Error | 錯誤 | 一般錯誤,例如服務啟動失敗 |
| 4 | Warning | 警告 | 尚未出錯但需要注意,例如磁碟快滿 |
| 5 | Notice | 注意 | 正常但值得留意的事件 |
| 6 | Informational | 資訊 | 一般運作訊息 |
| 7 | Debug | 除錯 | 最詳細的除錯訊息 |
設定「只收某個等級以上」時,是指收該數字以下(更嚴重)的等級。例如門檻設為 3(錯誤),會收到 0~3,收不到 4~7。示意情境為常見用法,各廠牌的實際分級可能略有不同。
傳送方式有三種常見選擇,差別在可靠性與機密性。按下方的播放鍵,看同樣送出五筆日誌時各發生了什麼事。
← 左右滑動看完整圖 →
準備好了:三條線路各自要把五筆日誌從設備送到日誌伺服器。按「送出」開始。
UDP 514 是最傳統的做法,不建立連線、也不確認對方有沒有收到,流量大時封包遺失了雙方都不知道。改用 TCP 可以確認送達並重送,但內容仍是明文,路過的人看得到。需要機密性時,用 TLS 加密傳輸(RFC 5425,常用 6514 埠),同時可以驗證日誌伺服器的身分;所以「Syslog 無法加密」是錯誤說法,也不需要事先自己把內容加密。從 DMZ 的伺服器把日誌送回內網時,防火牆只要開放「那台伺服器到日誌伺服器的指定埠」即可。Windows 本身的事件紀錄不是 Syslog 格式,實務上會用 Windows 事件轉送(Windows Event Forwarding)或收集代理程式送到集中平台。
3. NTP:時間對不上,證據就站不住
實驗室 2 已經看到,只要設備之間差幾秒,事件的前後順序就可能顛倒;差幾分鐘,跨設備的關聯分析就完全失準。時間不準還有另一個後果:日誌要作為證據時,對方只要指出時間不可信,整份紀錄的證明力就會打折。所以時間同步的目的是讓日誌能對齊、經得起檢驗,和機密性或防止 DDoS 無關。
← 左右滑動看完整圖 →
建議架構:一台內部主機向可信來源校時,其餘設備再與它同步,全公司的時間基準只有一個。
除了對時,還要注意時區。不同系統預設記錄的時區不一定相同,例如 IIS 網站日誌預設使用 UTC,和台灣時間差 8 小時;比對時要先換算成同一時區,最好在日誌中保留時區資訊(例如 +08:00)。
4. 日誌保護:讓紀錄事後仍然可信
日誌最大的敵人是「剛好有權限的人」。攻擊者拿到管理員權限後會清除日誌,內部人員也可能修改自己的操作紀錄。所以保護的重點是完整性(沒被改)與可用性(沒被刪、需要時拿得到),做法可以分成下面幾層。
- 產生當下就送走:即時轉送到另一台集中的日誌伺服器,由不同於系統管理員的人員管理(職責分離)。本機的日誌就算被清,副本已經在別處。系統管理員不應能修改自己的操作日誌。
- 存取權限:只有負責的人能讀,幾乎沒有人能改或刪;讀取日誌本身也要留紀錄。
- 防竄改:用雜湊或數位簽章驗證內容沒被改,或存到 WORM 儲存,寫入後在保存期間內只能讀不能改。
- 保存期限與輪替:保存多久依法規、合約與組織政策決定。以支付卡產業的 PCI DSS 為例,要求稽核日誌至少保存一年,且最近三個月可立即調閱。日誌輪替(Log Rotation)依時間或檔案大小切分,自動壓縮歸檔、刪除超過保存期限的檔案。
- 容量監控:儲存空間滿了,系統可能停止寫入新事件或覆蓋舊紀錄,兩者都會留下空窗,要設定告警。
下圖用雜湊鏈示範「防竄改」怎麼運作:每一筆的雜湊值,是把「這筆內容」加上「前一筆的雜湊值」一起計算出來的,所以改動任何一筆,都會和後面的鏈接不起來。
← 左右滑動看完整圖 →
目前狀態:五筆紀錄的雜湊都驗證通過,最新一筆的雜湊也和另一台伺服器上保存的副本一致。雜湊值為示意用的簡化計算。
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 | 系統已安裝新服務 | 系統 | 常見的持久化手法,也可能是正常的軟體安裝 |
4104 | PowerShell 指令碼區塊記錄 | 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 的人負責判斷與決策。
✅ 自我檢測
以下是原創情境題,點選答案後會立即顯示對錯與解析。
🎯 重點整理
- 日誌要能回答五件事:誰、何時、從哪、做了什麼、結果;目的是可歸責與不可否認。明文密碼等機敏資料不寫進日誌。
- Syslog 等級 0~7,數字越小越嚴重:緊急、警報、嚴重、錯誤、警告、注意、資訊、除錯。PRI = Facility × 8 + Severity,例如 134 = 16 × 8 + 6。
- 傳輸:UDP 514 快但可能遺失;TCP 可靠但明文;TLS(常用 6514)加密並驗證伺服器。Syslog 可以加密。
- NTP:一台內部主機向可信來源校時,其他設備跟它同步;目的是讓日誌能對齊、能當證據,不是為了機密性。
- 保護:產生當下即時送到另一台、由不同人管理的伺服器;雜湊、簽章或 WORM 防竄改;依法規保存並做好輪替與容量監控。保護防竄改,加密防偷看。
- 必背代碼:4624 成功、4625 失敗、4720 建帳號、4732 加入本機群組、4672 特權登入、1102 清除稽核紀錄;Linux 看 auth.log 或 secure,wtmp/btmp/lastlog 分別是成功、失敗、最近一次登入。
- SIEM:收集 → 清理 → 正規化 → 關聯 → 告警;不自動阻擋,那是 SOAR。UEBA 抓行為偏離,SOC 是用這些工具的單位。告警疲勞的根源是規則設計失當。