數字化系統安全加固技術

白婧婧、田康、李博、高尉峰、朱康

  • 出版商: 人民郵電
  • 出版日期: 2024-10-01
  • 定價: $359
  • 售價: 8.5$305
  • 語言: 簡體中文
  • 頁數: 216
  • ISBN: 711562867X
  • ISBN-13: 9787115628671
  • 下單後立即進貨 (約2週~3週)

  • 數字化系統安全加固技術-preview-1
  • 數字化系統安全加固技術-preview-2
數字化系統安全加固技術-preview-1

相關主題

商品描述

安全加固是配置信息系統的過程,它可以降低信息系統安全風險。本書系統介紹操作系統、數據庫、中間件、容器四大板塊的相關安全配置,通過強化賬號安全、加固服務、修改安全配置、優化訪問控制策略、增加安全機制等方法,從風險分析、加固詳情、加固步驟3個維度講解每條安全配置項,有助於讀者充分瞭解每條安全配置項潛在的風險及如何進行加固,並在功能性與安全性之間尋求平衡,合理加強安全性。

本書適用於指導產品研發人員研製默認配置安全的產品,規範技術人員在各類系統上的日常操作,讓運維人員獲得檢查默認安全風險的標準,避免人為因素的失誤帶來的安全風險。

作者簡介

白婧婧

西安电子科技大学硕士研究生,在网络安全测评领域深耕10年,主攻Docker容器逃逸、主机提权技术,精通主流操作系统、数据库、中间件的安全配置检查及加固,爱好洞察业界信息安全技术动态,在网络安全防御、漏洞修复方面有着丰富的经验。

田康

中移系统集成有限公司(雄安产业研究院)智慧城市平台部副总经理、高级工程师,中国移动OneCity系统架构师,中国移动集团科协AI专家组成员,负责甘肃省数字政府、沈阳市数字政府等多个省市数字化建设项目的整体规划编制、技术架构设计等工作,在政企数字化转型领域有深入的研究和丰富的实践经验。

李博

具有13年DevOps领域研发和实践经验,在多个企业主导DevOps体系从0到1的建设工作,包括持续集成、持续发布、研发协同等多个领域,近几年专注于DevSecOps在企业的落地实践。

高尉峰

毕业于西北工业大学软件与微电子学院,主要研究APT攻防对抗技术、RASP技术、ATT&CK知识库实践、样本溯源、安全测试工具开发和DevSecOps落地等,并在上述领域提出多项解决方案。

朱康

从事网络安全测评和渗透测试工作5年,对业界常见的攻击手段有独特的见解。在操作系统安全、数据库安全、中间件安全、容器安全领域有丰富的安全配置加固实战经验。

目錄大綱

第 1篇 操作系統安全

第 1章 Linux 3

1.1 賬號安全 3

1.1.1 控制可登錄賬號 3

1.1.2 禁止root用戶登錄 3

1.1.3 禁用非活動用戶 4

1.1.4 確保root用戶的GID為0 4

1.1.5 確保僅root用戶的UID為0 4

1.2 密碼安全 5

1.2.1 設置密碼生存期 5

1.2.2 設置密碼復雜度 5

1.2.3 確保加密算法為SHA-512 6

1.2.4 確保/etc/shadow密碼字段不為空 6

1.3 登錄、認證鑒權 7

1.3.1 配置SSH服務 7

1.3.2 設置登錄超時時間 9

1.3.3 設置密碼鎖定策略 10

1.3.4 禁止匿名用戶登錄系統 10

1.3.5 禁用不安全服務 10

1.3.6 禁用不安全的客戶端 11

1.3.7 配置/etc/crontab文件權限 12

1.3.8 確保登錄警告配置正確 12

1.4 日誌審計 13

1.4.1 配置auditd服務 13

1.4.2 配置rsyslog服務 15

1.4.3 配置journald服務 15

1.4.4 配置日誌文件最小權限 16

1.5 安全配置 16

1.5.1 限制可查看歷史命令條數 16

1.5.2 確保日誌文件不會被刪除 17

1.5.3 iptables配置 17

1.5.4 配置系統時間同步 18

1.5.5 限制umask值 20

1.5.6 限制su命令的訪問 20

1.5.7 SELinux配置 20

1.5.8 系統文件權限配置 21

1.6 安全啟動 22

