Elastic Defend 如何優化?資安團隊兼顧效能與成本的關鍵策略

在資安運營中心(SOC),資料固然重要,但過多反而會帶來問題,從每個端點收集每個事件不僅成本高,也可能影響工作站與叢集效能。

在 Elastic,我們將資安團隊視為「零號客戶(Customer Zero)」,所有產品皆使用最新版本,Elastic Defend 會在工作站群中部署,並在新版本釋出後 24 小時內更新。

本文說明 Elastic 資安團隊如何最佳化端點資料收集,透過事件篩選與進階策略提升效能並降低成本。

推薦閲讀如何讓 Elastic Security 為您的公司創造價值?

什麼是 Elastic Defend?

Elastic Defend 是功能強大的 端點偵測與回應(EDR)代理程式,提供完整的進階威脅防護,包括預防、偵測與回應。

除了端點本機偵測與警示,還會收集豐富的事件遙測資料並送至 Elastic Stack,包括:

  • 程序執行、網路連線、DNS 事件
  • USB 裝置事件
  • DLL 與驅動程式載入
  • API 事件、檔案系統變更、註冊表修改

從版本 8.3.0 起,Elastic 預設啟用事件篩選(Event Filtering),會自動過濾已知良性系統事件(可在進階策略中關閉)。除了內建篩選之外,你也可以新增自訂事件篩選,進一步降低資料量與成本。

透過 事件篩選進階策略設定(Advanced Policy Settings),Elastic 資安團隊大幅減少噪訊、提升叢集效能,同時節省儲存成本,維持穩健的資安防護。跟隨這些策略,你只需數小時操作,就能顯著降低 EDR 成本。

分散式工作團隊與端點挑戰

Elastic 採用遠端優先策略,團隊成員分布在全球 43 個國家。

近一半員工是開發人員或工程師,使用 Mac、Windows 和 Linux 工作站進行軟體編譯、客製化 Linux 核心建置,甚至在工作站上透過 Kubernetes 運行 Elasticsearch 叢集,產生大量良性但噪訊多的檔案與程序活動。

最初部署 Elastic Defend 時,我們先在少數工作站試點,了解事件量與噪訊來源,逐步每週增加更多工作站。若未啟用事件篩選,每台工作站每小時平均產生 48,000 個事件,其中多數來自良性但噪訊高的管理軟體,如 Qualys、Jamf、Intune。我們需要策略來過濾雜訊,同時避免資安分析盲點。

步驟 1:辨識雜訊事件

在尋找噪訊事件時,通常有兩種類型需要注意:

  1. 大部分工作站都會產生的軟體事件
  2. 單一主機產生的事件遠高於其他主機

建議先從第一類著手,因為篩選後對整體影響最大。常見來源包括 MDM 代理程式或其他持續執行相同良性操作的應用程式,如寫入日誌或透過網路傳送日誌到叢集。

若單一主機事件量異常,通常是設定錯誤或程式漏洞,最好直接修正主機問題,而非只加事件篩選。例如,我們曾發現一台 Linux 系統的腳本持續重啟,每秒崩潰數千次,修正後不僅降低噪訊,也提升系統效能。

對於只在個別主機安裝的軟體,可針對該主機使用事件篩選,常見於單一伺服器(如資料庫或 Web 伺服器)產生大量網路或檔案事件。

在 ES|QL 查詢中,我們使用 logs-endpoint.events* 索引模式,這是 Elastic Defend 預設用來儲存端點事件的索引。若使用自訂設定或跨叢集搜尋,索引模式可能不同。

最噪訊的事件類別與操作:使用這個查詢找出產生最多警示的類別與操作,是篩選噪訊的最佳起點。

FROM logs-endpoint.events*
| STATS event_count = count(*) BY event.category, event.action
| SORT event_count DESC
| LIMIT 10
| KEEP event.category, event.action, event_count

10 大噪訊主機:這個查詢可以幫助你找出產生最多事件的工作站或伺服器。

FROM logs-endpoint.events*
| STATS event_count = count(*) BY host.id, host.name
| SORT event_count DESC
| LIMIT 10
| KEEP host.id, host.name, event_count

單一主機的噪訊事件:當你找出噪訊主機後,可使用此查詢進一步分析,找出造成大量事件的特定程序、指令列或檔案路徑。你可以在以下任何查詢中加入| WHERE host.id == "{HOST_ID}" 篩選,以聚焦單一主機的事件。

FROM logs-endpoint.events*
| WHERE host.id == "{HOST_ID}"
| STATS event_count = count(*) BY event.category, event.action, process.name, process.command_line, file.path
| SORT event_count DESC
| LIMIT 10
| KEEP process.name, process.command_line, event.category, event.action, file.path, event_count

最噪訊的程序名稱:使用此查詢可找出在整個工作站群中,產生最多事件的應用程式或系統程序。

FROM logs-endpoint.events*
| STATS event_count = count(*) BY process.name
| SORT event_count DESC
| LIMIT 10
| KEEP process.name, event_count

最噪訊的檔案路徑:使用此查詢可找出被頻繁存取或修改的檔案或目錄,通常代表日誌或暫存檔活動。

