National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 78 24°C PM2.5 18
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 16

日誌與偵測

由紀錄找出攻擊痕跡與偵測規則的取捨
Interaction 30 minute(s)

Learning Objectives

  • 列出資安日誌應記錄的事件與欄位,以及不應記錄的資料
  • 說明時間同步與日誌完整性對調查的影響
  • 以過濾與彙總從存取日誌找出撞庫、注入嘗試與資料外洩的痕跡,並建立時間軸
  • 調整偵測規則,說明誤報與漏報之間的取捨

資安日誌的用途

校園網站的管理者接到通知,部分成績資料可能已經外流。接下來需要回答的問題很具體:事情從何時開始、來源是哪裡、使用了哪個帳號、取走了多少資料、現在是否仍在進行。這些問題能否回答,取決於事件發生之前系統記錄了什麼。

OWASP Top 10:2025 將「安全日誌與告警失效」列為第 9 項,並指出缺少日誌與監控時,攻擊與入侵無從偵測;缺少告警時,事件發生當下很難快速回應。

日誌的作用有三項:偵測(發現正在發生的異常)、調查(事後重建經過與影響範圍)、問責(確認操作由誰執行)。日誌本身不會阻止攻擊,它的價值在於縮短發現問題所需的時間,以及讓後續的處置有依據。

本課的模擬環境。 本課的日誌由程式產生,帳號、事件與 IP 全部虛構。分析真實系統的日誌需要取得管理者的授權,日誌本身也可能含有個人資料(第 1 課)。

應記錄的事件與欄位

OWASP Logging Cheat Sheet 建議記錄的事件包括:輸入驗證失敗、認證的成功與失敗、授權失敗、工作階段管理失敗、應用程式錯誤、啟動與關閉,以及高風險操作,例如使用者管理、管理員操作、敏感資料的存取、資料匯入與匯出、檔案上傳。

每一筆事件應該能回答四個問題:

問題 欄位範例
何時(when) 事件時間、紀錄時間、串連同一次互動的識別碼
何處(where) 應用程式名稱與版本、主機、服務、網址與 HTTP 方法
誰(who) 來源位址、使用者身分(已登入或已知時)
什麼(what) 事件類型、嚴重程度、結果、原因、回傳的狀態碼

不應直接記錄的資料同樣重要。日誌通常保存較久、存取的人也較多,一旦寫入敏感資料,日誌本身就成為外洩的來源。OWASP 列舉的項目包括密碼、存取權杖、工作階段識別碼(需要追蹤時可以記錄雜湊值)、資料庫連線字串、加密金鑰、付款卡資料、健康資料與身分證號等敏感個人資料。姓名、電話、信箱與內部網路名稱與位址對調查有用,但要特別處理,必要時去識別化。

實作上還有一個容易忽略的細節:使用者偶爾會把密碼誤填到帳號欄位。若登入失敗時原樣記錄帳號欄位,密碼就可能進入日誌。

互動練習:日誌欄位的處理方式

某網站要記錄登入與資料匯出事件。請為每個欄位選擇處理方式後按「檢查」。部分欄位有多種可接受的作法。

時間同步與日誌完整性

時間同步。 調查經常要比對網站、資料庫、防火牆與認證服務的日誌。若各機器的時鐘不同步,事件的先後順序就可能判斷錯誤。OWASP 的建議是同步所有伺服器與裝置的時間,實務上通常使用 NTP;無法同步的來源,例如使用者裝置,則嘗試估計時間差或標註時間的可信度。本平台與本課的日誌都以 UTC 記錄,顯示時才轉換為當地時間。

日誌完整性。 入侵者可能修改或刪除紀錄,所以日誌需要受到保護:

  • 紀錄盡早傳送到另一台主機或唯讀媒體,應用程式主機被入侵時紀錄才不會一併遭到竄改
  • 使用只能附加的儲存方式,並設置竄改偵測
  • 限制讀取權限,記錄對日誌的存取
  • 偵測日誌停止寫入的情況,這本身也可能是攻擊的跡象
  • 依規定的期限保存,不提早銷毀,也不超過期限保留