1.6.1 設置引導加載程序密碼 22

1.6.2 配置引導加載程序權限 23

1.6.3 配置單用戶模式需要身份驗證 23

1.7 安全編譯 23

1.7.1 限制堆芯轉儲 23

1.7.2 啟用XD/NX支持 24

1.7.3 啟用地址空間佈局隨機化 24

1.7.4 禁止安裝prelink 25

1.8 主機和路由器系統配置 25

1.8.1 禁止接收源路由數據包 25

1.8.2 禁止數據包轉發 26

1.8.3 關閉ICMP重定向 26

1.8.4 關閉安全ICMP重定向 27

1.8.5 記錄可疑數據包 27

1.8.6 忽略廣播ICMP請求 28

1.8.7 忽略虛假ICMP響應 28

1.8.8 啟用反向路徑轉發 28

1.8.9 啟用TCP SYN Cookie 29

1.8.10 禁止接收IPv6路由器廣告 29

第 2章 Windows 30

2.1 賬戶安全 30

2.1.1 禁用Guest賬戶 30

2.1.2 禁用管理員賬戶 31

2.1.3 刪除無用賬戶 31

2.1.4 不顯示上次登錄的用戶名 32

2.1.5 禁止空密碼登錄系統 33

2.1.6 重命名來賓和管理員賬戶 33

2.1.7 確保“賬戶鎖定時間”設置為“15”或更大的值 34

2.1.8 確保“賬戶鎖定閾值”設置為“5”或更小的值 34

2.1.9 確保“電腦賬戶鎖定閾值”設置為“10”或更小的值 35

2.1.10 確保“重置賬戶鎖定計數器”設置為“15”或更大的值 35

2.1.11 密碼過期之前提醒用戶更改密碼 36

2.2 密碼策略 36

2.2.1 啟用密碼復雜度相關策略 36

2.2.2 確保“強制密碼歷史”設置為“24”或更大的值 37

2.2.3 設置密碼使用期限 37

2.2.4 設置最小密碼長度 38

2.3 認證授權 38

2.3.1 拒絕Guest、本地賬戶從網絡訪問此電腦 38

2.3.2 拒絕Guest、本地賬戶通過遠程桌面服務登錄 39

2.3.3 配置遠程強制關機權限 39

2.3.4 限制可本地關機的用戶 40

2.3.5 授權可登錄的賬戶 40

2.3.6 分配用戶權限 41

2.3.7 控制備份文件和目錄權限 42

2.3.8 控制還原文件和目錄權限 42

2.3.9 控制管理審核和安全日誌權限 43

2.3.10 控制身份驗證後模擬客戶端權限 43

2.3.11 控制拒絕以服務身份登錄權限 44

2.4 日誌審計 44

2.4.1 設置日誌存儲文件大小 45

2.4.2 配置審核策略 45

2.5 系統配置 46

2.5.1 設置屏幕保護程序 46

2.5.2 安全登錄 46

2.5.3 限制匿名枚舉 47

2.5.4 禁止存儲網絡身份驗證的密碼和憑據 48

2.5.5 使用DoH 48

2.5.6 設置域成員策略 49

2.5.7 控制從網絡訪問編輯註冊表的權限 50

2.5.8 控制共享文件夾訪問權限 51

2.5.9 關閉Windows自動播放功能 52

2.5.10 限制為進程調整內存配額權限用戶 52

2.5.11 配置修改固件環境值權限 53

2.5.12 配置加載和卸載設備驅動程序權限 54

2.5.13 配置更改系統時間權限 54

2.5.14 配置更改時區權限 55

2.5.15 配置獲取同一會話中另一個用戶的模擬令牌權限 55

2.5.16 阻止電腦加入家庭組 56

2.5.17 阻止用戶和應用程序訪問危險網站 56

2.5.18 掃描所有下載文件和附件 57

2.5.19 開啟實時保護 58

2.5.20 開啟行為監視 58

2.5.21 掃描可移動驅動器 59

2.5.22 開啟自動下載和安裝更新 59

2.5.23 防止繞過Windows Defender SmartScreen 59

2.6 網絡安全 60

2.6.1 LAN管理器配置 60

2.6.2 設置基於NTML SSP的客戶端和服務器的最小會話安全策略 60

2.6.3 設置LDAP客戶端簽名 61

2.6.4 登錄時間到期時強制註銷 61

