Skip to main content
網路安全

什麼是 eBPF(Extended Berkeley Packet Filter)?

eBPF 可增強安全監控能力。了解這項技術如何提升您系統中的可觀測性與效能。

作者 SentinelOne
什麼是 eBPF(Extended Berkeley Packet Filter)?

Extended Berkeley Packet Filter(eBPF)是一項強大的技術,可讓開發人員在不變更 Linux 核心原始碼的情況下,於 Linux 核心中執行沙箱化程式。本指南將探討 eBPF 在網路、安全性與效能監控方面的應用。

了解 eBPF 的優勢,以及它如何增強現代系統中的可觀測性與控制能力。理解 eBPF 對於在網路安全中運用其能力至關重要。

BPF 的簡史

Berkeley Packet Filters(BPF)創建於 1992 年,旨在分析與篩選網路流量。當時,網際網路仍處於早期階段,工程師有興趣尋找方法,以更深入了解流經其網路的流量。BPF 的設計目的是在不必修改組織中所有伺服器的程式碼,或分支核心程式碼並以檢測指令更新的情況下,提供一種達成此目的的方法。

應用於網路分析時,BPF 可用於記錄伺服器上所有傳入與傳出的 TCP 通訊。雖然這種方法比修改所有伺服器的程式碼所需的工作更少,但仍需要投入大量心力來建置程式碼,並將其部署到組織中的所有伺服器上。

BPF 也可用於篩選網路流量。然而,它只能接受標頭中帶有已簽署雜湊的封包。當傳入封包到達時,BPF 程式會啟動並檢查標頭,以查看是否存在預期值。根據結果,該封包將被接受或丟棄。

如今,BPF 的用途已不僅限於分析與篩選網路流量。它已擴充以提供更多功能並支援 64 位元組,從而允許收集與儲存更多資訊。

之後,隨著核心 3.18 的發布,Extended Berkeley Packet Filters(eBPF)得以註冊幾乎所有核心事件。作為原始 BPF 的擴充,eBPF 可儲存與交換更多資料,並可用於各種用途,包括監控、追蹤與最佳化核心功能。

eBPF 的引入

從歷史角度來看,開發人員一直都在作業系統內部工作,以實作並觀察網路功能,利用核心具備的特權能力來監控與控制整個系統。作業系統核心的限制在於其缺乏演進——在作業系統層級進行創新的能力,相較於其外部所見的能力來得較低。此外,開發人員新增模組或修改核心原始碼,意味著必須艱難地穿越抽象化層與複雜基礎架構,而這些都難以除錯。當 eBFP 於 2014 年首次推出時,它解決了所有這些問題。

由於 eBPF 的運作方式是允許沙箱化程式在作業系統內執行,開發人員因此能夠在執行階段為作業系統新增功能。它是一種在核心內執行的虛擬機器,為執行位元碼程式提供沙箱化環境。eBPF 虛擬機器的設計簡單、高效且安全,具有一組受限的指令,且只能存取一組受限制的資源。

自問世以來,eBPF 已持續演進,並可見於推動各式各樣的使用案例。eBPF 在雲端原生環境中促成了高效能網路與負載平衡的創新,以低額外負擔成本為安全領導者提供細緻的安全資料,並支援組織的預防性安全工作。

了解 eBFP 的運作方式

從高層次來看,eBPF 的運作方式是讓開發人員撰寫稱為 eBPF 程式的小型程式,並將其附加到核心中的各個位置,以攔截與處理資料。這些程式通常以 C 程式語言的子集撰寫,接著編譯為 eBPF 位元碼,再載入核心並執行。與傳統核心模組不同,eBPF 程式易於部署與管理,因為它們不需要修改核心原始碼或重新編譯。

eBPF 程式在 Linux 核心內執行時,會遵循一組特定步驟:

  1. eBPF 程式撰寫完成後,會被編譯為 eBPF 位元碼。產生的位元碼是 eBPF 程式的低階、平台無關表示形式,可在核心內執行。
  2. 接著,eBPF 位元碼會被載入核心。載入過程包括驗證位元碼的安全性以及與執行中核心的相容性,並配置執行 eBPF 程式所需的資源。
  3. eBPF 程式載入後,即可附加到特定核心事件,例如網路封包或系統呼叫(syscall)。
  4. 當附加的核心事件發生時,eBPF 程式會由核心自動執行。eBPF 程式可使用標準 C 程式設計結構(例如迴圈與條件陳述式)來存取及修改與該事件相關的資料。
  5. 在 eBPF 程式處理完資料後,它可選擇將結果回傳給核心。例如,附加到網路介面的 eBPF 程式若符合特定條件,可能會丟棄封包;或者附加到系統呼叫的 eBPF 程式,可能會在允許呼叫繼續之前修改傳遞給該呼叫的引數。
  6. 當不再需要 eBPF 程式時,可將其從核心卸載,釋放配置給 eBPF 程式的資源,並確保在附加的核心事件發生時不再執行。

