Elastic ML 異常偵測實戰 時間序列分析與高品質數據建模

me
林彥成
2020-09-21 | 6 min.
文章目錄
  1. 1. 什麼是 Elastic Machine Learning (異常偵測)?
  2. 2. Elastic Machine Learning 基礎介紹
  3. 3. 異常偵測應用
    1. 3.1. Machine learning job
    2. 3.2. 常見用法案例
    3. 3.3. Elastic Machine Learning 配置
    4. 3.4. Elastic Machine Learning Job
    5. 3.5. 為什麼現代維運需要 AIOps?
  4. 4. 異常偵測的核心:非監督式學習
    1. 4.1. 為什麼選擇非監督式學習?
  5. 5. FAQ:Elastic Machine Learning 常見問題
    1. 5.1. Q1:AIOps 如何有效減少維運中的「告警疲勞」?
    2. 5.2. Q2:在 Kibana 設定 ML Job 時,Bucket Span 大小該如何選擇?
    3. 5.3. Q3:為什麼資安領域特別推崇「非監督式學習」?
  6. 6. 結語:通往高品質自動化維運的捷徑

什麼是 Elastic Machine Learning (異常偵測)?

Elastic Machine Learning 是一款基於 非監督式學習 的強大工具,專為處理 時間序列分析 數據而設計。其核心定義在於自動學習數據的「正常行為模式」,並建立動態基準線 (Dynamic Baselines),進而識別出偏離預期的異常偵測訊號。與傳統設定靜態閥值的告警方式不同,Elastic ML 能有效減少告警疲勞,協助維運團隊實踐 AIOps。透過在 Kibana 中設定 ML Job,使用者可以監控流量波動、識別資安攻擊(如 DNS 掃描)或預測未來趨勢。其優勢在於無需手動標記資料,即可在海量日誌中快速定位「真正」的系統威脅。


Elastic Machine Learning 基礎介紹

本文將深入淺出介紹 Elastic Machine Learning 的核心概念,特別著重於其在異常偵測領域的應用。我們將探討機器學習的名詞術語、相關流程,並解析如何透過時間序列分析,在Kibana中設定與執行機器學習任務,實現高效的數據監控與資安分析。機器學習解決問題主要分兩種:

  • 分群、分類 (Classification): 將資料分成不同的群組,群組內的成員都是類似的
  • 回歸 (Regression): 了解兩個或多個變數間是否相關,還有相關方向與強度

機器學習使用的方法:

  • 監督學習 (Supervised Learning): 輸入和輸出之間存在某一種關係或模式,要先把資料都進行標記,像是 “幾歲” 的 “女孩子” 購買 “名牌包” 比例最高
  • 非監督學習 (Unsupervised Learning ): 不需要先進行標記,輸入數據,依據不同變量,找出相似或相關的群,傳統一定會上到的例子就是買尿布會順便買啤酒

資料:

  • 時間序列資料 (Time Series)
  • 面板數據 (Panel Data)
  • 橫截面數據 (Cross Section)

Elastic Machine Learning 中的資料異常偵測是透過非監督學習來分類時間序列的資料,可以回答像是下面的問題

  • 網路正在被攻擊嗎?
  • 網路系統有在恢復中嗎?
  • 哪些類型的使用者現在暴露在危險中?

Elastic Machine Learning 異常偵測
Elastic Machine Learning 異常偵測圖表

異常偵測應用

現在的系統、網路架構越來越複雜,攻擊行為也越來越多樣,難以透過設定規則、資料標記來逐一處理,所以透過收集相關紀錄後分析也許是一個比較好的解決方式,網路安全主要蒐集以下資訊

SSH logs 可以透過 Filebeat 紀錄

  • Timestamp
  • SSH Server Host Name
  • SSh Client IP
  • User
  • Authentication Method
  • IP Geo Information

DNS Traffic

  • Timestamp
  • Client IP
  • Source Host
  • Destination IP
  • Highest Registered Domain
  • Subdomain

Elastic Machine Learning 透過非監督學習來分類時間序列的資料後,其實可以大致分出項基本的決策樹

