這是一本系統(tǒng)講解如何使用eBPF技術(shù)構(gòu)建云原生安全防線的著作,是一本面向eBPF技術(shù)愛好者和云安全領(lǐng)域從業(yè)者的實戰(zhàn)寶典,從原理與實踐角度詳述了eBPF技術(shù)在云原生安全領(lǐng)域正在發(fā)生的關(guān)鍵作用,是作者多年構(gòu)筑云原生安全縱深防御經(jīng)驗的總結(jié)。
本書詳細(xì)闡述了eBPF技術(shù)的核心原理以及在云原生安全領(lǐng)域的應(yīng)用價值,并結(jié)合大量的代碼案例分析,深入探討了在典型的云原生安全需求場景下使用eBPF技術(shù)可以幫助實現(xiàn)的安全功能和實踐原理,同時也講述了可能引入的安全風(fēng)險,幫助讀者從零基礎(chǔ)快速了解eBPF技術(shù),開始eBPF安全編程。
通過閱讀本書,你將了解:
?云原生安全面臨的主要挑戰(zhàn),發(fā)展現(xiàn)狀和理論基礎(chǔ);
?eBPF技術(shù)的基本原理和云原生安全領(lǐng)域的典型應(yīng)用;
?基于eBPF技術(shù)的云原生安全核心開源項目的安裝、使用、基礎(chǔ)架構(gòu)和實現(xiàn)原理;
?如何使用eBPF技術(shù)實現(xiàn)典型的云原生安全需求及實現(xiàn)原理;
?如何將eBPF安全事件關(guān)聯(lián)進(jìn)程、容器和Pod等上下文信息;
?如何使用eBPF技術(shù)審計復(fù)雜的云原生攻擊手段;
?惡意eBPF程序的典型實現(xiàn)方式以及如何防護和探測此類惡意程序。
(1)作者背景權(quán)威:作者是阿里云容器服務(wù)技術(shù)專家,阿里云容器團隊是國內(nèi)最早在云原生生產(chǎn)環(huán)境中使用eBPF的團隊之一。
(2)作者經(jīng)驗豐富:作者在阿里等互聯(lián)網(wǎng)大廠有十余年的云計算安全工作經(jīng)驗,多年的eBPF實戰(zhàn)經(jīng)驗。
(3)資深專家推薦:阿里云容器服務(wù)負(fù)責(zé)人易立、阿里云高級技術(shù)專家李鵬等多位專家高度評價并推薦。
(4)內(nèi)容系統(tǒng)全面:從eBPF工作原理、eBPF在云原生領(lǐng)域應(yīng)用場景,到知名的eBPF云原生安全項目,再到常見和復(fù)雜的云原生安全問題的eBPF技術(shù)解決方案,應(yīng)有盡有。
(5)基于生產(chǎn)環(huán)境:書中所有實戰(zhàn)經(jīng)驗和案例分析,主要來自于自作者在阿里云一線的工作經(jīng)驗總結(jié)。
(6)深度剖析源碼:對eBPF以及Falco、Tracee、Tetragon等云原生安全領(lǐng)域的知名eBPF項目的核心源碼進(jìn)行了深度剖析。
(7)實戰(zhàn)案例豐富:書中用大量實戰(zhàn)案例講解了如何使用eBPF技術(shù)解決常見的安全需求以及應(yīng)對復(fù)雜的攻擊手段。
Preface?前 言
為什么要寫這本書
eBPF技術(shù)已經(jīng)成為云原生社區(qū)近年來備受關(guān)注的技術(shù)話題之一。在云原生領(lǐng)域,越來越多的項目和產(chǎn)品開始使用eBPF技術(shù)來構(gòu)建其核心能力,涉及可觀測性、網(wǎng)絡(luò)和安全等關(guān)鍵
領(lǐng)域。
盡管eBPF技術(shù)備受關(guān)注,但是市面上關(guān)于eBPF技術(shù)尤其是eBPF技術(shù)在云原生安全領(lǐng)域應(yīng)用的書籍寥寥無幾。為此,我們編寫了這本關(guān)于eBPF技術(shù)的書,內(nèi)容涵蓋eBPF的工作原理、eBPF在云原生安全領(lǐng)域的應(yīng)用、知名eBPF云原生安全項目、使用eBPF技術(shù)開發(fā)安全相關(guān)功能等。
讀者對象
本書的目標(biāo)讀者包括開發(fā)者、eBPF技術(shù)愛好者及云原生安全領(lǐng)域的從業(yè)人員。無論是對eBPF技術(shù)本身感興趣的讀者,還是對其在云原生安全領(lǐng)域的應(yīng)用感興趣的讀者,都適合閱讀
本書。
本書內(nèi)容
本書分為四大部分,其中第一部分由匡大虎完成,其余三部分由黃竹剛完成。各部分的內(nèi)容如下:
第一部分為eBPF助力云原生安全,包括第1~4章。第1章簡要介紹云原生安全的挑戰(zhàn)、發(fā)展、理論基礎(chǔ)及方法論,第2章帶領(lǐng)讀者初步認(rèn)識eBPF,第3章介紹eBPF的技術(shù)原理,第4章探討eBPF技術(shù)在云原生安全領(lǐng)域的應(yīng)用。
第二部分為云原生安全項目詳解,包括第5~7章。這部分從安裝、使用及架構(gòu)和實現(xiàn)原理等方面,介紹Falco、Tracee、Tetragon這三個云原生安全領(lǐng)域基于eBPF技術(shù)實現(xiàn)核心安全能力的知名開源項目。
第三部分為eBPF安全技術(shù)實戰(zhàn),包括第8~12章。這部分以實戰(zhàn)的方式介紹如何使用eBPF技術(shù)實現(xiàn)常見的安全需求,比如審計和攔截命令執(zhí)行操作、文件讀寫操作、權(quán)限提升操作及網(wǎng)絡(luò)流量。同時,這部分還將介紹如何實現(xiàn)實際業(yè)務(wù)場景中提出的為安全事件關(guān)聯(lián)進(jìn)程信息、容器和Pod信息等上下文信息的需求。
第四部分為eBPF安全進(jìn)階,包括第13和14章。第13章介紹如何使用eBPF技術(shù)審計復(fù)雜的攻擊手段,比如無文件攻擊、反彈Shell。第14章介紹惡意eBPF程序的常見實現(xiàn)模式及如何防護和探測這類惡意程序。
勘誤和支持
由于作者的水平有限,書中難免會出現(xiàn)一些錯誤或不準(zhǔn)確的地方,懇請讀者批評指正。勘誤將會在本書示例程序的源代碼倉庫(https://github.com/mozillazg/cloud-native-security-with-ebpf)中以Issue的形式發(fā)布,讀者發(fā)現(xiàn)任何錯誤,有任何意見或建議,都?xì)g迎在Issue中
留言。
謹(jǐn)以此書獻(xiàn)給所有熱愛和關(guān)注eBPF與云原生安全的讀者!
黃竹剛,阿里云容器服務(wù)技術(shù)專家,eBPF 技術(shù)愛好者,云原生安全領(lǐng)域從業(yè)人員,擁有十余年軟件開發(fā)經(jīng)驗,熟悉Python、Go等多種編程語言,熱愛開源并長期活躍于開源社區(qū)。
匡大虎,阿里云高級技術(shù)專家,阿里云容器服務(wù)安全負(fù)責(zé)人,專注云原生安全,是阿里云云原生安全核心成員之一。
Contents 目 錄
前 言
第一部分 eBPF助力云原生安全
第1章 云原生安全概述 3
1.1 云原生安全的挑戰(zhàn) 3
1.1.1 云原生平臺基礎(chǔ)設(shè)施的安全風(fēng)險 4
1.1.2 DevOps軟件供應(yīng)鏈的安全風(fēng)險 4
1.1.3 云原生應(yīng)用范式的安全風(fēng)險 5
1.2 云原生安全的演進(jìn) 5
1.3 云原生安全的理論基礎(chǔ) 11
1.3.1 威脅建!11
1.3.2 堅守安全準(zhǔn)則 14
1.3.3 安全觀測和事件響應(yīng) 21
1.4 云原生安全的方法論 21
1.4.1 CNCF云原生安全架構(gòu) 22
1.4.2 云原生應(yīng)用保護平臺 31
1.5 本章小結(jié) 35
第2章 初識eBPF 36
2.1 eBPF歷史 36
2.2 eBPF的關(guān)鍵特性和應(yīng)用場景 38
2.2.1 Linux內(nèi)核 38
2.2.2 eBPF的關(guān)鍵特性 39
2.2.3 eBPF的應(yīng)用場景 41
2.3 eBPF的架構(gòu) 44
2.4 本章小結(jié) 47
第3章 eBPF技術(shù)原理詳解 48
3.1 eBPFHello World程序 48
3.2 eBPF技術(shù)原理 53
3.2.1 eBPF Map數(shù)據(jù)結(jié)構(gòu) 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技術(shù)在云原生安全領(lǐng)域的應(yīng)用 76
4.1 針對云原生應(yīng)用的攻擊 76
4.2 eBPF和云原生安全的契合點 78
4.2.1 容器中的基礎(chǔ)隔離 78
4.2.2 傳統(tǒng)安全架構(gòu) 79
4.2.3 eBPF提升云原生應(yīng)用運行時安全 80
4.2.4 eBPF伴隨云原生應(yīng)用生命周期 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 下載二進(jìn)制包 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 架構(gòu)和實現(xiàn)原理 105
5.4.1 架構(gòu) 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 風(fēng)險探測 124
6.3.4 外部集成 127
6.4 架構(gòu)和實現(xiàn)原理 129
6.4.1 架構(gòu) 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 風(fēng)險攔截 149
7.4 架構(gòu)和實現(xiàn)原理 154
7.4.1 架構(gòu) 154
7.4.2 事件觀測 156
7.4.3 風(fēng)險攔截 165
7.5 本章小結(jié) 166
第三部分 eBPF安全技術(shù)實戰(zhàn)
第8章 使用eBPF技術(shù)審計和攔截命令執(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技術(shù)審計和攔截文件讀寫操作 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技術(shù)審計和攔截權(quán)限提升操作 193
10.1 審計權(quán)限提升操作 193
10.1.1 基于eBPF LSM實現(xiàn) 194
10.1.2 基于eBPF Kprobe實現(xiàn) 195
10.2 攔截權(quán)限提升操作 196
10.3 本章小結(jié) 197
第11章 使用eBPF技術(shù)審計和攔截網(wǎng)絡(luò)流量 198
11.1 審計網(wǎng)絡(luò)流量 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)絡(luò)流量 209
11.2.1 基于eBPF TC實現(xiàn) 209
11.2.2 基于eBPF XDP實現(xiàn) 210
11.3 本章小結(jié) 211
第12章 為事件關(guān)聯(lián)上下文信息 212
12.1 進(jìn)程信息 212
12.1.1 進(jìn)程操作事件 212
12.1.2 網(wǎng)絡(luò)事件 216
12.2 容器和Pod信息 221
12.2.1 進(jìn)程操作事件 221
12.2.2 網(wǎng)絡(luò)事件 225
12.3 本章小結(jié) 226
第四部分 eBPF安全進(jìn)階
第13章 使用eBPF技術(shù)審計復(fù)雜的攻擊手段 229
13.1 審計使用無文件攻擊技術(shù)實現(xiàn)的命令執(zhí)行操作 229
13.2 審計反彈Shell操作 232
13.3 本章小結(jié) 236
第14章 使用eBPF技術(shù)探測惡意eBPF程序 237
14.1 惡意eBPF程序 237
14.1.1 常規(guī)程序 237
14.1.2 網(wǎng)絡(luò)程序 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