eBPF 的關鍵特性之一是其安全性保證。eBPF 程式在核心內受限制的虛擬機器中執行,無法直接存取或修改核心資料結構,也無法造成當機或 安全漏洞。此外,eBPF 程式還需接受各種執行階段檢查,例如邊界檢查與型別檢查,以確保它們不會違反記憶體安全或其他安全屬性。

探討 eBPF 的優勢

在當今世界,開發人員使用 eBPF 來提升其系統的安全性、效能與穩定性。由於具備眾多優勢,eBPF 已成為 Linux 生態系中極受歡迎的技術。

首先,組織使用 eBPF 來確保速度與效能。由於 eBPF 程式是在 Linux 核心內執行,因此與傳統使用者空間程式相比,其額外負擔極低。在低延遲與高效能至關重要的情況下,eBPF 是完成任務的理想選擇。

eBPF 程式也讓技術團隊能保持彈性。由於這些程式可附加到廣泛的核心事件,包括網路封包、syscall 與核心函式,因此可用於廣泛的使用案例,包括網路監控、安全分析與效能分析。eBPF 程式可從核心動態載入與卸載,這表示它們可用於除錯或疑難排解等短期任務。

使用 eBPF 的開發人員能夠撰寫先前因技術限制或安全疑慮而無法實現的新功能。透過 eBPF,他們可以撰寫應用程式,以利用 Raspberry Pi 或其他 ARM 架構系統等嵌入式裝置上的硬體加速。

eBPF 採用即時(JIT)編譯,而非像傳統軟體套件那樣預先編譯,因此開發人員可使用 eBPF 建立其應用程式或服務,而不犧牲效能或可擴充性。與其他解決方案相比,這項技術所需的設定時間極少,因此開發人員能以更少的工作量,快速將其應用程式部署到正式環境中。

eBPF 使用案例

eBPF 最常用於四大主要使用案例:安全性、網路、追蹤與可觀測性。

  • 安全性 – 一般而言,在安全領域中,系統會獨立處理 syscall 篩選的各個面向。Syscall 篩選器可讓應用程式精確定義允許執行哪些 syscall。eBPF 透過促進對所有面向的可視性來支援更佳的系統安全。藉由解譯所有 syscall,並提供所有網路作業的封包與 Socket 層級檢視,安全領導者便能取得所需情境,以提升其對系統的控制程度。
  • 網路 – eBPF 憑藉其效率與可程式化能力,支援封包處理需求。它透過新增額外的通訊協定剖析器與程式轉送邏輯來滿足新需求,而無需離開 Linux 核心的封包處理情境。
  • 追蹤 – 開發人員將 eBPF 程式附加到追蹤點,以及核心與使用者應用程式探針點,以取得對所有系統應用程式執行階段行為的可視性。eBPF 為系統與應用程式提供情境;兩者結合可為技術團隊帶來強大的洞察,協助其排解效能問題。
  • 可觀測性 – eBPF 用於收集核心內的系統指標彙總,技術團隊可根據廣泛的來源加以自訂。相較於必須依賴耗時且龐大的取樣資料匯出,eBPF 透過僅收集絕對必要的資料來提升可視性深度,為組織節省系統額外負擔成本。

eBPF 如何強化現代雲端安全措施

Cloud Workload Protection Platform(CWPP)代理程式是在建立強健的 雲端安全 策略時不可或缺的要素。它可針對執行階段威脅提供即時防護,例如 勒索軟體 與零時差 攻擊,這使其有別於其他安全控制。對於持續在全球組織中廣泛採用的雲端系統而言,eBPF 大幅提升了效能與可擴充性。

CWPP 代理程式會記錄 工作負載 遙測資料,為鑑識分析提供寶貴資訊。相較之下,側掃描解決方案會檢查雲端運算執行個體的儲存磁碟區,但每天只能執行一次,且缺乏程序層級可視性,導致即時防護與準確性受限。在 CWPP 計畫中使用 eBPF 架構可帶來多項優勢,包括以下幾點:

  • 營運穩定性 – 在核心中執行程式碼是一項重大風險,因為這會提高將漏洞引入核心並使整個系統不穩定的可能性。eBPF 架構包含 JIT 編譯器等安全控制機制,以避免核心當機。
  • 系統效能 – 在核心與使用者空間之間傳輸資料通常速度較慢,且會產生效能負擔。eBPF 架構讓團隊能夠觀察核心行為,並在將部分結果傳回使用者空間之前,先在核心內進行分析,從而降低所需負擔。
  • 業務敏捷性 – 透過在使用者空間中運作,eBPF 為 DevOps 團隊與供應商提供更高的彈性與敏捷性。 DevOps 可以專注於創新,而無需擔心核心相依性問題;供應商也能將重心放在創新而非維護上。這將帶來持續創新的循環,並改善客戶體驗。
