有台机器跑的旧版k3s,被扫出来有漏洞需要修复。尝试过网上升级OpenSSL版本的方法,没啥用,因为k3s的ingress是traefik,这玩意的pod里自带了tls相关的组件,不依赖节点的OpenSSL,升级OpenSSL也不能修复这个漏洞
因为机器在跑生产,ingress组件走生产流量,不能随便升级,CVE-2016-2183
这个漏洞主要是3DES算法有缺陷,禁用该算法即可修复漏洞
环境信息
OS | CentOS 7 |
k3s | v1.21.14+k3s1 |
traefik | 2.6.1 |
漏洞扫描
用nmap
工具来扫描k3s节点暴露的443端口
root@ubuntu:~# nmap -p 443 --script ssl-enum-ciphers 192.168.50.125
Starting Nmap 7.93 ( https://nmap.org ) at 2024-05-21 11:15 CST
Nmap scan report for 192.168.50.125
Host is up (0.00027s latency).
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
TLSv1.0+的结果就不放了,可以看到启用了3DES算法,且有一条warning
提示vulnerable to SWEET32 attack
,说明漏洞存在
禁用3DES算法
先挂一个文档链接在这里
https://doc.traefik.io/traefik/v2.6/https/tls/#tls-options
traefik提供了一个名为TLSOption
的crd,用来控制traefik的关于tls的一些行为,通过TLSOption可以控制traefik使用一些特定的加密算法,将3DES算法排除
重点关注文档里的这一块:
要创建适用于所有(未指定TLSOption)ingress的默认TLSOption,需要在default
命名空间下创建名为default
的TLSOption,机器上不需要对某个特定的ingress规则指定TLSOption,逐个禁用3DES算法也麻烦,直接加一个默认规则就好
对应的yaml文件如下:
apiVersion: traefik.containo.us/v1alpha1
kind: TLSOption
metadata:
name: default
namespace: default
spec:
minVersion: VersionTLS12
cipherSuites:
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA
加密算法是从上面nmap的结果抄的,这里还顺便指定了最小TLS版本,不需要的话可以去掉
应用一下yaml文件:
kubectl create -n default -f default-tlsoption.yaml
验证
再跑一次nmap扫描
root@ubuntu:~# nmap -p 443 --script ssl-enum-ciphers 192.168.50.125
Starting Nmap 7.93 ( https://nmap.org ) at 2024-05-21 11:38 CST
Nmap scan report for 192.168.50.125
Host is up (0.00025s latency).
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| compressors:
| NULL
| cipher preference: server
可以看到两个3DES算法消失了,warning也没了,漏洞修复完成