某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 学习建议

  • Docker命令大全
  • Kubernetes教程

  • CKS教程

    • 前言

    • CKS考试学习指南(翻译)

      • 集群设置

        • Kubernetes网络策略
        • Kubernetes CIS基准

          • Kubernetes CIS基准
          • 使用Kube-bench进行Kubernetes CIS基准测试
          • Ingress安全

          • Kubernetes节点的元数据端点
          • 保护Kubernetes GUI
          • 在部署之前验证平台二进制文件
        • 集群加固

        • 系统加固

        • 最小化微服务漏洞

        • 供应链安全

        • 监控、日志记录和运行时安全性

    • 云原生安全
    • CKS教程
    • CKS考试学习指南(翻译)
    • 集群设置
    • Kubernetes CIS基准
    carsaid
    2023-12-03
    目录

    使用Kube-bench进行Kubernetes CIS基准测试

    翻译-2

    原文:https://devopscube.com/kube-bench-guide/

    - name: 翻译-2
      desc: 原文:https://devopscube.com/kube-bench-guide/
      bgColor: '#F0DFB1'
      textColor: 'green'
    
    1
    2
    3
    4

    # 使用Kube-bench进行Kubernetes CIS基准测试

    Not Found Image

    在这篇博客中,您将了解 kube-bench 以及如何使用 kube-bench 对集群运行 Kubernetes CIS 基准测试。

    在为生产用例管理 Kubernetes 集群时,安全性和合规性是需要考虑的关键因素。需要安全地配置群集,以最大限度地减少攻击面。此外,每个组织都可能有系统审计要求,以符合安全标准。

    # 1什么是CIS Kubernetes基准?

    笔记

    CIS 基准是社区共识过程中的产物,其中包含为 Kubernetes 开发的安全配置指南 —— cisecurity.org

    Kubernetes CIS 基准测试涵盖以下安全指南和建议

    • 控制平面组件:控制平面节点的配置和组件建议。
    • 工作节点:工作节点和 Kubelet 配置。
    • 策略:RBAC、服务帐户、Pod 安全标准、CNI 和网络策略、Secret 管理等。

    下图显示了 Kubernetes API 服务器的 CIS 指南示例列表。

    Not Found Image

    # 2什么是Kube-bench?

    Kube-bench 是一个开源工具,通过对 Center for Internet Security (CIS) Kubernetes 基准运行检查来评估 Kubernetes 集群的安全性。它是由云原生安全解决方案提供商 Aqua Security 在 GoLang 中开发的。

    Kube-bench是一个开源工具,通过对互联网安全中心(CIS)Kubernetes 基准 (opens new window)运行检查来评估 Kubernetes 集群的安全性。它是由云原生安全解决方案提供商 Aqua Security (opens new window) 在 GoLang 中开发出来的。

    Kube-bench 可以帮助您完成以下任务。

    • 集群加固:Kube-bench 根据 CIS 基准中概述的安全指南自动检查集群配置。
    • 策略实施:Kube-bech 检查 RBAC 配置,以确保将必要的最低权限应用于服务帐户、用户等。 它还检查 Pod 安全标准和 Secret 管理。
    • 网络分段:Kube-bench 检查 CNI 及其对网络策略的支持,以确保为所有命名空间定义了网络策略。

    当谈到组织使用 kube-bench 时,Red Hat(红帽)进行的一项安全调查 (opens new window)发现,24% 的受访者使用它。

    Not Found Image

    图源: redhat.com

    您可以通过两种方式对集群运行 kube-bench 检查。

    • 在命令行中运行 kube-bench CLI
    • 在 Pod 内运行

    让我们看看这两种选择。

    # 3从命令行运行Kube-bench

    如果您正在准备 CKS 认证 (opens new window),那么在命令行中运行 kube-bench 是重要的任务之一。

    笔记

    仅当您有权访问控制平面节点时,此方法才有效。如果您正在使用 Kubernetes 托管服务,则可以将 kube-bench 作为 pod 运行,如下一节所述。

    # 第一步

    登录到控制平面(master)节点并创建一个 kube-bench 目录

    sudo mkdir -p /opt/kube-bench
    
    1

    # 第二步

    转到 kube-bench releases (opens new window) 页面,然后选择最新的 Linux 二进制文件下载链接。

    curl -L https://github.com/aquasecurity/kube-bench/releases/download/v0.6.11/kube-bench_0.6.11_linux_amd64.tar.gz -o /opt/kube-bench.tar.gz
    
    1

    # 第三步

    将二进制文件解压缩到/opt/kube-bench文件夹

    tar -xvf kube-bench.tar.gz -C /opt/kube-bench
    
    1

    如果检查/opt/kube-bench目录,您将看到kube-bench可执行文件和cfg文件夹,其中包含不同版本的基准变体以及 GKE、EKS、AKS 等 kubernetes 托管服务资源,如以下树结构所示。

    (((译者加:“GKE” 是谷歌云的 Kubernetes 托管服务,“EKS” 是亚马逊云的,“AKS” 是微软云的)))

    vagrant@master-node:~$ tree
    .
    ├── cfg
    │   ├── ack-1.0
    │   │   ├── config.yaml
    │   │   ├── controlplane.yaml
    │   │   ├── etcd.yaml
    │   │   ├── managedservices.yaml
    │   │   ├── master.yaml
    │   │   ├── node.yaml
    │   │   └── policies.yaml
    │   ├── aks-1.0
    │   │   ├── config.yaml
    │   │   ├── controlplane.yaml
    │   │   ├── managedservices.yaml
    │   │   ├── master.yaml
    │   │   ├── node.yaml
    │   │   └── policies.yaml
    │   ├── cis-1.6-k3s
    │   │   ├── config.yaml
    │   │   ├── controlplane.yaml
    │   │   ├── etcd.yaml
    │   │   ├── master.yaml
    │   │   ├── node.yaml
    │   │   └── policies.yaml
    │   ├── config.yaml
    │   ├── eks-stig-kubernetes-v1r6
    │   │   ├── config.yaml
    │   │   ├── controlplane.yaml
    │   │   ├── managedservices.yaml
    │   │   ├── master.yaml
    │   │   ├── node.yaml
    │   │   └── policies.yaml
    │   ├── gke-1.2.0
    │   │   ├── config.yaml
    │   │   ├── controlplane.yaml
    │   │   ├── managedservices.yaml
    │   │   ├── master.yaml
    │   │   ├── node.yaml
    │   │   └── policies.yaml
    │   └── rh-1.0
    │       ├── config.yaml
    │       ├── controlplane.yaml
    │       ├── etcd.yaml
    │       ├── master.yaml
    │       ├── node.yaml
    │       └── policies.yaml
    ├── kube-bench
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48

    # 第四步

    将 kube-bench 可执行文件移动到属于系统 PATH 的/usr/local/bin目录中

    sudo mv /opt/kube-bench/kube-bench /usr/local/bin/
    
    1

    现在,您可以从任何系统位置执行kube-bench。

    让我们使用 kube-bench 可执行文件运行基准测试。我们将使用通用的 config.yaml 来运行以下基准测试命令。您必须以 sudo 身份运行该命令。

    sudo kube-bench --config-dir /opt/kube-bench/cfg --config /opt/kube-bench/cfg/config.yaml
    
    1

    上述命令将运行基准检查,并创建检查项、修复建议和摘要,如下所示。

    # 检查项示例
    [INFO] 1 Control Plane Security Configuration
    [INFO] 1.1 Control Plane Node Configuration Files
    [PASS] 1.1.1 Ensure that the API server pod specification file permissions are set to 644 or more restrictive (Automated)
    [PASS] 1.1.2 Ensure that the API server pod specification file ownership is set to root:root (Automated)
    
    # 修复建议示例
    == Remediations master ==
    1.1.9 Run the below command (based on the file location on your system) on the control plane node.
    For example, chmod 600 <path/to/cni/files>
    1.1.12 On the etcd server node, get the etcd data directory, passed as an argument --data-dir,
    from the command 'ps -ef | grep etcd'.
    
    # 摘要示例
    == Summary master ==
    41 checks PASS
    9 checks FAIL
    11 checks WARN
    0 checks INFO
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    如果您想将报告放在单独的文件中,可以将输出定向到如下所示的文件。

    sudo kube-bench --config-dir /opt/kube-bench/cfg --config /opt/kube-bench/cfg/config.yaml > kube-bench.report
    
    1
    Not Found Image

    # 额外-从软件包安装Kube-bench

    您还可以使用 Linux 软件包安装和运行 kube-bench。在项目的 releases 页面上,您将找到.deb和.rpm软件包。

    例如,要在 Debian/Ubuntu 系统上安装,您可以执行以下命令。

    curl -L  https://github.com/aquasecurity/kube-bench/releases/download/v0.6.11/kube-bench_0.6.11_linux_amd64.deb -o kube-bench.deb
    
    sudo dpkg -i  kube-bench.deb
    
    1
    2
    3

    安装完成后,您可以在 /etc/kube-bench/ 目录中找到 kube-bench cfg 文件夹。

    此外,您可以直接运行kube-bench检查,而无需提供目录配置参数,就像我们在二进制安装中所做的那样。默认情况下,kube-bench会自动引用/etc/kube-bench/cfg目录。

    若要运行检查,请执行以下命令。

    sudo kube-bench
    
    1

    # 4在Pod中运行Kube-bench

    运行kube-bench的另一种方法是将其部署为 Kubernetes job (opens new window) 的 Pod。当您无法通过 root 权限访问控制平面或工作节点时,此方法对于在托管的 Kubernetes 集群上运行 CIS 基准测试特别有用。

    kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml
    
    1

    或者,如果要修改 YAML,可以将其下载到文件中,然后应用它

    curl https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml > job.yaml
    
    1
    kubectl apply -f job.yaml
    
    1

    然后 kube-bench 报告将在 pod 日志中可用。首先列出 pod

    kubectl get pods
    
    1

    现在通过 pod 名称获取日志。将 kube-bench-4j2bs 替换为您的 pod 名称。

    kubectl logs kube-bench-4j2bs
    
    1

    您还可以将 kube-bench 日志导出到文件中

    kubectl logs kube-bench-4j2bs > kube-bench.report
    
    1

    # 5Kube-bench 可能的错误

    unable to determine benchmark version: config file is missing 'version_mapping' sectio
    
    (无法确定基准版本:配置文件缺少 “version_mapping” 部分)
    
    1
    2
    3

    如果你运行kube-bench命令时没有提供--config-dir和--config参数,则会出现上述错误。

    # 6适用于Kubernetes托管集群的Kube-bench(GKE、EKS、AKS 等)

    如果您正在使用 GKE、EKS 或 AKS 等 Kubernetes 托管服务,则无法访问控制平面节点来安装 kube-bench 应用程序。

    所有托管的 Kubernetes 服务都遵循责任共担模型,其中云提供商负责控制平面的可用性和安全性,而用户需要在用户、策略等方面负责安全性。

    此外,当你部署 Pod 时,它会被调度到一个节点上,Kube-bench 只会发现当前节点上的 kubelet 并运行相应检查。在这种情况下,它只会对工作节点运行测试。如果您将 Pod 调度到控制平面上,则它将运行控制平面所需的所有检查。

    (((译者加:Kube-bench 的 Pod 被调度到哪个节点之上,就对哪个节点运行检查)))

    # 7kube-bench替代方案

    如果您正在寻找 kube-bench 的开源替代方案来运行 CIS 基准测试,则您可以看看以下两个工具。

    1. Checkov (opens new window)
    2. KubeScape (opens new window)

    # 8总结

    Kube-bench 有助于验证您的 Kubernetes 集群是否已根据互联网安全中心(CIS)的建议进行了配置。

    为了符合组织的安全策略和审计要求,您可以运行 kube-bench 来检查和修复集群中的安全问题。

    如果您正在学习 kubernetes,请查看全面的 kubernetes 教程 (opens new window)。

    本文原作者:Bibin Wilson

    https://devopscube.com/author/bibinwilson/

    - name: 本文原作者:Bibin Wilson
      desc: https://devopscube.com/author/bibinwilson/
      bgColor: '#38b6ff'
      textColor: 'black'
    
    1
    2
    3
    4
    编辑 (opens new window)
    Kubernetes CIS基准
    Ingress安全

    ← Kubernetes CIS基准 Ingress安全→

    最近更新
    01
    API测试笔记
    04-30
    02
    msfvenom
    03-29
    03
    Metasploit
    03-29
    更多文章>
    Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式