數字化系統安全加固技術
白婧婧、田康、李博、高尉峰、朱康
相關主題
商品描述
安全加固是配置信息系統的過程,它可以降低信息系統安全風險。本書系統介紹操作系統、數據庫、中間件、容器四大板塊的相關安全配置,通過強化賬號安全、加固服務、修改安全配置、優化訪問控制策略、增加安全機制等方法,從風險分析、加固詳情、加固步驟3個維度講解每條安全配置項,有助於讀者充分瞭解每條安全配置項潛在的風險及如何進行加固,並在功能性與安全性之間尋求平衡,合理加強安全性。
本書適用於指導產品研發人員研製默認配置安全的產品,規範技術人員在各類系統上的日常操作,讓運維人員獲得檢查默認安全風險的標準,避免人為因素的失誤帶來的安全風險。
作者簡介
白婧婧
西安電子科技大學碩士研究生,深耕於網絡安全測評領域10年,主要研究方向包括Docker容器逃逸與主機提權技術。精通主流操作系統、數據庫和中間件的安全配置檢查與加固,並對業界信息安全技術動態保持敏銳洞察,在網絡安全防禦與漏洞修復方面擁有豐富經驗。
田康
中移系統集成有限公司(雄安產業研究院)智慧城市平台部副總經理、高級工程師,中國移動OneCity系統架構師及中國移動集團科協AI專家組成員。負責多個省市數字化建設項目的整體規劃和技術架構設計,包括甘肅省數字政府、瀋陽市數字政府等,對政企數字化轉型有深入研究和豐富實踐經驗。
李博
擁有13年DevOps領域研發與實踐經驗,主導多家企業從0到1建立DevOps體系,包括持續集成、持續發布和研發協同等領域。近年來專注於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