
# CCE节点安全配置建议
#### 及时跟踪处理官网发布的漏洞
节点在新的镜像发布前请参考[漏洞公告](https://support.huaweicloud.com/bulletin-cce/cce_bulletin_0011.html)，完成节点漏洞修复。
#### 节点不暴露到公网
- 如非必需，节点不建议绑定EIP，以减少攻击面。
- 在必须使用EIP的情况下，应通过合理配置防火墙或者安全组规则，限制非必须的端口和IP访问。
在使用cce集群过程中，由于业务场景需要，在节点上配置了kubeconfig.json文件，kubectl使用该文件中的证书和私钥信息可以控制整个集群。在不需要时，请清理节点上的/root/.kube目录下的目录文件，防止被恶意用户利用：
rm -rf /root/.kube
#### 加固VPC安全组规则
CCE作为通用的容器平台，安全组规则的设置适用于通用场景。用户可根据安全需求，通过**网络控制台** 的**安全组**找到CCE集群对应的安全组规则进行安全加固。
详情请参见[如何加固CCE集群的自动创建的安全组规则？](https://support.huaweicloud.com/cce_faq/cce_faq_00265.html)
#### 节点应按需进行加固
CCE服务的集群节点操作系统配置与开源操作系统默认配置保持一致，用户在节点创建完成后应根据自身安全诉求进行安全加固。
CCE提供以下建议的加固方法：
- 通过"创建节点"的"安装后执行脚本"功能，在节点创建完成后，执行命令加固节点。具体操作步骤参考创建节点的"**高级配置** "中的"**安装后执行脚本**"。"安装后执行脚本"的内容需由用户提供。
- 通过CCE提供的"私有镜像制作"功能，制作私有镜像作为集群的工作节点镜像。用户按照指导，基于自己的安全加固镜像制作可用于集群工作节点创建的私有镜像，制作流程参考[自定义镜像](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_00026.html)。
 
#### 禁止容器获取宿主机元数据
当用户将单个CCE集群作为共享集群，提供给多个用户来部署容器时，应限制容器访问openstack的管理地址（169.254.169.254），以防止容器获取宿主机的元数据。
修复方式参考ECS文档-[元数据获取](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0166.html)-使用须知。
![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/warning_3.0-zh-cn.png)
该修复方案可能影响通过ECS Console修改密码，修复前须进行验证。
1. 获取集群的网络模式和容器网段信息。 
   在CCE的"集群管理"界面查看集群的网络模式和容器网段。
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002649970738.png "点击放大")
   
   
2. 禁止容器获取宿主机元数据。 
   - VPC网络集群
     1. 以root用户登录集群的每一个node节点，执行以下命令：
        ```
        iptables -I OUTPUT -s {container_cidr} -d 169.254.169.254 -j REJECT
        ```
        其中，{container_cidr}是集群的容器网络，如10.0.0.0/16。
        为保证配置持久化，建议将该命令写入/etc/rc.local 启动脚本中。
        
     
     2. 在容器中执行如下命令访问openstack的userdata和metadata接口，验证请求是否被拦截。
        ```
        curl 169.254.169.254/openstack/latest/meta_data.json
        curl 169.254.169.254/openstack/latest/user_data
        ```
        
      
   
   - 容器隧道网络集群
     1. 以root用户登录集群的每一个node节点，执行以下命令：
        ```
        iptables -I FORWARD -s {container_cidr} -d 169.254.169.254 -j REJECT
        ```
        其中，{container_cidr}是集群的容器网络，如10.0.0.0/16。
        为保证配置持久化，建议将该命令写入/etc/rc.local 启动脚本中。
        
     
     2. 在容器中执行如下命令访问openstack的userdata和metadata接口，验证请求是否被拦截。
        ```
        curl 169.254.169.254/openstack/latest/meta_data.json
        curl 169.254.169.254/openstack/latest/user_data
        ```
        
      
   
   - CCE Turbo集群 v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0以下版本集群：无需进行额外配置。
     v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本集群：登录CCE控制台，单击集群名称，并在左侧导航栏中选择"配置中心"，查看"网络配置"页签中的"Pod访问元数据"配置。
     - 当"Pod访问元数据"处于关闭状态时，无需进行额外配置，已禁止容器获取宿主机元数据。
     
     - 当"Pod访问元数据"处于开启状态时，请参考以下步骤禁止容器获取宿主机元数据。
       1. 以root用户登录集群的每一个node节点，执行以下命令：
          ```
          iptables -I FORWARD -s {container_cidr} -d 169.254.169.254 -j REJECT
          ```
          其中，{container_cidr}是集群的容器网络，如10.0.0.0/16。
          为保证配置持久化，建议将该命令写入/etc/rc.local 启动脚本中。
          
       
       2. 在容器中执行如下命令访问openstack的userdata和metadata接口，验证请求是否被拦截。
          ```
          curl 169.254.169.254/openstack/latest/meta_data.json
          curl 169.254.169.254/openstack/latest/user_data
          ```
          
        
       
   
   
   
   
 
