目 录
第Ⅰ部分 容器是什么
第1章 容器是什么 3
1.1 常见的误解 4
1.2 容器组件 6
1.3 内核权能 7
1.4 其他容器 13
1.5 本章小结 15
第2章 非root运行时 17
2.1 Docker的rootless模式 18
2.2 运行rootless模式的Podman 24
2.3 本章小结 31
第3章 容器运行时保护 33
3.1 运行Falco工具 34
3.2 配置规则 38
3.2.1 变更规则 39
3.2.2 宏 41
3.2.3 列表 41
3.2.4 正确处理优先的事项 41
3.2.5 标记规则集 42
3.2.6 输出告警 42
3.3 本章小结 43
第4章 取证日志 45
4.1 需要考虑的事项 46
4.2 重要的文件 47
4.3 违反规则 50
4.4 关键命令 52
4.5 规则 53
4.6 解析规则 54
4.7 持续监测 58
4.8 顺序和性能 62
4.9 本章小结 63
第5章 Kubernetes漏洞 65
5.1 微型Kubernetes 66
5.2 使用kube-hunter的选项 68
5.2.1 部署方法 69
5.2.2 扫描方法 69
5.2.3 搜寻模式 69
5.3 容器部署 70
5.4 内部集群测试 72
5.5 Minikube与kube-hunter 75
5.6 测试列表 77
5.7 本章小结 78
第6章 容器镜像CVE 79
6.1 理解CVE 80
6.2 Trivy工具 82
6.3 探索Anchore工具 88
6.4 Clair工具 96
6.5 本章小结 101
第Ⅱ部分 DevSecOps工具
第7章 基线扫描(Zap应用程序) 105
7.1 ZAP资源 106
7.2 基线扫描 107
7.3 扫描Nmap的主机 113
7.4 添加正则表达式 114
7.5 本章小结 116
第8章 制定安全规范 117
8.1 安全工具 118
8.2 安装 119
8.3 简单测试 122
8.4 攻击文件的示例 125
8.5 本章小结 128
第9章 Kubernetes合规 129
9.1 迷你Kubernetes环境 130
9.2 使用kube-bench工具 133
9.3 故障排除 138
9.4 自动化 139
9.5 本章小结 140
第10章 保护Git存储库 141
10.1 注意事项 142
10.2 安装并运行Gitleaks工具 144
10.3 安装并运行GitRob 148
10.4 本章小结 151
第11章 主机安全自动化 153
11.1 机器镜像 155
11.2 幂等性 156
11.3 Secure Shell示例 159
11.4 内核变更 162
11.5 本章小结 164
第12章 使用Nikto工具扫描服务器 165
12.1 注意事项 165
12.2 安装 166
12.3 扫描第二台主机 170
12.4 运行选项 171
12.5 命令行选项 172
12.6 规避技术 172
12.7 Nikto工具的主配置文件 175
12.8 本章小结 176
第Ⅲ部分 云端安全
第13章 云端运营持续监测 181
13.1 NetData主机仪表盘 182
13.1.1 安装Netdata工具 182
13.1.2 数据收集器 188
13.1.3 卸载主机软件包 188
13.2 Komiser云平台审查 189
13.3 本章小结 193
第14章 云端守护 195
14.1 安装Cloud Custodian工具 195
14.1.1 安装封装器 196
14.1.2 安装Python软件包 197
14.1.3 与EC2实例交互 198
14.2 更复杂的策略 203
14.3 IAM策略 204
14.4 存储在S3中的静止状态数据 204
14.5 生成告警 205
14.6 本章小结 207
第15章 云端持续审计 209
15.1 使用Lunar测试运行时、主机和云端 209
15.1.1 安装Bash的默认shell 211
15.1.2 执行 211
15.1.3 基于基准的云端持续审计 215
15.2 使用Cloud Reports执行AWS持续审计实务活动 217
15.2.1 生成报告 219
15.2.2 EC2持续审计 221
15.3 利用Prowler对标CIS并执行AWS持续审计 223
15.4 本章小结 225
第16章 AWS云端存储 227
16.1 存储桶 228
16.2 原生安全设置 231
16.3 自动攻击S3存储桶 233
16.4 存储狩猎 236
16.5 本章小结 238
第Ⅳ部分 高级Kubernetes和运行时安全
第17章 Kubernetes外部攻击 243
17.1 Kubernetes网络足迹 244
17.2 针对API Server的攻击 245
17.2.1 API Server信息探查 245
17.2.2 规避API Server信息泄露 246
17.2.3 攻击API Server的配置错误漏洞 247
17.2.4 预防未经身份验证访问API Server 248
17.3 攻击etcd 248
17.3.1 etcd信息探查 248
17.3.2 利用etcd server的配置错误漏洞 248
17.3.3 防止未授权的etcd访问 249
17.4 Kubelet攻击 250
17.4.1 kubelet信息探查 250
17.4.2 利用kubelets的配置错误漏洞 251
17.4.3 防止未经身份验证的kubelet访问 251
17.5 本章小结 252
第18章 Kubernetes的RBAC授权 253
18.1 Kubernetes授权机制 253
18.2 RBAC概述 254
18.3 RBAC陷阱 255
18.3.1 避免使用cluster-admin角色 255
18.3.2 危险的内置用户和内置组 256
18.3.3 只读权限也有危险 257
18.3.4 创建Pod过程的风险 258
18.3.5 Kubernetes瞬时权限 260
18.3.6 其他危险的对象 260
18.4 持续审计RBAC 260
18.4.1 使用kubectl命令 261
18.4.2 其他工具 261
18.5 本章小结 265
第19章 加固网络 267
19.1 容器网络概述 267
19.1.1 节点IP地址 268
19.1.2 Pod IP地址 268
19.1.3 服务IP地址 269
19.2 限制Kubernetes集群中的流量 270
19.2.1 使用网络策略设置集群 270
19.2.2 入门指南 270
19.2.3 允许访问 273
19.2.4 出站流量限制 276
19.2.5 网络策略限制 277
19.3 CNI网络策略扩展 277
19.3.1 供应方Cilium 277
19.3.2 供应方Calico 279
19.4 本章小结 280
第20章 加固工作负载 281
20.1 在Manifests中使用securityContext 281
20.1.1 通用方法 282
20.1.2 allowPrivilegeEscalation选项 282
20.1.3 权能 283
20.1.4 privileged选项 285
20.1.5 readOnlyRootFilesystem选项 285
20.1.6 seccompProfile选项 286
20.2 强制工作负载安全 287
20.3 Pod安全策略 288
20.3.1 建立PSP安全策略 288
20.3.2 设置PSP 290
20.3.3 PSP与RBAC 291
20.4 Pod安全策略的替代产品 294
20.4.1 Open Policy Agent工具 294
20.4.2 Kyverno策略引擎 298
20.5 本章小结 300