2.6.5 禁止LocalSystem NULL會話回退 61

2.6.6 禁止PKU2U身份驗證請求使用聯機標識 61

2.6.7 配置Kerberos允許的加密類型 62

2.6.8 允許本地系統將電腦標識用於NTLM 62

2.7 本地安全策略 63

2.7.1 設置提高計劃優先級權限 63

2.7.2 設置創建符號鏈接權限 63

2.7.3 設置調試程序權限 64

2.7.4 設置文件單一進程和系統性能權限 64

2.7.5 設置創建永久共享對象權限 65

2.7.6 設置創建全局對象權限 65

2.7.7 設置創建一個令牌對象權限 66

2.7.8 設置執行捲維護任務權限 67

2.7.9 設置拒絕作為批處理作業登錄權限 67

2.7.10 設置替換一個進程級令牌權限 68

2.7.11 Microsoft網絡客戶端安全配置 68

2.7.12 Microsoft網絡服務器安全配置 69

2.7.13 禁止將Everyone權限應用於匿名用戶 70

2.7.14 禁止設置匿名用戶可以訪問的網絡共享 71

2.7.15 控制應用程序安裝 71

2.7.16 禁用sshd服務 72

2.7.17 禁用FTP服務 72

2.7.18 配置高級審核策略 72

2.7.19 禁止在DNS域網絡上安裝和配置網橋 74

2.7.20 禁止在DNS域網絡上使用Internet連接共享 74

2.8 Windows Defender防火牆 75

2.8.1 開啟Windows Defender防病毒功能 75

2.8.2 開啟防火牆 76

2.8.3 配置入站和出站連接 77

2.8.4 配置日誌文件 77

第 2篇 數據庫安全

第3章 MySQL 81

3.1 宿主機安全配置 81

3.1.1 數據庫工作目錄和數據目錄存放在專用磁盤分區 81

3.1.2 使用MySQL專用賬號啟動進程 81

3.1.3 禁用MySQL歷史命令記錄 82

3.1.4 禁止MYSQL_PWD的使用 82

3.1.5 禁止MySQL運行賬號登錄系統 83

3.1.6 禁止MySQL使用默認埠 83

3.2 備份與容災 83

3.2.1 制定數據庫備份策略 83

3.2.2 使用專用存儲設備存放備份數據 84

3.2.3 部署數據庫應多主多從 84

3.3 賬號與密碼安全 84

3.3.1 設置密碼生存周期 84

3.3.2 設置密碼復雜度 85

3.3.3 確保不存在空密碼賬號 86

3.3.4 確保不存在無用賬號 86

3.3.5 修改默認管理員賬號名為非root用戶 86

3.4 身份認證連接與會話超時限制 87

3.4.1 檢查數據庫是否設置連接嘗試次數 87

3.4.2 檢查是否限制連接地址與設備 88

3.4.3 限制單個用戶的連接數 88

3.4.4 確保have_ssl設置為yes 88

3.4.5 確保使用高強度加密套件 89

3.4.6 確保加解密函數配置高級加密算法 89

3.4.7 確保使用新版本TLS協議 89

3.5 數據庫文件目錄權限 90

3.5.1 配置文件及目錄權限最小化 90

3.5.2 備份數據權限最小化 90

3.5.3 二進制日誌權限最小化 90

3.5.4 錯誤日誌權限最小化 91

3.5.5 慢查詢日誌權限最小化 91

3.5.6 中繼日誌權限最小化 91

3.5.7 限制日誌權限最小化 91

3.5.8 插件目錄權限最小化 92

3.5.9 密鑰證書文件權限最小化 92

3.6 日誌與審計 92

3.6.1 配置錯誤日誌 92

3.6.2 確保log-raw設置為off 93

3.6.3 配置log_error_verbosity 93

3.7 用戶權限控制 93

3.7.1 確保僅管理員賬號可訪問所有數據庫 93

3.7.2 確保file不授予非管理員賬號 94

3.7.3 確保process不授予非管理員賬號 94

3.7.4 確保super不授予非管理員賬號 94

3.7.5 確保shutdown不授予非管理員賬號 95

3.7.6 確保create user不授予非管理員賬號 95

3.7.7 確保grant option不授予非管理員賬號 95

3.7.8 確保replication slave不授予非管理員賬號 95

3.8 基本安全配置 96

