這是一本系統(tǒng)講解如何使用eBPF技術構建云原生安全防線的著作,是一本面向eBPF技術愛好者和云安全領域從業(yè)者的實戰(zhàn)寶典,從原理與實踐角度詳述了eBPF技術在云原生安全領域正在發(fā)生的關鍵作用,是作者多年構筑云原生安全縱深防御經(jīng)驗的總結(jié)。
本書詳細闡述了eBPF技術的核心原理以及在云原生安全領域的應用價值,并結(jié)合大量的代碼案例分析,深入探討了在典型的云原生安全需求場景下使用eBPF技術可以幫助實現(xiàn)的安全功能和實踐原理,同時也講述了可能引入的安全風險,幫助讀者從零基礎快速了解eBPF技術,開始eBPF安全編程。
通過閱讀本書,你將了解:
?云原生安全面臨的主要挑戰(zhàn),發(fā)展現(xiàn)狀和理論基礎;
?eBPF技術的基本原理和云原生安全領域的典型應用;
?基于eBPF技術的云原生安全核心開源項目的安裝、使用、基礎架構和實現(xiàn)原理;
?如何使用eBPF技術實現(xiàn)典型的云原生安全需求及實現(xiàn)原理;
?如何將eBPF安全事件關聯(lián)進程、容器和Pod等上下文信息;
?如何使用eBPF技術審計復雜的云原生攻擊手段;
?惡意eBPF程序的典型實現(xiàn)方式以及如何防護和探測此類惡意程序。
(1)作者背景權威:作者是阿里云容器服務技術專家,阿里云容器團隊是國內(nèi)最早在云原生生產(chǎn)環(huán)境中使用eBPF的團隊之一。
(2)作者經(jīng)驗豐富:作者在阿里等互聯(lián)網(wǎng)大廠有十余年的云計算安全工作經(jīng)驗,多年的eBPF實戰(zhàn)經(jīng)驗。
(3)資深專家推薦:阿里云容器服務負責人易立、阿里云高級技術專家李鵬等多位專家高度評價并推薦。
(4)內(nèi)容系統(tǒng)全面:從eBPF工作原理、eBPF在云原生領域應用場景,到知名的eBPF云原生安全項目,再到常見和復雜的云原生安全問題的eBPF技術解決方案,應有盡有。
(5)基于生產(chǎn)環(huán)境:書中所有實戰(zhàn)經(jīng)驗和案例分析,主要來自于自作者在阿里云一線的工作經(jīng)驗總結(jié)。
(6)深度剖析源碼:對eBPF以及Falco、Tracee、Tetragon等云原生安全領域的知名eBPF項目的核心源碼進行了深度剖析。
(7)實戰(zhàn)案例豐富:書中用大量實戰(zhàn)案例講解了如何使用eBPF技術解決常見的安全需求以及應對復雜的攻擊手段。
Preface?前 言
為什么要寫這本書
eBPF技術已經(jīng)成為云原生社區(qū)近年來備受關注的技術話題之一。在云原生領域,越來越多的項目和產(chǎn)品開始使用eBPF技術來構建其核心能力,涉及可觀測性、網(wǎng)絡和安全等關鍵
領域。
盡管eBPF技術備受關注,但是市面上關于eBPF技術尤其是eBPF技術在云原生安全領域應用的書籍寥寥無幾。為此,我們編寫了這本關于eBPF技術的書,內(nèi)容涵蓋eBPF的工作原理、eBPF在云原生安全領域的應用、知名eBPF云原生安全項目、使用eBPF技術開發(fā)安全相關功能等。
讀者對象
本書的目標讀者包括開發(fā)者、eBPF技術愛好者及云原生安全領域的從業(yè)人員。無論是對eBPF技術本身感興趣的讀者,還是對其在云原生安全領域的應用感興趣的讀者,都適合閱讀
本書。
本書內(nèi)容
本書分為四大部分,其中第一部分由匡大虎完成,其余三部分由黃竹剛完成。各部分的內(nèi)容如下:
第一部分為eBPF助力云原生安全,包括第1~4章。第1章簡要介紹云原生安全的挑戰(zhàn)、發(fā)展、理論基礎及方法論,第2章帶領讀者初步認識eBPF,第3章介紹eBPF的技術原理,第4章探討eBPF技術在云原生安全領域的應用。
第二部分為云原生安全項目詳解,包括第5~7章。這部分從安裝、使用及架構和實現(xiàn)原理等方面,介紹Falco、Tracee、Tetragon這三個云原生安全領域基于eBPF技術實現(xiàn)核心安全能力的知名開源項目。
第三部分為eBPF安全技術實戰(zhàn),包括第8~12章。這部分以實戰(zhàn)的方式介紹如何使用eBPF技術實現(xiàn)常見的安全需求,比如審計和攔截命令執(zhí)行操作、文件讀寫操作、權限提升操作及網(wǎng)絡流量。同時,這部分還將介紹如何實現(xiàn)實際業(yè)務場景中提出的為安全事件關聯(lián)進程信息、容器和Pod信息等上下文信息的需求。
第四部分為eBPF安全進階,包括第13和14章。第13章介紹如何使用eBPF技術審計復雜的攻擊手段,比如無文件攻擊、反彈Shell。第14章介紹惡意eBPF程序的常見實現(xiàn)模式及如何防護和探測這類惡意程序。
勘誤和支持
由于作者的水平有限,書中難免會出現(xiàn)一些錯誤或不準確的地方,懇請讀者批評指正?闭`將會在本書示例程序的源代碼倉庫(https://github.com/mozillazg/cloud-native-security-with-ebpf)中以Issue的形式發(fā)布,讀者發(fā)現(xiàn)任何錯誤,有任何意見或建議,都歡迎在Issue中
留言。
謹以此書獻給所有熱愛和關注eBPF與云原生安全的讀者!
黃竹剛,阿里云容器服務技術專家,eBPF 技術愛好者,云原生安全領域從業(yè)人員,擁有十余年軟件開發(fā)經(jīng)驗,熟悉Python、Go等多種編程語言,熱愛開源并長期活躍于開源社區(qū)。
匡大虎,阿里云高級技術專家,阿里云容器服務安全負責人,專注云原生安全,是阿里云云原生安全核心成員之一。
Contents 目 錄
前 言
第一部分 eBPF助力云原生安全
第1章 云原生安全概述 3
1.1 云原生安全的挑戰(zhàn) 3
1.1.1 云原生平臺基礎設施的安全風險 4
1.1.2 DevOps軟件供應鏈的安全風險 4
1.1.3 云原生應用范式的安全風險 5
1.2 云原生安全的演進 5
1.3 云原生安全的理論基礎 11
1.3.1 威脅建!11
1.3.2 堅守安全準則 14
1.3.3 安全觀測和事件響應 21
1.4 云原生安全的方法論 21
1.4.1 CNCF云原生安全架構 22
1.4.2 云原生應用保護平臺 31
1.5 本章小結(jié) 35
第2章 初識eBPF 36
2.1 eBPF歷史 36
2.2 eBPF的關鍵特性和應用場景 38
2.2.1 Linux內(nèi)核 38
2.2.2 eBPF的關鍵特性 39
2.2.3 eBPF的應用場景 41
2.3 eBPF的架構 44
2.4 本章小結(jié) 47
第3章 eBPF技術原理詳解 48
3.1 eBPFHello World程序 48
3.2 eBPF技術原理 53
3.2.1 eBPF Map數(shù)據(jù)結(jié)構 53
3.2.2 eBPF虛擬機 56
3.2.3 eBPF驗證器 60
3.2.4 bpf()系統(tǒng)調(diào)用 61
3.2.5 eBPF程序和附著類型 63
3.3 eBPF程序的開發(fā)模式 66
3.3.1 BCC模式 66
3.3.2 CO-RE libbpf模式 68
3.4 本章小結(jié) 75
第4章 eBPF技術在云原生安全領域的應用 76
4.1 針對云原生應用的攻擊 76
4.2 eBPF和云原生安全的契合點 78
4.2.1 容器中的基礎隔離 78
4.2.2 傳統(tǒng)安全架構 79
4.2.3 eBPF提升云原生應用運行時安全 80
4.2.4 eBPF伴隨云原生應用生命周期 81
4.3 eBPF云原生安全開源項目 83
4.3.1 Falco 84
4.3.2 Tracee 85
4.3.3 Tetragon 86
4.4 雙刃劍 87
4.5 本章小結(jié) 90
第二部分 云原生安全項目詳解
第5章 云原生安全項目Falco詳解 93
5.1 項目介紹 93
5.1.1 功能 93
5.1.2 使用場景 95
5.2 安裝 95
5.2.1 使用包管理工具 95
5.2.2 下載二進制包 97
5.2.3 Kubernetes環(huán)境 98
5.3 使用示例 99
5.3.1 規(guī)則引擎 99
5.3.2 告警輸出 104
5.3.3 事件源 104
5.4 架構和實現(xiàn)原理 105
5.4.1 架構 105
5.4.2 驅(qū)動 105
5.4.3 用戶態(tài)模塊 111
5.5 本章小結(jié) 113
第6章 云原生安全項目Tracee詳解 114
6.1 項目介紹 114
6.2 安裝 115
6.3 使用示例 116
6.3.1 事件追蹤 116
6.3.2 制品捕獲 122
6.3.3 風險探測 124
6.3.4 外部集成 127
6.4 架構和實現(xiàn)原理 129
6.4.1 架構 129
6.4.2 tracee-ebpf實現(xiàn)原理 130
6.5 本章小結(jié) 141
第7章 云原生安全項目Tetragon詳解 142
7.1 項目介紹 142
7.2 安裝 143
7.3 使用示例 144
7.3.1 事件觀測 144
7.3.2 風險攔截 149
7.4 架構和實現(xiàn)原理 154
7.4.1 架構 154
7.4.2 事件觀測 156
7.4.3 風險攔截 165
7.5 本章小結(jié) 166
第三部分 eBPF安全技術實戰(zhàn)
第8章 使用eBPF技術審計和攔截命令執(zhí)行操作 169
8.1 審計命令執(zhí)行操作 169
8.1.1 基于eBPF Kprobe和Kretprobe實現(xiàn) 170
8.1.2 基于eBPF Fentry和Fexit實現(xiàn) 173
8.1.3 基于eBPF Ksyscall和Kretsyscall實現(xiàn) 174
8.1.4 基于eBPF Tracepoint實現(xiàn) 175
8.2 攔截命令執(zhí)行操作 178
8.2.1 基于bpf_send_signal實現(xiàn) 178
8.2.2 基于bpf_override_return實現(xiàn) 179
8.3 本章小結(jié) 182
第9章 使用eBPF技術審計和攔截文件讀寫操作 183
9.1 審計文件讀寫操作 183
9.1.1 基于eBPF Kprobe和Kretprobe實現(xiàn) 184
9.1.2 基于eBPF Tracepoint實現(xiàn) 185
9.1.3 基于eBPF LSM實現(xiàn) 187
9.2 攔截文件讀寫操作 189
9.2.1 基于bpf_send_signal實現(xiàn) 190
9.2.2 基于bpf_override_return實現(xiàn) 191
9.2.3 基于eBPF LSM實現(xiàn) 191
9.3 本章小結(jié) 192
第10章 使用eBPF技術審計和攔截權限提升操作 193
10.1 審計權限提升操作 193
10.1.1 基于eBPF LSM實現(xiàn) 194
10.1.2 基于eBPF Kprobe實現(xiàn) 195
10.2 攔截權限提升操作 196
10.3 本章小結(jié) 197
第11章 使用eBPF技術審計和攔截網(wǎng)絡流量 198
11.1 審計網(wǎng)絡流量 198
11.1.1 基于eBPF套接字過濾器實現(xiàn) 198
11.1.2 基于eBPF TC實現(xiàn) 204
11.1.3 基于eBPF XDP實現(xiàn) 207
11.1.4 基于Kprobe實現(xiàn) 207
11.2 攔截網(wǎng)絡流量 209
11.2.1 基于eBPF TC實現(xiàn) 209
11.2.2 基于eBPF XDP實現(xiàn) 210
11.3 本章小結(jié) 211
第12章 為事件關聯(lián)上下文信息 212
12.1 進程信息 212
12.1.1 進程操作事件 212
12.1.2 網(wǎng)絡事件 216
12.2 容器和Pod信息 221
12.2.1 進程操作事件 221
12.2.2 網(wǎng)絡事件 225
12.3 本章小結(jié) 226
第四部分 eBPF安全進階
第13章 使用eBPF技術審計復雜的攻擊手段 229
13.1 審計使用無文件攻擊技術實現(xiàn)的命令執(zhí)行操作 229
13.2 審計反彈Shell操作 232
13.3 本章小結(jié) 236
第14章 使用eBPF技術探測惡意eBPF程序 237
14.1 惡意eBPF程序 237
14.1.1 常規(guī)程序 237
14.1.2 網(wǎng)絡程序 250
14.2 防護惡意eBPF程序 260
14.3 探測和審計惡意eBPF程序 261
14.3.1 文件分析 261
14.3.2 bpftool 262
14.3.3 內(nèi)核探測 265
14.4 本章小結(jié) 268