Callout Background Image Gradient

Singularity™ Platform

Elevate your security posture with real-time detection, machine-speed response, and total visibility of your entire digital environment.

摘要

eBPF 已迅速成為廣泛應用的重要技術,涵蓋從網路與安全到可觀測性與效能分析等領域。其彈性與安全保證使其成為自訂與擴充 Linux 核心的強大工具,而隨著更多使用案例被發掘與開發,其普及度與採用率也持續成長。

領先組織持續投資於 SentinelOne 的 CWPP 等解決方案,Singularity Cloud Workload Security,其已 內建這些優勢 於 eBPF 架構中。隨著數位環境持續變得更加動態且複雜,且大量工作負載在共享基礎架構上執行,eBPF 可協助提升可視性與控制能力,讓安全團隊能更有效地監控與保護工作負載。

立即聯絡我們,了解 SentinelOne 的安全解決方案如何運用 eBPF 的優勢,在多元環境中提升效能與效率。立即與我們的安全專家預約示範。

Extended Berkeley Packet Filter 常見問題

eBPF 是一種安全的核心內虛擬機器,可讓您在不變更 Linux 核心原始碼或新增模組的情況下,將自訂位元組碼載入 Linux 核心。執行前,核心驗證器會檢查 eBPF 程式的安全性(無無界迴圈、無越界記憶體存取),然後透過 JIT 將其編譯,以達到接近原生的速度。它由傳統 BPF 演進而來,不僅支援封包過濾,也支援追蹤、可觀測性等功能。

eBPF 可支援網路、追蹤及定義使用者追蹤點等應用程式。它可驅動:

  • 高效能封包處理(例如 XDP)
  • 對系統呼叫與應用程式行為進行深度可觀測性與分析
  • 即時安全監控與原則強制執行
  • Kubernetes 中的容器層級可視性與網路原則
  • 用於負載平衡、指標彙總與過濾的自訂核心內邏輯。

透過在核心內容中執行,eBPF 能以極低負擔且無需重新啟動核心的方式,即時掌握系統呼叫、網路流量與程序事件的可視性。其沙箱可防止不穩定程式碼,而 map 則讓使用者空間工具能擷取遙測資料。

這種組合可及早偵測橫向移動或未經授權的檔案存取等威脅,並可在核心事件路徑中立即強制執行封鎖或終止原則。

eBPF 並非專為安全而建,因此存在取捨:記憶體與指令限制可能導致事件遺失;對已載入程式沒有內建防竄改機制;且某些「helper」函式(例如 bpf_probe_write_user)可能遭濫用以進行權限提升。

較舊的核心可能缺少驗證器修補,因此若權限未受到嚴格控管,設定錯誤或惡意的 eBPF 可能成為 rootkit 載體。

常見的 eBPF 部署包括:

  • 網路封包過濾與負載平衡
  • 用於效能分析的應用程式與核心追蹤
  • 入侵偵測與防護
  • Kubernetes 中的容器安全與微分段
  • 用於可觀測性平台的自訂指標收集與核心內彙總。

在部署 eBPF 解決方案之前,請確認您的核心版本支援所需的 hook,且驗證器已具備安全修補。分配足夠的 CPU 與記憶體餘裕,以避免事件遺失。定義嚴格的能力限制(例如停用非特權 BPF)、審查第三方 eBPF 模組以防止供應鏈風險,並以稽核模式執行新原則,在強制封鎖或終止前衡量其影響。

SentinelOne 使用 eBFP 架構,讓您的雲端工作負載防護更加穩定可靠。它可提供即時威脅偵測與回應、核心層級活動的深度可視性,並能對抗零時差漏洞、勒索軟體及其他惡意程序等執行階段威脅。  您可以無縫更新主機 OS 映像,而無需擔心相容性問題。

SentinelOne Singularity XDR 可執行進階分析並進行鑑識調查。它適用於 AWS、Azure、Google Cloud 和私有雲等各種雲端環境。此外,它支援廣泛的 Linux 發行版本、容器執行階段、Windows 伺服器及 Kubernetes。

深入了解 網路安全

Decorative background gradient

體驗最先進的資安平台

了解全球最智慧、最自主的資安平台如何在今日及未來保護您的組織。
Dark dashboard UI with purple-highlighted nav, summary cards showing 149, 7, 78, 56, 1.2 h, and a status table with linked purple text