FROM logs-endpoint.events*
| WHERE event.category == "file"
| STATS event_count = count(*) BY file.path, event.action
| SORT event_count DESC
| LIMIT 10
| KEEP file.path, event.action, event_count

按程序名稱統計的前 10 大網路事件:使用此查詢可找出產生最多網路連線事件的程序,有助於辨識頻繁通訊的代理程式或服務。

FROM logs-endpoint.events*
| WHERE event.category == "network"
| STATS event_count = count(*) BY process.name
| SORT event_count DESC
| LIMIT 10
| KEEP process.name, event_count

按檔案事件統計的前 10 大程序名稱:使用此查詢可找出產生最多檔案系統事件的程序,並將它們與網路或註冊表等其他事件類別區分開來。

FROM logs-endpoint.events*
| WHERE event.category == "file"
| STATS event_count = count(*) BY process.name
| SORT event_count DESC
| LIMIT 10
| KEEP process.name, event_count

步驟 2:精準事件篩選

利用前一步收集的資料,我們在 Elastic Defend 中使用事件篩選,直接在端點過濾特定事件,避免傳送到 Elasticsearch。這不影響惡意程式或端點防護,只能阻止不必要事件送入叢集,同時節省網路頻寬、磁碟空間和 CPU 資源。

篩選範例 1:Elasticsearch 檔案噪訊

在 Elastic,許多使用者會在工作站上自行安裝 Elasticsearch 進行測試或開發。隨著文件被寫入,Elasticsearch 會頻繁產生檔案事件,噪訊較多。每個篩選器依作業系統而異,可能需要針對不同 OS 建立多個版本。

以下是我們 MacOS 版本的事件篩選範例:

篩選範例 2:Linux 日誌檔修改

在 Linux 系統中,日誌檔會持續更新。此篩選器可排除所有.log 檔的修改事件,但仍會保留日誌檔的建立或刪除事件。

篩選範例 3: Docker 執行 ps

在 MacOS 系統安裝 Docker 時,Docker 後端程序會定期執行 ps 命令以取得容器資訊。我們的工作站群每月就觀察到超過 1.53 億次這類事件。此篩選器可將這些事件排除,降低噪訊。

小技巧:在設定篩選器時,可在 UI 的「備註(Comments)」欄位記錄篩選原因,並連結相關工單或調查報告,有助於長期維護。

步驟 3:端點效能最佳化

除了事件篩選外,也可透過 Elastic Defend 策略的進階設定,減少每個事件的大小與生成量,而不影響安全防護。有幾項功能能有效降低 Elastic Agent 的資料量。

禁用多餘雜湊

Elastic Defend 會為檔案事件與警示計算 MD5、SHA-1 與 SHA-256 雜湊。8.18 之前預設會收集三種雜湊,但 8.18 及更新版本預設僅保留 SHA-256。雜湊計算會消耗 CPU 與叢集儲存空間,而 SHA-256 已足夠。

若你使用 8.18 以前的 Elastic Agent,可在整合策略中禁用 MD5 與 SHA-1:

  1. 進入 Integration Policies → Elastic Defend
  2. 點選 Show advanced settings
  3. 在 Windows/macOS/Linux event settings 中將以下值設為 false
    • windows.advanced.events.hash.md5 / sha1
    • linux.advanced.events.hash.md5 / sha1 
    • macos.advanced.events.hash.md5 / sha1 

事件聚合

Elastic Defend 會自動將短暫的程序與網路事件合併成單一事件文件,避免每個程序產生多個 start、fork、end 事件。

此功能對快速啟動與關閉的程序很有用,8.18 及更新版本預設啟用,舊版本可透過進階設定 [linux|mac|windows].advanced.events.aggregate_process 開啟。我們發現啟用後,大幅降低事件量,且不影響事件調查。

成效與影響

經過這些設定,我們在效能與成本上都看到了顯著改善:

  • 降低 CPU 使用率:不再為每個檔案事件計算三種雜湊
  • 減少事件大小:每個 JSON 事件稍微變小,累計可節省大量儲存空間
  • 事件量下降:每台主機每小時事件從 ~48k 降至 ~12k,噪訊減少 75%
  • 成本節省:以 1KB/文件估算,4,000 台主機每天可減少 3.5TB 資料,每月約節省 100TB 儲存空間,省下數千美元(實際節省依設定與叢集環境而異)
  • 改善訊號比:分析師看到的良性事件減少,更容易辨識真正威脅

結論

透過事件篩選與策略優化,我們提升了分析效率、降低成本,並保持完整的端點安全能見度。

將資安團隊視為「零號客戶」證明,積極管理噪訊與優化設定,能在不犧牲安全的前提下節省資源並改善效能。善用 ES|QL、Lens 與事件篩選,即可全面掌控端點資料與防護。

注意:本文描述的功能與發佈時程由 Elastic 全權決定,尚未提供的功能可能延後或不會發佈。

本文翻譯自:How Elastic Infosec Optimizes Defend for Cost and Performance

想了解更多資訊,歡迎聯絡我們,或是 加入歐立威 Line 好友!

Related Posts