1.背景
在对私有环境部署的kubernetes集群进行安全扫描时发现SSL/TLS协议信息漏洞(CVE-2016-2183),本文将对漏洞原因和修复方案进行介绍。
2.漏洞原因
传输层安全协议(Transport Layer Security,缩写TLS)及其前身安全套阶字层(Secure Sockets Layer,缩写SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。
分析漏洞报告中的ip和端口,可以发现是主机上部署的k8s服务使用了不安全的TLS版本和SSL协议,因此需要修改服务配置文件,禁用3DES相关的加密配置。
3.修复方案
- etcd
etcd默认使用TLSv1.2,只需要设置SSL协议
--cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
修改配置后重启服务
systemtctl daemon-reload && systemctl restart etcd.service
注意:
直接修改etcd.service文件,在启动参数中添加该配置后重启服务,发现漏洞仍然存在,配置没有生效
原因是
因此,如果启动服务时用--config-file参数指定了配置文件,需要修改配置文件
- kube-apiserver、kube-controller-manager、kube-scheduler
修改配置文件
--tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
重启服务
systemtctl daemon-reload
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service
- kubelet
修改配置文件
--tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
重启服务
systemtctl daemon-reload && systemctl restart kubelet.service
4. 验证
nmap -sV --script ssl-enum-ciphers -p [port] [ip]