3.8.1 確保安裝最新補丁 96

3.8.2 刪除默認安裝的測試數據庫test 96

3.8.3 確保allow-suspicious-udfs配置為false 96

3.8.4 local_infile參數設定 97

3.8.5 skip-grant-tables參數設定 97

3.8.6 daemon_memcached參數設定 97

3.8.7 secure_file_priv參數設定 98

3.8.8 sql_mode參數設定 98

第4章 PostgreSQL 99

4.1 目錄文件權限 99

4.1.1 確保配置文件及目錄權限合理 99

4.1.2 備份數據權限最小化 99

4.1.3 日誌文件權限最小化 100

4.2 日誌與審計 100

4.2.1 確保已開啟日誌記錄 100

4.2.2 確保已配置日誌生命周期 101

4.2.3 確保已配置日誌轉儲大小 101

4.2.4 確保配置日誌記錄內容完整 101

4.2.5 確保正確配置log_destinations 102

4.2.6 確保已配置log_truncate_on_rotation 102

4.2.7 正確配置syslog_facility 103

4.2.8 正確配置syslog_sequence_numbers 103

4.2.9 正確配置syslog_split_messages 103

4.2.10 正確配置syslog_ident 103

4.2.11 正確配置log_min_ messages 104

4.2.12 正確配置log_min_error_ statement 104

4.2.13 確保禁用debug_print_parse 104

4.2.14 確保禁用debug_print_rewritten 104

4.2.15 確保禁用debug_print_plan 105

4.2.16 確保啟用debug_pretty_print 105

4.2.17 確保啟用log_connections 105

4.2.18 確保啟用log_disconnections 105

4.2.19 正確配置log_error_verbosity 106

4.2.20 正確配置log_hostname 106

4.2.21 正確配置log_statement 106

4.2.22 正確配置log_timezone 107

4.3 賬號與密碼安全 107

4.3.1 設置密碼復雜度 107

4.3.2 設置密碼生存周期 107

4.4 身份認證連接與會話超時限制 108

4.4.1 檢查數據庫是否設置連接嘗試次數 108

4.4.2 檢查是否限制連接地址與設備 108

4.4.3 限制單個用戶的連接數 108

4.4.4 設置登錄校驗密碼 109

4.5 備份與容災 109

4.5.1 制定數據庫備份策略 109

4.5.2 部署數據庫應多主多從 110

4.6 用戶權限控制 110

4.7 安裝和升級安全配置 110

4.7.1 確保安裝包來源可靠 110

4.7.2 確保正確配置服務運行級別 110

4.7.3 配置數據庫運行賬號文件掩碼 111

第5章 Redis 112

5.1 身份認證連接 112

5.1.1 限制客戶端認證超時時間 112

5.1.2 檢查數據庫是否設置連接嘗試次數 112

5.1.3 配置賬號鎖定時間 113

5.2 賬號密碼認證 113

5.3 目錄文件權限 113

5.3.1 確保配置文件及目錄權限合理 113

5.3.2 備份數據權限最小化 113

5.3.3 日誌文件權限最小化 114

5.4 備份與容災 114

5.4.1 制定數據庫備份策略 114

5.4.2 部署數據庫應多主多從 114

5.5 安裝與升級 115

5.5.1 確保使用最新安裝補丁 115

5.5.2 使用Redis專用賬號啟動進程 115

5.5.3 禁止Redis運行賬號登錄系統 116

5.5.4 禁止Redis使用默認埠 116

第6章 MongoDB 117

6.1 安裝和補丁 117

6.1.1 確保使用最新版本數據庫 117

6.1.2 使用MongoDB專用賬號啟動進程 117

6.1.3 確保MongoDB未使用默認埠 118

6.1.4 禁止MongoDB運行賬號登錄系統 118

6.2 身份認證 119

6.2.1 確保啟用身份認證 119

6.2.2 確保本機登錄進行身份認證 119

6.2.3 檢查是否限制連接地址與設備 119

6.2.4 確保在集群環境中啟用身份認證 120

6.3 備份與容災 120

6.3.1 制定數據庫備份策略 120

6.3.2 部署數據庫應多主多從 121

6.4 日誌與審計 121

6.4.1 確保日誌記錄內容完整 121

6.4.2 確保添加新日誌採用追加方式而不是覆蓋 121

