云原生安全:攻防實(shí)踐與體系構(gòu)建
定 價(jià):99 元
叢書(shū)名:網(wǎng)絡(luò)空間安全技術(shù)叢書(shū)
- 作者:劉文懋,江國(guó)龍,浦明,阮博男,葉曉虎
- 出版時(shí)間:2021/10/1
- ISBN:9787111691839
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):TP393.08
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
本書(shū)介紹了云原生的容器基礎(chǔ)設(shè)施、K8S編排系統(tǒng)和常見(jiàn)云原生應(yīng)用體系;在介紹安全體系前先深入分析了前述架構(gòu)各個(gè)層面的安全風(fēng)險(xiǎn),并給出攻擊實(shí)踐,后續(xù)計(jì)劃開(kāi)放靶場(chǎng)環(huán)境,有很好的可操作性和說(shuō)服力;在介紹安全體系時(shí),首先從高層分析新型基礎(chǔ)設(shè)施防護(hù)的思路切換,然后分為兩個(gè)維度介紹相關(guān)的安全機(jī)制,清晰地拆解了復(fù)雜的安全技術(shù)棧,讓讀者很容易理解DevOps安全和云原生安全兩者如何融合。
(1)一線(xiàn)安全大廠(chǎng)的資深研究員們多年云原生安全的攻防經(jīng)驗(yàn)總結(jié)與安全體系設(shè)計(jì),得到了業(yè)界諸多云安全領(lǐng)域?qū)<业拇罅ν扑]。
(2)攻防驅(qū)動(dòng)安全,大量云原生攻防實(shí)例與相應(yīng)的安全實(shí)踐,幫助讀者快速進(jìn)入云安全的下半場(chǎng)。
近十年云計(jì)算技術(shù)處于高速發(fā)展的過(guò)程中,借助開(kāi)源項(xiàng)目和社區(qū)的力量,很多項(xiàng)目更新和迭代非?臁H缰拈_(kāi)源IaaS組織方OpenStack基金會(huì)改名為OpenInfra,目標(biāo)是將云計(jì)算系統(tǒng)從IaaS擴(kuò)展到容器、編排等層面,除了通用云計(jì)算外,還覆蓋如邊緣計(jì)算、5G和物聯(lián)網(wǎng)等場(chǎng)景;而Google發(fā)起的Kubernetes已經(jīng)在眾多云原生項(xiàng)目中脫穎而出,成為事實(shí)上的編排標(biāo)準(zhǔn),終可能統(tǒng)一云原生體系。虛擬化技術(shù)、容器技術(shù)和編排技術(shù)后很可能會(huì)融合成一套標(biāo)準(zhǔn)云計(jì)算框架,在各個(gè)行業(yè)出現(xiàn)實(shí)踐。
與此同時(shí),安全技術(shù)也在快速演進(jìn)。2013年左右出現(xiàn)了高級(jí)持續(xù)威脅,攻擊者利用各種復(fù)雜的手段不斷突破防守方的邊界,此起彼伏的失陷事件讓疲于奔命的安全團(tuán)隊(duì)沮喪。而近幾年,安全廠(chǎng)商研制了利用虛擬化技術(shù)的蜜罐、沙箱和網(wǎng)絡(luò)空間靶場(chǎng)等機(jī)制,讓防守方轉(zhuǎn)被動(dòng)挨打?yàn)橹鲃?dòng)反制和常態(tài)化對(duì)抗,讓我們看到了終獲勝的曙光。
筆者團(tuán)隊(duì)為綠盟科技星云實(shí)驗(yàn)室,一直從事云計(jì)算安全和網(wǎng)絡(luò)安全前沿的研究和產(chǎn)品孵化,希望通過(guò)本書(shū)能將工作中的得失與廣大讀者分享。
在2015年之前,隨著虛擬化技術(shù)的成熟,以SDN和NFV為支撐技術(shù)的設(shè)施虛擬化IaaS成為主流。筆者在2016年出版了《軟件定義安全:SDN/NFV新型網(wǎng)絡(luò)的安全揭秘》,這本書(shū)詳細(xì)介紹了新型網(wǎng)絡(luò)中的安全風(fēng)險(xiǎn)和威脅,并進(jìn)一步提出了軟件定義的安全體系。事實(shí)上,這個(gè)體系在綠盟科技的云計(jì)算安全解決方案,以及其他安全解決方案中得到了應(yīng)用。
而從2016年開(kāi)始,整個(gè)行業(yè)因?yàn)殚_(kāi)發(fā)運(yùn)營(yíng)一體化(DevOps)和新型基礎(chǔ)設(shè)施的快速推進(jìn),以容器、編排和微服務(wù)為代表的云原生技術(shù)變得流行。從技術(shù)上看,雖然容器技術(shù)也是一種虛擬化形態(tài),但對(duì)應(yīng)的防護(hù)思路和安全體系截然不同。筆者認(rèn)為有必要詳細(xì)闡述和解析云原生技術(shù)棧,并分析其中存在的脆弱性和威脅,讓初探云原生安全的讀者少走錯(cuò)路、彎路,在短時(shí)間內(nèi)聚焦關(guān)鍵技術(shù)問(wèn)題,構(gòu)建適合自己的云原生安全體系。筆者團(tuán)隊(duì)分別于2018年和2020年發(fā)布了《容器安全技術(shù)報(bào)告》[1]和《云原生安全技術(shù)報(bào)告》[2],但限于篇幅,很多細(xì)節(jié)無(wú)法展開(kāi),本書(shū)首次較為詳細(xì)地展示了一些技術(shù)上的思考和細(xì)節(jié),讀者可按照書(shū)中的介紹進(jìn)行驗(yàn)證,從而得到更深刻的理解。
需要說(shuō)明的是,云原生社區(qū)非常活躍,各類(lèi)技術(shù)層出不窮,也許當(dāng)你閱讀本書(shū)時(shí),書(shū)中具體的軟件版本、命令參數(shù)已經(jīng)不適用,但云原生安全的本質(zhì)和防護(hù)思路是不會(huì)變的。當(dāng)然,如果遇到任何問(wèn)題,也歡迎你聯(lián)系筆者團(tuán)隊(duì)。
本書(shū)實(shí)踐部分涉及的源代碼位于隨書(shū)附帶的GitHub倉(cāng)庫(kù),我們也在倉(cāng)庫(kù)中提供了豐富的補(bǔ)充閱讀資料,以供大家進(jìn)一步了解。倉(cāng)庫(kù)地址為https://github.com/brant-ruan/cloud-native-security-book。
關(guān)于書(shū)中涉及的云原生環(huán)境、云原生攻防工具,我們也有開(kāi)源的計(jì)劃,請(qǐng)關(guān)注微信公眾號(hào)“綠盟科技研究通訊”。各位有志于從事云原生安全的讀者,或許可以從中獲益。如有興趣,歡迎貢獻(xiàn)你的代碼,為云原生安全添磚加瓦。
后,本書(shū)難免有疏漏,敬請(qǐng)讀者批評(píng)指正。
劉文懋
序
前言
部分 云原生安全概述
第1章 云原生安全 2
1.1 云原生:云計(jì)算下半場(chǎng) 2
1.2 什么是云原生安全 4
1.2.1 面向云原生環(huán)境的安全 4
1.2.2 具有云原生特征的安全 5
1.2.3 原生安全:融合的云原生安全 5
1.3 面向云原生環(huán)境的安全體系 7
1.3.1 容器安全 7
1.3.2 編排系統(tǒng)安全 8
1.3.3 云原生應(yīng)用安全 9
1.4 云原生安全的關(guān)鍵問(wèn)題 9
1.4.1 如何防護(hù)短生命周期的容器 9
1.4.2 如何降低安全運(yùn)營(yíng)成本 10
1.4.3 DevSecOps 11
1.4.4 如何實(shí)現(xiàn)安全的云原生化 12
1.5 云原生安全現(xiàn)狀 13
1.5.1 云原生新范式:Docker + Kubernetes 13
1.5.2 鏡像安全問(wèn)題仍然很突出 14
1.5.3 安全配置規(guī)范執(zhí)行和密鑰憑證管理不理想 15
1.5.4 運(yùn)行時(shí)安全關(guān)注度上升,但依然很難 17
1.5.5 合規(guī)性要求依然迫切,但業(yè)界苦于無(wú)規(guī)可循 18
1.6 本章小結(jié) 19
第2章 云原生技術(shù) 20
2.1 容器技術(shù) 20
2.1.1 容器與虛擬化 20
2.1.2 容器鏡像 20
2.1.3 容器存儲(chǔ) 21
2.1.4 容器網(wǎng)絡(luò) 22
2.1.5 容器運(yùn)行時(shí) 22
2.2 容器編排 23
2.3 微服務(wù) 23
2.4 服務(wù)網(wǎng)格 24
2.5 Serverless 25
2.6 DevOps 26
2.7 本章小結(jié) 27
第二部分 云原生技術(shù)的風(fēng)險(xiǎn)分析
第3章 容器基礎(chǔ)設(shè)施的風(fēng)險(xiǎn)分析 30
3.1 容器基礎(chǔ)設(shè)施面臨的風(fēng)險(xiǎn) 30
3.1.1 容器鏡像存在的風(fēng)險(xiǎn) 31
3.1.2 活動(dòng)容器存在的風(fēng)險(xiǎn) 32
3.1.3 容器網(wǎng)絡(luò)存在的風(fēng)險(xiǎn) 33
3.1.4 容器管理程序接口存在的風(fēng)險(xiǎn) 33
3.1.5 宿主機(jī)操作系統(tǒng)存在的風(fēng)險(xiǎn) 34
3.1.6 無(wú)法根治的軟件漏洞 34
3.2 針對(duì)容器化開(kāi)發(fā)測(cè)試過(guò)程的攻擊案例 34
3.2.1 背景知識(shí) 35
3.2.2 CVE-2018-15664:符號(hào)鏈接替換漏洞 35
3.2.3 CVE-2019-14271:加載不受信任的動(dòng)態(tài)鏈接庫(kù) 39
3.3 針對(duì)容器軟件供應(yīng)鏈的攻擊案例 43
3.3.1 鏡像漏洞利用 44
3.3.2 鏡像投毒 45
3.4 針對(duì)運(yùn)行時(shí)容器的攻擊案例 48
3.4.1 容器逃逸 48
3.4.2 安全容器逃逸 58
3.4.3 資源耗盡型攻擊 73
3.5 本章小結(jié) 79
第4章 容器編排平臺(tái)的風(fēng)險(xiǎn)分析 80
4.1 容器編排平臺(tái)面臨的風(fēng)險(xiǎn) 80
4.1.1 容器基礎(chǔ)設(shè)施存在的風(fēng)險(xiǎn) 81
4.1.2 Kubernetes組件接口存在的風(fēng)險(xiǎn) 82
4.1.3 集群網(wǎng)絡(luò)存在的風(fēng)險(xiǎn) 84
4.1.4 訪(fǎng)問(wèn)控制機(jī)制存在的風(fēng)險(xiǎn) 84
4.1.5 無(wú)法根治的軟件漏洞 85
4.2 針對(duì)Kubernetes組件不安全配置的攻擊案例 85
4.2.1 Kubernetes API Server未授權(quán)訪(fǎng)問(wèn) 85
4.2.2 Kubernetes Dashboard未授權(quán)訪(fǎng)問(wèn) 86
4.2.3 Kubelet未授權(quán)訪(fǎng)問(wèn) 87
4.3 針對(duì)Kubernetes權(quán)限提升的攻擊案例 88
4.3.1 背景知識(shí) 88
4.3.2 漏洞分析 90
4.3.3 漏洞復(fù)現(xiàn) 94
4.3.4 漏洞修復(fù) 101
4.4 針對(duì)Kubernetes的拒絕服務(wù)攻擊案例 102
4.4.1 CVE-2019-11253:YAML炸彈 102
4.4.2 CVE-2019-9512/9514:HTTP/2協(xié)議實(shí)現(xiàn)存在問(wèn)題 105
4.5 針對(duì)Kubernetes網(wǎng)絡(luò)的中間人攻擊案例 110
4.5.1 背景知識(shí) 112
4.5.2 原理描述 115
4.5.3 場(chǎng)景復(fù)現(xiàn) 117
4.5.4 防御策略 123
4.6 本章小結(jié) 124
第5章 云原生應(yīng)用的風(fēng)險(xiǎn)分析 125
5.1 云原生應(yīng)用風(fēng)險(xiǎn)概述 125
5.2 傳統(tǒng)應(yīng)用的風(fēng)險(xiǎn)分析 125
5.3 云原生應(yīng)用的新風(fēng)險(xiǎn)分析 126
5.3.1 數(shù)據(jù)泄露的風(fēng)險(xiǎn) 126
5.3.2 未授權(quán)訪(fǎng)問(wèn)的風(fēng)險(xiǎn) 128
5.3.3 拒絕服務(wù)的風(fēng)險(xiǎn) 129
5.4 云原生應(yīng)用業(yè)務(wù)的新風(fēng)險(xiǎn)分析 130
5.4.1 未授權(quán)訪(fǎng)問(wèn)的風(fēng)險(xiǎn) 130
5.4.2 API濫用的風(fēng)險(xiǎn) 131
5.5 Serverless的風(fēng)險(xiǎn)分析 131
5.5.1 Serverless特征帶來(lái)的風(fēng)險(xiǎn) 131
5.5.2 Serverless應(yīng)用風(fēng)險(xiǎn) 132
5.5.3 Serverless平臺(tái)風(fēng)險(xiǎn) 132
5.5.4 Serverless被濫用的風(fēng)險(xiǎn) 154
5.6 本章小結(jié) 155
第6章 典型云原生安全事件 156
6.1 特斯拉Kubernetes挖礦事件 156
6.1.1 事件分析 156
6.1.2 總結(jié)與思考 158
6.2 微軟監(jiān)測(cè)到大規(guī)模Kubernetes挖礦事件 160
6.2.1 事件分析 160
6.2.2 總結(jié)與思考 162
6.3 Graboid蠕蟲(chóng)挖礦傳播事件 164
6.3.1 事件分析 164
6.3.2 總結(jié)與思考 166
6.4 本章小結(jié) 167
第三部分 云原生安全防護(hù)思路和體系
第7章 云原生防護(hù)思路轉(zhuǎn)變 170
7.1 變化:容器生命周期 170
7.2 安全左移 171
7.3 聚焦不變 171
7.4 關(guān)注業(yè)務(wù) 173
7.5 本章小結(jié) 174
第8章 云原生安全體系 175
8.1 體系框架 175
8.2 安全組件簡(jiǎn)介 176
第9章 左移的安全機(jī)制 178
9.1 開(kāi)發(fā)安全 178
9.2 軟件供應(yīng)鏈安全 178
9.3 容器鏡像安全 179
9.3.1 容器鏡像安全現(xiàn)狀 179
9.3.2 容器鏡像安全防護(hù) 180
9.4 本章小結(jié) 182
第四部分 云原生可觀(guān)測(cè)性
第10章 可觀(guān)測(cè)性概述 184
10.1 為什么需要實(shí)現(xiàn)云原生可觀(guān)測(cè)性 184
10.2 需要觀(guān)測(cè)什么 185
10.3 實(shí)現(xiàn)手段 186
10.4 本章小結(jié) 187
第11章 日志審計(jì) 188
11.1 日志審計(jì)的需求與挑戰(zhàn) 188
11.1.1 需求分析 188
11.1.2 面臨的挑戰(zhàn) 189
11.2 Docker日志審計(jì) 189
11.3 Kubernetes日志審計(jì) 192
11.3.1 應(yīng)用程序日志 192
11.3.2 系統(tǒng)組件日志 193
11.3.3 日志工具 194
11.4 本章小結(jié) 195
第12章 監(jiān)控 196
12.1 云原生架構(gòu)的監(jiān)控挑戰(zhàn) 196
12.2 監(jiān)控指標(biāo) 197
12.3 監(jiān)控工具 198
12.3.1 cAdvisor和Heapster 199
12.3.2 Prometheus 199
12.4 本章小結(jié) 200
第13章 追蹤 201
13.1 動(dòng)態(tài)追蹤 201
13.2 eBPF 203
13.2.1 eBPF原理與架構(gòu) 204
13.2.2 eBPF驗(yàn)證器 206
13.2.3 eBPF程序類(lèi)型 207
13.2.4 eBPF工具 208
13.2.5 小結(jié) 210
13.3 基于BPFTrace實(shí)現(xiàn)動(dòng)態(tài)追蹤 211
13.3.1 探針類(lèi)型 212
13.3.2 如何使用BPFTrace進(jìn)行追蹤 214
13.4 微服務(wù)追蹤 219
13.4.1 微服務(wù)追蹤概述 219
13.4.2 分布式追蹤 220
13.4.3 微服務(wù)追蹤實(shí)現(xiàn)示例 220
13.5 本章小結(jié) 222
第五部分 容器基礎(chǔ)設(shè)施安全
第14章 Linux內(nèi)核安全機(jī)制 224
14.1 隔離與資源管理技術(shù) 224
14.1.1 內(nèi)核命名空間 224
14.1.2 控制組 224
14.2 內(nèi)核安全機(jī)制 225
14.2.1 Capabilities 225
14.2.2 Seccomp 225
14.2.3 AppArmor 226
14.2.4 SELinux 226
14.3 本章小結(jié) 227
第15章 容器安全加固 228
15.1 概述 228
15.2 容器安全配置 228
15.3 本章小結(jié) 229
第16章 容器環(huán)境的行為異常檢測(cè) 230
16.1 基于規(guī)則的已知威脅檢測(cè) 230
16.1.1 檢測(cè)系統(tǒng)設(shè)計(jì) 231
16.1.2 基于規(guī)則的檢測(cè)實(shí)戰(zhàn):CVE-2019-5736 232
16.1.3 小結(jié) 234
16.2 基于行為模型的未知威脅檢測(cè) 234
16.2.1 檢測(cè)系統(tǒng)架構(gòu) 235
16.2.2 學(xué)習(xí)與檢測(cè)流程 237
16.2.3 基線(xiàn)設(shè)計(jì) 238
16.2.4 小結(jié) 240
16.3 本章小結(jié) 240
第六部分 容器編排平臺(tái)安全
第17章 Kubernetes安全加固 242
17.1 API Server認(rèn)證 242
17.1.1 靜態(tài)令牌文件 242
17.1.2 X.509 客戶(hù)端證書(shū) 243
17.1.3 服務(wù)賬號(hào)令牌 243
17.1.4 OpenID Connect令牌 245
17.1.5 身份認(rèn)證代理 246
17.1.6 Webhook令牌身份認(rèn)證 247
17.1.7 小結(jié) 248
17.2 API Server授權(quán) 249
17.3 準(zhǔn)入控制器 252
17.4 Secret對(duì)象 256
17.5 網(wǎng)絡(luò)策略 257
17.6 本章小結(jié) 259
第18章 云原生網(wǎng)絡(luò)安全 260
18.1 云原生網(wǎng)絡(luò)架構(gòu) 260
18.1.1 基于端口映射的容器主機(jī)網(wǎng)絡(luò) 260
18.1.2 基于CNI的Kubernetes集群網(wǎng)絡(luò) 260
18.1.3 服務(wù)網(wǎng)格 261
18.2 基于零信任的云原生網(wǎng)絡(luò)微隔離 261
18.2.1 什么是微隔離 262
18.2.2 云原生為什么需要微隔離 262
18.2.3 云原生網(wǎng)絡(luò)的微隔離實(shí)現(xiàn)技術(shù) 263
18.2.4 云原生網(wǎng)絡(luò)入侵檢測(cè) 265
18.3 基于Cilium的網(wǎng)絡(luò)安全方案示例 266
18.3.1 Cilium架構(gòu) 266
18.3.2 Cilium組網(wǎng)模式 268
18.3.3 Cilium在Overlay組網(wǎng)下的通信示例 268
18.3.4 API感知的安全性 272
18.4 本章小結(jié) 277
第七部分 云原生應(yīng)用安全
第19章 面向云原生應(yīng)用的零信任安全 280
19.1 什么是信任 280
19.2 真的有零信任嗎 282
19.3 零信任的技術(shù)路線(xiàn) 282
19.4 云化基礎(chǔ)設(shè)施與零信任 284
19.5 云原生環(huán)境零信任架構(gòu) 286
19.6 本章小結(jié) 287
第20章 傳統(tǒng)應(yīng)用安全 289
20.1 應(yīng)用程序代碼漏洞緩解 289
20.1.1 安全編碼 290
20.1.2 使用代碼檢測(cè)工具 290
20.2 應(yīng)用程序依賴(lài)庫(kù)漏洞防護(hù) 290
20.2.1 使用受信任的源 290
20.2.2 使用軟件組成分析工具 290
20.3 應(yīng)用程序訪(fǎng)問(wèn)控制 291
20.4 應(yīng)用程序數(shù)據(jù)安全防護(hù) 291
20.4.1 安全編碼 291
20.4.2 使用密鑰管理系統(tǒng) 292
20.4.3 使用安全協(xié)議 292
20.5 本章小結(jié) 292
第21章 API安全 293
21.1 傳統(tǒng)API防護(hù) 293
21.2 API脆弱性檢測(cè) 293
21.3 云原生API網(wǎng)關(guān) 294
21.4 本章小結(jié) 295
第22章 微服務(wù)架構(gòu)下的應(yīng)用安全 296
22.1 認(rèn)證服務(wù) 297
22.1.1 基于JWT的認(rèn)證 297
22.1.2 基于Istio的認(rèn)證 298
22.2 訪(fǎng)問(wèn)控制 306
22.2.1 基于角色的訪(fǎng)問(wèn)控制 306
22.2.2 基于Istio的訪(fǎng)問(wèn)控制 306
22.3 數(shù)據(jù)安全 310
22.4 其他防護(hù)機(jī)制 310
22.4.1 Istio和API網(wǎng)關(guān)協(xié)同的全面防護(hù) 311
22.4.2 I