Elastic Machine Learning 異常行為決策樹
Elastic Machine Learning 異常行為決策樹

偵測異常的行為流程大致如下

  • 將 SIEM 中的資料餵給機器學習任務
  • 機器學習開始運算,會透過相關模型運算更新模型
  • 儲存計算結果提供 Kibana 查看
  • 端點防護工具監看數據或是設置告警機制

異常行為偵測流程
異常行為偵測流程示意圖

Machine learning job

使用上,需要先準備資料,資料部分則可以分析 Elasticsearch 中的或是額外透過 API 餵進來。

有資料後需要建立任務,任務可以透過 API 或是 Kibana UI 建立,一個機器學習任務包含配置資訊及所需的 Metadata,配置流程大致如下

  • Job Type
    • Single Metric
    • Multi Metric: 可以看成跑了好幾個 Single 的概念
    • Advanced
    • Population
  • 設定 Data Feed: 提供 Elasticsearch 中時間序列資料
    • Index Pattern
    • Query
    • Time Range
  • 設定 buckets: buckets 是切割時間序列資料的單位,通常是五分鐘到一小時,設定太長會增加運算負擔也較難看出結果,建議依照資料型態決定,最後每個 bucket 都會得到計算後的分數

    Bucket 中的最大值
    時間序列資料 Bucket 中的最大值示意圖

  • 設定 Detectors: 每個 Detector 會針對資料中的欄位套用一種分析函式,像是最大最小、平均、極端值,最大就會找出某個 bucket 中的最大
  • 設定 Influencer: 建議設置但也不能設定太多,因為太多會增加閱讀難度
    • 方便找兇手,像是如果可以從 IP 看出可疑活動就可以直接設定 IP
    • 協助簡化、聚合結果資料
  • 執行並查看 Job 結果
    • Single Metric Viewer
    • Anomaly Explorer
  • 監看即時資料
    • 排程
    • Query
    • Condition
    • Action

常見用法案例

  • low_request_rate: 透過 low_count function 去找到比較低流量的資料
  • response_code_rates: 透過 count function 並透過 code 切割資料去找到特殊 code 像是 404 的相關異常
  • url_scanning: 透過 high_distinct_count function,最後透過可以透過相關分布看出是不是有哪些 IP 常打特定 URL

透過機率預測數據應該會出現在哪裏
Elastic Machine Learning 預期值與實際值數據圖

接下來會示範如何設定與使用 Elastic Machine Learning (機器學習),機器學習讓我們能夠更快的分析與了解資料的狀況,提供異常的告警,甚至是未來數據的預測。

Elastic Machine Learning 配置

如果只是啟用而沒有進行相關配置的話就能夠單純的看到目前資料的相關統計

  • 連到 kibana

  • Management ➔ License Management 開始 30 天試用

    開啟 30 天試用
    Kibana License Management 啟用 30 天試用

  • 啟用之後就可以先用 ML 的資料視覺化工具看目前資料狀況

  • Machine Learning ➔ Data Visualizer

  • 選取想要查看的 Index

    選取 Index
    Kibana Machine Learning 選擇 Index 介面

    相關統計資料,先點選 Use full filebeat-* data
    Kibana Machine Learning Data Visualizer 顯示數據概觀

    詳細到可以看出從哪個網域、IP 連進來的
    Kibana Machine Learning Data Visualizer 顯示數據詳細資訊

Elastic Machine Learning Job

要進行機器學習分析,首先我們要建立一個 Job 去偵測可疑的登入行為,建立前要先預備資料,因為這次只需要 failed 或是 invalid 的資料,先到 Discover 透過 filter 設定以下篩選條件,最後記得把這個 Search 的結果儲存。

  • system.auth.ssh.event
  • is one of
  • [Failed, Invalid]

設定篩選條件
Kibana Discover 篩選條件設定:Failed 與 Invalid 登入嘗試

