1、CIS基准测试工具-kube-beach
1.1、介绍
互联网安全中心(CIS,Center for Internet Security),是一个非盈利组织,致力为互联网提供 免费的安全防御解决方案。
官网:https://www.cisecurity.org/
Kubernetes CIS基准:https://www.cisecurity.org/benchmark/kubernetes/
下载pdf后,根据里面的基准来检查k8s集群配置, 但内容量太大,一般会采用相关工具来完成这项工作。- 每一条就是一个检查点
1.2、kube-beach部署
- 新版本需要使用
<font style="background-color:#FADB14;">manifest</font>
部署到k8s集群中进行查看使用(以下我们使用旧的二进制版本)
Kube-bench是容器安全厂商Aquq推出的工具,以CIS K8s基准作为基础,来检查K8s是否安全部署。 主要查找不安全的配置参数、敏感的文件权限、不安全的帐户或公开端口等等
项目地址:https://github.com/aquasecurity/kube-bench
1、下载二进制包 :
2、解压使用
tar zxvf kube-bench-0.6.4.tar.gz mkdir /etc/kube-bench # 创建默认配置文件路径 mv cfg /etc/kube-bench/cfg
1.3、kube-beach使用
1)选项
使用kube-bench run
进行测试,该指令有以下常用参数:
常用参数:
- -s, —targets 指定要基础测试的目标,这个目标需要匹配cfg/中的 文件名称,已有目标:master, controlplane, node, etcd, policies
- —version:指定k8s版本,如果未指定会自动检测
- —benchmark:手动指定CIS基准版本,不能与—version一起使用
https://github.com/aquasecurity/kube-bench/blob/main/docs/platforms.md
2)示例
检查master组件安全配置(不是所有的FAIL都一定要处理的,酌情处理)
kube-bench run —targets=master
- PASS:通过项
- WARN:告警项
- FAIL:失败项(需要安全配置的项数字对应的是pdf文档中的检查项,后面会给更具对应的数字给出处理方案)
最后有总结(失败的条数和告警条数等)
该检查基于yaml配置清单(位置:/etc/kube-bench/cfg/cis-1.6/)
配置文件:
- id:编号
- text:提示的文本
- audit:检查使用的命令
- tests:测试项目
- remediation:修复方案
- scored:如果为true,kube-bench无法正常测试,则会生成FAIL,如果为false,无法正常测试,则会生成WARN。
- type:如果为manual则会生成WARN,如果为skip,则会生成INFO
2、Ingress 配置证书
Ingress:k8s中的一个抽象资源,给管理员提供一个暴露应用的入口定义方法
Ingress Controller:根据Ingress生成具体的路由规则,对Pod负载均衡器
HTTPS的重要性
HTTPS是安全的HTTP,HTTP 协议中的内容都是明文传输,HTTPS 的目的是将这 些内容加密,确保信息传输安全。最后一个字母 S 指的是 SSL/TLS 协议,它位于 HTTP 协议与 TCP/IP 协议中间。
HTTPS = HTTP + TLS
HTTPS优势:
1、加密隐私数据:防止您访客的隐私信息(账号、地址、手机号等)被劫持或窃取。
2、安全身份认证:验证网站的真实性,防止钓鱼网站。
3、防止网页篡改:防止数据在传输过程中被篡改,保护用户体验。
4、地址栏安全锁:地址栏头部的“锁”型图标,提高用户信任度。
5、提高SEO排名:提高搜索排名顺序,为企业带来更多访问量。
HTTPS
配置HTTPS步骤:
- 准备域名证书文件(来自:openssl/cfssl工具自签或者权威机构颁发)
- 将证书文件保存到Secret
kubectl create secret tls web-aliangedu-cn --cert=web.aliangedu.cn.pem --key=web.aliangedu.cn-key.pem
- Ingress规则配置tls
- kubectl get ingress
- 测试
这里的域名一定要和签发的证书中的域名对应
3、网络策略控制集群内部网络通信
默认情况下,Kubernetes 集群网络没任何网络限制,Pod 可以与任何其他 Pod 通信,在某些场景下就需要进行网络控制,减少网络攻击面,提高安全性,这就会用到网络策略。网络策略(Network Policy):是一个K8s资源,用于限制Pod出入流量,提供Pod级别和Namespace级别网络访问控制。
- 全网通
网络策略的应用场景:
• 应用程序间的访问控制,例如项目A不能访问项目B的Pod
• 开发环境命名空间不能访问测试环境命名空间Pod
• 当Pod暴露到外部时,需要做Pod白名单
• 多租户网络环境隔离
网络策略介绍:
- podSelector:目标Pod,根据标签选择。
- policyTypes:策略类型,指定策略用于入站、出站流量。
- Ingress:from是可以访问的白名单,可以来自于IP段、命名空间、
- Pod标签等,ports是可以访问的端口。
- Egress:这个Pod组可以访问外部的IP段和端口