画板

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、k8s安全配置 - 图2

  • 每一条就是一个检查点

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、下载二进制包 :

https://github.com/aquasecurity/kube-bench/releases

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

1、k8s安全配置 - 图3

2)示例

检查master组件安全配置(不是所有的FAIL都一定要处理的,酌情处理)

kube-bench run —targets=master

1、k8s安全配置 - 图4

  • PASS:通过项
  • WARN:告警项
  • FAIL:失败项(需要安全配置的项数字对应的是pdf文档中的检查项,后面会给更具对应的数字给出处理方案)

1、k8s安全配置 - 图5

最后有总结(失败的条数和告警条数等)

1、k8s安全配置 - 图6

该检查基于yaml配置清单(位置:/etc/kube-bench/cfg/cis-1.6/)

1、k8s安全配置 - 图7

配置文件:

  • id:编号
  • text:提示的文本
  • audit:检查使用的命令
  • tests:测试项目
  • remediation:修复方案
  • scored:如果为true,kube-bench无法正常测试,则会生成FAIL,如果为false,无法正常测试,则会生成WARN。
  • type:如果为manual则会生成WARN,如果为skip,则会生成INFO

2、Ingress 配置证书

1、k8s安全配置 - 图8

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步骤:

  1. 准备域名证书文件(来自:openssl/cfssl工具自签或者权威机构颁发)
  2. 将证书文件保存到Secret
  1. kubectl create secret tls web-aliangedu-cn --cert=web.aliangedu.cn.pem --key=web.aliangedu.cn-key.pem
  1. Ingress规则配置tls
  2. kubectl get ingress
  3. 测试

1、k8s安全配置 - 图9这里的域名一定要和签发的证书中的域名对应

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段和端口