日誌注入。 日誌常常包含使用者輸入。若輸入含有換行字元,攻擊者可以偽造看起來正常的紀錄。OWASP 建議中和 CR、LF 與分隔字元,優先使用 JSON 等結構化格式,並限制寫入的長度。這與第 7、8 課是同一類問題:資料被當成了結構的一部分。

常見攻擊在日誌中的特徵

下列特徵可以作為調查的起點。它們只是線索,每一項都可能由正常行為造成,判定前要結合其他資料。

活動 常見特徵 可能的正常解釋
撞庫(credential stuffing,第 5 課) 同一來源短時間內大量登入失敗,涉及許多不同帳號 宿舍或校園網路共用一個對外 IP
暴力破解 同一帳號反覆失敗 使用者忘記密碼、裝置儲存了舊密碼
SQL 注入嘗試(第 7 課) 查詢參數含單引號與 SQL 關鍵字,語句連續變化,伴隨 5xx 錯誤 姓名含撇號的正常搜尋
資料外洩 匯出端點被連續存取,傳輸量明顯高於平常,帳號的來源改變 教師的正常匯出

調查的基本作法是:先彙總找出異常的來源,再逐筆確認內容,把關鍵事件排成時間軸。時間軸要能看出因果順序,例如「取得帳號」發生在「匯出資料」之前。

互動練習:從存取日誌重建事件

下方是一天的虛構存取日誌,約 800 筆。請以過濾與彙總回答問題。點選列中的 IP 或帳號可以直接設為過濾條件。

偵測規則與告警

人工逐筆閱讀只適用於事後調查。平時需要由程式依規則發出告警,例如「同一來源在 10 分鐘內登入失敗達到 20 次」。規則的判斷有四種結果:

實際是攻擊 實際是正常行為
發出告警 偵測成功 誤報(false positive)
沒有告警 漏報(false negative) 正確不告警

降低門檻會減少漏報,但誤報增加;提高門檻則相反。兩者不能同時任意降低,要依代價決定。誤報的代價不只是浪費時間:OWASP 指出,過多誤報會使重要告警難以分辨,真正的威脅因此較晚被注意或遭到忽略。漏報的代價則是攻擊持續進行而沒有人知道。

改變門檻之外,也可以改變規則觀察的角度。下方的練習提供兩種規則:計算失敗次數,以及計算不同帳號數。

互動練習:偵測規則的誤報與漏報

資料來自上一個練習的同一份日誌,只取登入失敗事件。折線圖顯示目前的規則與視窗下,誤報與漏報隨門檻的變化。

重點整理

  • 日誌用於偵測、調查與問責,本身不會阻止攻擊
  • 記錄認證、授權失敗、高風險操作等事件,並能回答何時、何處、誰、什麼
  • 密碼一律不記錄;權杖、工作階段識別碼、連線字串與敏感個人資料不以明文記錄
  • 時間要同步,日誌要防止竄改與注入,也要偵測日誌停止寫入的情況
  • 特徵只是線索,判定前要比對其他資料並建立時間軸
  • 誤報與漏報之間存在取捨;任何單一規則都有盲點,分散式活動不會在以來源為單位的規則中出現
  • 沒有告警不代表沒有事件:部分攻擊不會在一般日誌留下痕跡(第 18 課的 Heartbleed)

下一課討論確認發生事件之後的處理流程。

小測驗

1.

工程師為了除錯,把整個登入請求的內容寫入日誌。這樣做的主要問題是什麼?

2.

網站主機與資料庫主機的時鐘相差 5 分鐘,對事件調查的主要影響是什麼?

3.

日誌中出現一筆查詢 /courses?q=O'Brien,狀態碼 200。可以得到什麼結論?

4.

把偵測規則的門檻從 20 次降到 5 次,最可能的結果是什麼?

5.

日誌欄位含有使用者輸入時,為什麼要中和換行字元?

6.

下列關於集中式日誌與告警的敘述,何者正確?

第 1 次作答
這一課完成了!
Next lesson:事件應變
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。