首页 > 其他分享 >基础网络安全-K8S之安全漏洞扫描

基础网络安全-K8S之安全漏洞扫描

时间:2024-09-21 18:27:03浏览次数:11  
标签:网络安全 trivy k8s -- 09 db aquasecurity 安全漏洞 K8S

一、前言

在之前的文章《Docker安全学习之——Docker 安全总结》中介绍了docker搭建后使用工具进行漏洞扫描,本篇则是介绍的在K8S搭建后需要开展的扫描工作,包括K8S自身的组件以及docker镜像等,这里介绍的是trivy这一款工具。

二、工具简要介绍

Trivy工具的GITHUB地址为:https://github.com/aquasecurity/trivy,讨论社区地址为:https://github.com/aquasecurity/trivy/discussions,可以在这里提一些问题讨论。Trivy工具可以扫描容器镜像、文件系统、K8S等,安装方式包括容器安装、二进制等方式。Trivy由trivy工具以及漏洞数据库组成,trivy数据库又包括db、javadb两个部分,在默认情况下,工具首次安装时并不会安装漏洞库,在首次运行工具时会自动进行下载,不过由于国内的限制可能下载不成功,可以用国内的下载地址。

三、安装Trivy工具

采用二进制的方式安装比较简单,直接下载release版本,然后解压得到trivy可执行文件即可。

基础网络安全-K8S之安全漏洞扫描_oras

[root@k8s-master1 trivy]# cp trivy /usr/local/bin/

运行trivy测试一下:

[root@k8s-worker1 trivy]# ./trivy image nginx:1.8

基础网络安全-K8S之安全漏洞扫描_trivydb_02

可以看到首次运行的时候在从ghcr.io/aquasecurity/下载db数据库,由于因为下载很慢,现在先解决漏洞库更新的问题。

 四、安装漏洞库

关于数据库的介绍可以看https://github.com/aquasecurity/trivy-db以及https://github.com/aquasecurity/trivy-java-db/ 这两个链接,这里介绍两种方式进行更新,一是离线更新,二是在线更新。使用国内的地址ghcr.nju.edu.cn/aquasecurity/trivy-db:2、ghcr.nju.edu.cn/aquasecurity/trivy-java-db:1

(一)  离线更新

使用oras工具进行离线更新,oras也是一个二进制文件,下载后拷贝到/usr/local/bin目录下,全局皆可以使用。

[root@k8s-worker1 trivy]# oras pull ghcr.nju.edu.cn/aquasecurity/trivy-db:2

Downloading 91177f748f90 db.tar.gz

Downloaded  91177f748f90 db.tar.gz

Pulled [registry] ghcr.nju.edu.cn/aquasecurity/trivy-db:2

Digest: sha256:e568fa3f29ff83f6d6a2564f862ce27b8b9010ab338e26421917ce5f9d6e2184

 [root@k8s-worker1 trivy]# oras pull ghcr.nju.edu.cn/aquasecurity/trivy-java-db:1

Downloading c92eadafdf3b javadb.tar.gz

Downloaded  c92eadafdf3b javadb.tar.gz

Pulled [registry] ghcr.nju.edu.cn/aquasecurity/trivy-java-db:1

Digest: sha256:e6ee14304a8d2651b7f37fecf4fe80be16edcad86dd419503e50431f6531d44b

基础网络安全-K8S之安全漏洞扫描_trivy_03

这样就将漏洞库下载下来了,我们将漏洞库放到/home/trivy/trivy-db/目录下,然后解压,目录结构如下:

基础网络安全-K8S之安全漏洞扫描_k8s_04

执行扫描命令:trivy --cache-dir /home/trivy/trivy-db image nginx:1.8,仍然会从默认的地址去下载漏洞库,通过--skip-db-update跳过db检查,报错:

trivy --cache-dir /home/trivy/trivy-db image nginx:1.8 --skip-db-update

基础网络安全-K8S之安全漏洞扫描_k8s_05

提示:--skip-update cannot be specified on the first run,那就只好在首次运行时进行一次更新。

(二)  在线更新

通过--db-repository、--java-db-repository指定更新地址,完成首次更新:

