Elastic Machine Learning 基礎介紹 機器學習的名詞、相關流程與案例介紹

me
林彥成
2020-09-21 | 4 min.
文章目錄
  1. 1. Elastic Machine Learning 基礎介紹
  2. 2. 異常偵測應用
    1. 2.1. Machine learning job
    2. 2.2. 常見用法案例
    3. 2.3. Elastic Machine Learning 配置
    4. 2.4. Elastic Machine Learning Job

Elastic Machine Learning 基礎介紹

這篇文章會介紹 Elastic Machine Learning 中的名詞、相關流程與案例介紹,機器學習解決問題主要分兩種

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

機器學習使用的方法:

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

資料:

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

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

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

Elastic Machine Learning 異常偵測
AnomalyDetection

異常偵測應用

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

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 異常行為決策樹
AnomalyDetectionTaxonomy

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

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

異常行為偵測流程
AnomalyDetectionSequence

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

透過機率預測數據應該會出現在哪裏
ExpectedValues

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

Elastic Machine Learning 配置

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

  • 連到 kibana

  • Management ➔ License Management 開始 30 天試用

    開啟 30 天試用
    License

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

  • Machine Learning ➔ Data Visualizer

  • 選取想要查看的 Index

    選取 Index
    SelectIndex

    相關統計資料,先點選 Use full filebeat-* data > Observations1

    詳細到可以看出從哪個網域、IP 連進來的
    Observations2

Elastic Machine Learning Job

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

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

設定篩選條件
IncludesFailAndInvalid

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

  • 從側面選單到 Machine Learning

  • 在 Overview tab 選擇 Create Job

  • 選擇我們剛剛儲存的 Search

    SelectIndex

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

    CreateJob

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

    UseWizard

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

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

    MultiMetricJob

  • Multi 可以多配置

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

    CreateJobDone

  • 最後執行這個 Job

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

    權重分數在左側
    AnomalyExplorer

    標示異常值
    ExploreResults


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

share