然後就可以按教學影片去建立一個 Job,這裡提供舊版的影片,包含 Single MetricMulti Metric 的過程,實際上流程差不多只是介面上稍有不同,這裡也簡單操作一次步驟如下:

  • 從側面選單到 Machine Learning

  • 在 Overview tab 選擇 Create Job

  • 選擇我們剛剛儲存的 Search

    Kibana Machine Learning 選擇 Index 介面

  • 選擇時間區間的時候預設可能會沒有資料,可以先點選 Use full filebeat-* data

    Kibana Machine Learning Job 建立介面截圖:選擇時間區間

  • 選擇 Use a wizard 中的 Single 或是 Multi Metric

    Kibana Machine Learning Job 建立介面截圖:選擇 Single 或 Multi Metric Wizard

  • Pick fields 欄位選 High count (Event rate)

  • Bucket Span 填 5m: 每次迭代運算的時間間隔

    Kibana Machine Learning Multi-Metric Job 設定介面

  • Multi 可以多配置

    • Split field: system.auth.hostname,設置後會自動加入 influencers
    • influencers: 可以補上 system.auth.user 及 system.auth.ssh.ip
      • 讓抓到兇手更簡單
      • let 結果更簡化聚合
  • 在 Job ID 給一個命名

    Kibana Machine Learning Job 建立完成介面截圖

  • 最後執行這個 Job

  • 結果會包含計算權重分數,透過圖表標示異常值

    權重分數在左側
    Kibana Anomaly Explorer 顯示異常值與權重分數

    標示異常值
    Kibana Anomaly Explorer 探索異常結果

為什麼現代維運需要 AIOps?

隨著系統規模的成長,單靠人工設定靜態閥值的告警方式已不再適用。這就是 AIOps (Artificial Intelligence for IT Operations) 興起的原因。高品質的 Elastic Machine Learning 提供了以下價值:

  • 減少告警疲勞: 自動過濾掉正常的波動,僅在真正的「異常」發生時通知。
  • 動態基準線: 系統會學習資料的週期性,自動調整預期範圍。

異常偵測的核心:非監督式學習

Elastic Machine Learning 主要採用 非監督式學習 (Unsupervised Learning) 來處理時間序列資料。

為什麼選擇非監督式學習?

在動態的資安環境中,我們往往不知道「新的攻擊」長什麼樣子。傳統的監督式學習需要標記資料,而非監督式學習則能直接從歷史數據中找出「不尋常的模式」,這對識別未知威脅(Zero-day Attacks)至關重要。


FAQ:Elastic Machine Learning 常見問題

Q1:AIOps 如何有效減少維運中的「告警疲勞」?

A:傳統監控依賴人工設定死板的閥值(如 CPU > 80% 即告警),這常導致環境波動時產生大量無效通知。AIOps 透過 Elastic Machine Learning 異常偵測 建立動態基準線,系統會理解業務的「週期性」(如深夜流量低是正常的)。只有當數據顯著偏離模型預測的範圍時才會觸發告警,讓維運人員能專注於處理真正的故障。

Q2:在 Kibana 設定 ML Job 時,Bucket Span 大小該如何選擇?

A:ML Job 設定 中的 Bucket Span 是計算異常分數的時間單位。如果設得太短(如 1m),雖然偵測敏感但運算負擔大且雜訊多;設得太長(如 1h),則可能稀釋掉短暫的異常攻擊。一般的 Kibana 機器學習實戰 建議設在 5m 到 15m 之間,具體取決於您的資料頻率與想要捕捉的異常粒度。

Q3:為什麼資安領域特別推崇「非監督式學習」?

A:因為黑客的攻擊手段是不斷進化的。監督式學習只能辨識「已知的惡意模式」,但對於新出現的滲透技術往往無能為力。非監督式學習資安 應用則是不斷學習系統的「正常行為」,任何不符合常態的偏差(即使沒被定義過)都會被標記出來,這對於防範 Zero-day 攻擊或內部人員異常操作極具價值。


結語:通往高品質自動化維運的捷徑

掌握 Elastic Machine Learning,本質上是在實踐維運流程的「斷捨離」——捨棄繁瑣的手動監控,轉向高品質的自動化偵測。透過 Kibana 的直觀配置,開發者能從海量數據中快速提煉出有價值的異常訊號,確保系統在複雜多變的環境下依然穩健運行。


喜歡這篇文章,請幫忙拍拍手喔 🤣