[root@k8s-worker1 trivy]# ./trivy  image nginx:1.8 --db-repository ghcr.nju.edu.cn/aquasecurity/trivy-db:2

 [root@k8s-worker1 trivy]# ./trivy  image nginx:1.8 --java-db-repository ghcr.nju.edu.cn/aquasecurity/trivy-java-db:1

五、使用trivy进行扫描

(一)  使用Trivy对image进行扫描

Trivy的命令比较多,扫描的结果可以以多种格式输出,默认是table,由于输出内容较多,我将结果存放到1.txt中,如下:

trivy image nginx:1.8  > output/1.txt,查看一下结果:

基础网络安全-K8S之安全漏洞扫描_k8s扫描_06

       Trivy还可以过滤漏洞的安全级别,指定json格式输出:

[root@k8s-worker1 ~]# trivy image nginx:1.8 -f json -s HIGH,CRITICAL -o trivy/output/2.txt

基础网络安全-K8S之安全漏洞扫描_k8s扫描_07

       查看文件:less trivy/output/2.txt

基础网络安全-K8S之安全漏洞扫描_trivydb_08

(二)使用Trivy对k8s进行扫描

使用report summary命令只输入简要信息,使用下面的命令发现报错:

[root@k8s-master1 trivy]# trivy k8s --report summary --disable-node-collector -d

2024-09-18T00:12:50-04:00       DEBUG   No plugins loaded

2024-09-18T00:12:50-04:00       DEBUG   Default config file "file_path=trivy.yaml" not found, using built in values

2024-09-18T00:12:50-04:00       DEBUG   Cache dir       dir="/root/.cache/trivy"

2024-09-18T00:12:50-04:00       DEBUG   Cache dir       dir="/root/.cache/trivy"

2024-09-18T00:12:50-04:00       DEBUG   Parsed severities       severities=[UNKNOWN LOW MEDIUM HIGH CRITICAL]

2024-09-18T00:12:50-04:00       DEBUG   Ignore statuses statuses=[]

2024-09-18T00:12:53-04:00       DEBUG   DB update was skipped because the local DB is the latest

2024-09-18T00:12:53-04:00       DEBUG   DB info schema=2 updated_at=2024-09-20T18:12:42.781188704Z next_update=2024-09-21T00:12:42.781188404Z downloaded_at=2024-09-18T03:42:23.697619193Z

6 / 143 [------>_____________________________________________________________________________________________________________________________________________________] 4.20% 0 p/s

2024-09-18T00:25:38-04:00       FATAL   Fatal error

  - k8s scan error:

    github.com/aquasecurity/trivy/pkg/k8s/commands.(*runner).run

        /home/runner/work/trivy/trivy/pkg/k8s/commands/run.go:91

  - context deadline exceeded

基础网络安全-K8S之安全漏洞扫描_k8s扫描_09

这一步非常耗时时间,可以增加timeout,默认是5分钟,我们设置为2小时:

[root@k8s-master1 trivy]# trivy k8s --report summary --disable-node-collector -d --timeout 2h

可以看到本次扫描成功了,但是因为我是在K8S的master上面扫描的,在Master上没有安装docker,因此对Image扫描失败,后面是简要信息的输出:

基础网络安全-K8S之安全漏洞扫描_k8s_10

基础网络安全-K8S之安全漏洞扫描_k8s扫描_11

基础网络安全-K8S之安全漏洞扫描_oras_12

--report 默认的参数是all,也即输出所有的详细信息,由于信息比较多,可以输出到特定的文件中:

[root@k8s-master1 trivy]# trivy k8s --report all --disable-node-collector -d --timeout 2h > output/k8s.txt

基础网络安全-K8S之安全漏洞扫描_trivydb_13

查看文本中输出的信息:

基础网络安全-K8S之安全漏洞扫描_k8s_14

六、总结

Trivy还有很多的功能,可以通过--help查看具体的内容,同时trivy还有一部分功能还在测试中,在使用的时候可以结合其他的工具进行总体安全评估。

标签:网络安全,trivy,k8s,--,09,db,aquasecurity,安全漏洞,K8S
From: https://blog.51cto.com/u_9652359/12074958

相关文章