6.5 目錄文件權限 122

6.5.1 確保配置文件及目錄權限合理 122

6.5.2 備份數據權限最小化 122

6.5.3 日誌文件權限最小化 122

6.5.4 確保密鑰證書文件權限最小化 123

6.6 權限控制 123

6.6.1 確保使用基於角色的訪問控制 123

6.6.2 確保每個角色都是必要的且權限最小化 123

6.6.3 檢查具有root用戶角色的用戶 124

6.7 傳輸加密 125

6.7.1 確保禁用舊版本TLS協議 125

6.7.2 確保網絡傳輸使用TLS加密 125

第3篇 中間件安全

第7章 Tomcat 129

7.1 安全配置 129

7.1.1 以普通用戶運行Tomcat 129

7.1.2 修改默認埠 129

7.1.3 設置密碼長度和復雜度 130

7.1.4 配置日誌功能 130

7.1.5 設置支持使用HTTPS等加密協議 130

7.1.6 設置連接超時時間 131

7.1.7 禁用危險的HTTP方法 131

7.2 權限控制 132

7.2.1 禁用manager功能 132

7.2.2 禁止Tomcat顯示文件列表 132

第8章 Nginx 133

8.1 協議安全 133

8.1.1 配置SSL協議 133

8.1.2 限制SSL協議和密碼 133

8.2 安全配置 134

8.2.1 關閉默認錯誤頁的Nginx版本號 134

8.2.2 設置client_body_timeout超時 134

8.2.3 設置client_header_timeout超時 134

8.2.4 設置keepalive_timeout超時 134

8.2.5 設置send_timeout超時 134

8.2.6 設置只允許GET、HEAD、POST方法 135

8.2.7 控制並發連接 135

第9章 WebLogic 136

9.1 安全配置 136

9.1.1 以非root用戶運行WebLogic 136

9.1.2 設置加密協議 136

9.1.3 設置賬號鎖定策略 137

9.1.4 更改默認埠 137

9.1.5 配置超時退出登錄 137

9.1.6 配置日誌功能 138

9.1.7 設置密碼復雜度符合要求 138

9.2 權限控制 138

9.2.1 禁用發送服務器標頭 138

9.2.2 限制應用服務器Socket數量 139

第 10章 JBoss 140

10.1 賬號安全 140

10.1.1 設置jmx-console登錄的用戶名、密碼及其復雜度 140

10.1.2 設置web service登錄的用戶名、密碼及其復雜度 141

10.2 安全配置 141

10.2.1 設置支持加密協議 141

10.2.2 修改默認埠 142

10.2.3 設置會話超時時間 142

10.2.4 限制目錄列表訪問 142

10.2.5 記錄用戶登錄行為 143

第 11章 Apache 144

11.1 賬號安全 144

11.1.1 設置Apache用戶賬號Shell生效 144

11.1.2 鎖定Apache用戶賬號 144

11.2 安全配置 145

11.2.1 禁用SSL/TLS協議 145

11.2.2 限制不安全的SSL/TLS 145

11.2.3 設置Timeout小於或等於10 145

11.2.4 設置KeepAlive為On 145

11.2.5 設置MaxKeepAliveRequests大於或等於100 146

11.2.6 設置KeepAliveTimeout小於或等於15 146

11.2.7 限制所有目錄覆蓋 146

第 12章 IIS 147

12.1 權限控制 147

12.1.1 卸載不需要的組件 147

12.1.2 刪除默認站點 147

12.1.3 設置網站目錄權限 147

12.1.4 限制應用程序擴展 148

12.1.5 限制Web服務擴展 148

12.2 安全配置 148

12.2.1 日誌功能設置 148

12.2.2 自定義錯誤信息 148

第 13章 WebSphere 149

13.1 權限控制 149

13.1.1 控制config與properties目錄權限 149

13.1.2 禁止目錄瀏覽 149

13.2 安全配置 150

13.2.1 禁止列表顯示文件 150

13.2.2 配置日誌功能 150

13.2.3 啟用全局安全性 150

13.2.4 啟用Java 2安全性 151

13.2.5 配置控制台會話超時時間 151

13.2.6 卸載sample例子程序 151

第4篇 容器安全

第 14章 Docker 155

14.1 Docker主機安全配置 156

14.1.1 確保docker組中僅存在可信用戶 156

14.1.2 審計Docker守護進程 156

14.1.3 審計Docker文件和目錄 156

14.1.4 確保Docker版本最新 158

14.2 Docker守護進程配置 158

14.2.1 以非root用戶運行Docker守護進程 158

14.2.2 限制在默認網橋上的容器之間的網絡流量 158

14.2.3 設置日誌記錄級別為info 159

14.2.4 允許Docker更改iptables 159

14.2.5 禁止使用不安全的註冊表 159

14.2.6 禁止使用aufs存儲驅動程序 159

14.2.7 配置Docker守護進程的TLS身份驗證 160

14.2.8 正確配置默認ulimit 160

14.2.9 啟用用戶命名空間 160

14.2.10 確保安裝授權插件 161

14.2.11 配置集中和遠程日誌記錄 161

14.2.12 限制容器獲取新權限 161

14.2.13 啟用實時還原 161

14.2.14 確保禁用Userland代理 162

14.2.15 禁用實驗特性 162

14.3 Docker守護進程配置文件權限 162

14.3.1 配置Docker相關文件的權限和屬主屬組 162

14.3.2 配置/etc/docker目錄的權限和屬主屬組 163

14.3.3 配置Docker相關證書文件目錄的權限和屬主屬組 163

14.3.4 配置Docker服務器證書密鑰文件的權限和屬主屬組 164

14.3.5 配置Docker套接字文件的權限和屬主屬組 164

14.3.6 配置Containerd套接字文件的權限和屬主屬組 164

14.4 容器鏡像和構建文件配置 165

14.4.1 以非root用戶運行容器 165

14.4.2 僅使用受信任的基礎鏡像 165

14.4.3 卸載容器中安裝的不必要的軟件 165

14.4.4 確保鏡像無安全漏洞 166

14.4.5 啟用Docker的內容信任 166

14.4.6 容器鏡像中添加健康檢查 166

14.4.7 確保在Dockerfiles中不單獨使用update指令 166

14.4.8 刪除不必要的setuid和setgid權限 167

14.4.9 Dockerfiles中使用COPY而不使用ADD 167

14.4.10 刪除Dockerfiles中的敏感信息 168

14.5 容器運行時配置 168

14.5.1 啟用AppArmor配置 168

14.5.2 設置SELinux安全選項 168

14.5.3 刪除容器所有不需要的功能 169

14.5.4 不使用特權容器 170

14.5.5 禁止以讀寫形式掛載主機系統敏感目錄 170

14.5.6 禁止容器內運行sshd 171

14.5.7 確保未映射特權埠 172

14.5.8 關閉容器非必需埠 172

14.5.9 確保容器不共享主機的網絡命名空間 173

14.5.10 限制容器的可用內存 173

14.5.11 設置容器的CPU閾值 174

14.5.12 合理掛載容器的根文件系統 174

14.5.13 流量綁定特定的主機埠 174

14.5.14 設置容器重啟策略 175

14.5.15 不共享主機的PID命名空間 175

14.5.16 不共享主機的IPC命名空間 176

14.5.17 不直接暴露主機設備 176

14.5.18 設置系統資源限制 176

14.5.19 禁止將掛載傳播模式設置為共享 177

14.5.20 不共享主機的UTS命名空間 177

14.5.21 啟用默認的seccomp配置 177

14.5.22 禁止docker exec使用--privileged選項 178

14.5.23 禁止docker exec使用--user=root選項 178

14.5.24 使用默認的Docker cgroup 178

14.5.25 限制容器獲取額外的特權 179

14.5.26 運行時檢查容器健康狀況 179

14.5.27 使用鏡像的最新版本 179

14.5.28 限制容器的pid個數 180

14.5.29 不共享主機的用戶命名空間 180

14.5.30 禁止容器內安裝Docker套接字 181

14.6 Docker swarm配置 181

14.6.1 非必要則禁用swarm模式 181

14.6.2 創建最小數量的管理節點 181

14.6.3 將swarm服務綁定到特定主機埠 182

14.6.4 確保所有Docker swarm覆蓋網絡均加密 182

14.6.5 確保swarm manager在自動鎖定模式下運行 182

14.6.6 隔離管理平面流量與數據平面流量 183

第 15章 Kubernetes 184

15.1 Master Node配置文件 185

15.1.1 配置kube-apiserver.yaml的屬主屬組和權限 185

15.1.2 配置kube-controller-manager.yaml的屬主屬組和權限 185

15.1.3 配置kube-scheduler.yaml的屬主屬組和權限 186

15.1.4 配置etcd.yaml的屬主屬組和權限 186

15.1.5 配置容器網絡接口文件的屬主屬組和權限 187

15.1.6 配置etcd數據目錄的屬主屬組和權限 187

15.1.7 配置admin.conf的屬主屬組和權限 188

15.1.8 配置scheduler.conf的屬主屬組和權限 188

15.1.9 配置controller-manager.conf的屬主屬組和權限 189

15.1.10 配置Kubernetes PKI 目錄及文件的屬主屬組和權限 189

15.2 API Server 190

15.2.1 不使用基本身份認證 190

15.2.2 不使用基於令牌的身份認證 190

15.2.3 使用HTTPS進行Kubelet連接 191

15.2.4 啟用基於證書的Kubelet身份認證 191

15.2.5 建立連接前驗證Kubelet證書 191

15.2.6 禁止授權所有請求 192

15.2.7 設置合理的授權方式 192

15.2.8 設置新Pod重啟時按需拉取鏡像 192

15.2.9 避免自動分配服務賬號 193

15.2.10 拒絕在不存在的命名空間中創建對象 193

15.2.11 拒絕創建不安全的Pod 193

15.2.12 設置準入控制插件NodeRestriction 194

15.2.13 不綁定不安全的apiserver地址 194

15.2.14 不綁定不安全的埠 194

15.2.15 不禁用安全埠 195

15.2.16 啟用日誌審計 195

15.2.17 設置合適的日誌文件參數 195

15.2.18 設置適當的API服務器請求超時參數 196

15.2.19 驗證令牌之前先驗證服務賬號 196

15.2.20 為apiserver的服務賬號設置公鑰文件 196

15.2.21 設置apiserver和etcd之間的TLS連接 197

15.2.22 設置apiserver的TLS連接 197

15.2.23 設置etcd對客戶端的TLS連接 198

15.2.24 設置加密存儲etcd鍵值 198

15.3 Controller管理器 199

15.3.1 每個控制器使用單獨的服務賬號憑證 199

15.3.2 為Controller的服務賬號設置私鑰文件 199

15.3.3 設置API服務器的服務證書 200

15.3.4 禁止Controller Manager API服務綁定非環回的不安全地址 200

15.4 scheduler 201

15.4.1 確保--profiling參數為false 201

15.4.2 禁止scheduler API服務綁定到非環回的不安全地址 201

15.5 etcd 201

15.5.1 為etcd服務配置TLS加密 201

15.5.2 在etcd服務上啟用客戶端身份認證 202

15.5.3 禁止自簽名證書用於TLS 202

15.5.4 設置etcd的TLS連接 202

15.5.5 配置etcd的對等身份認證 203

15.5.6 禁止TLS連接時使用自簽名證書 203

15.6 Worker節點配置文件 203

15.6.1 配置Kubelet服務文件的屬主屬組和權限 203

15.6.2 配置代理kubeconfig文件的屬主屬組和權限 204

15.6.3 配置kubelet.conf文件的屬主屬組和權限 204

15.6.4 配置證書頒發機構文件的屬主屬組和權限 205

15.6.5 配置Kubelet配置文件的屬主屬組和權限 205

15.7 Kubelet配置 206

15.7.1 禁止匿名請求Kubelet服務器 206

15.7.2 啟用顯式授權 207

15.7.3 啟用Kubelet證書身份認證 207

15.7.4 禁用只讀埠 208

15.7.5 合理設置默認內核參數值 208

15.7.6 允許Kubelet管理iptables 209

15.7.7 不要覆蓋節點主機名 209

15.7.8 在Kubelet上設置TLS連接 210

15.7.9 啟用Kubelet客戶端證書輪換 210

15.7.10 啟用Kubelet服務端證書輪換 211

15.8 Kubernetes策略 211

15.8.1 禁止hostPID設置為true 211

15.8.2 禁止hostIPC設置為 true 212

15.8.3 禁止hostNetwork設置為true 212

15.8.4 禁止allowPrivilegeEscalation設置為true 213

15.8.5 禁止以root用戶運行容器 213

15.8.6 確保所有命名空間都定義網絡策略 213

結語 215