在Linux系统上安装和使用Trivy的方法

本文介绍如何在Linux系统上安装Trivy的方法,支持在RHEL、CentOS、Rocky、Debian、Ubuntu、Arch Linux上安装Trivy。安装后用户可自由的使用Trivy扫描Docker Image和Git漏洞。

在Linux系统上安装Trivy

Trivy可以安装在不同的平台上。这包括将Trivy存储库添加到系统中,然后通过包管理器进行安装。

1.在RHEL/CentOS/Rocky上安装Trivy

使用以下命令添加存储库:

RELEASE_VERSION=$(grep -Po '(?<=VERSION_ID=")[0-9]' /etc/os-release)

cat << EOF | sudo tee -a /etc/yum.repos.d/trivy.repo

[trivy]

name=Trivy repository

baseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/$RELEASE_VERSION/\$basearch/

gpgcheck=0

enabled=1

EOF

添加后,使用以下命令安装Trivy:

sudo yum -y install trivy

或者,您可以使用从Github Release页面获得的RPM包安装Trivy,地址在https://github.com/aquasecurity/trivy/releases/,以下是在命令行中下载的实例:

sudo yum -y install wget curl

VER=$(curl -s https://api.github.com/repos/aquasecurity/trivy/releases/latest|grep tag_name|cut -d '"' -f 4|sed 's/v//')

wget https://github.com/aquasecurity/trivy/releases/download/v${VER}/trivy_${VER}_Linux-64bit.rpm

sudo rpm -Uvh ./trivy_${VER}_Linux-64bit.rpm

2.在Debian/Uubuntu上安装Trivy

可以使用以下命令将Trivy存储库添加到Debian/Uubuntu系统:

sudo apt install wget apt-transport-https gnupg lsb-release

wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -

echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/trivy.list

现在更新APT包索引并安装Trivy:

sudo apt update

sudo apt install trivy

您还可以使用从Github发布页面获得的DEB包:

VER=$(curl -s https://api.github.com/repos/aquasecurity/trivy/releases/latest|grep tag_name|cut -d '"' -f 4|sed 's/v//')

wget https://github.com/aquasecurity/trivy/releases/download/v${VER}/trivy_${VER}_Linux-64bit.deb

sudo dpkg -i trivy_${VER}_Linux-64bit.deb

3.在Arch Linux上安装Trivy

Trivy可以从Arch User Repository安装在Arch Linux上,如下所示:

1].yay

yay -Sy trivy-bin

2].pikaur

pikaur -Sy trivy-bin

4.Homebrew

Homebrew提供了Trivy软件包,可在macOS和Linux系统上安装。您可以使用以下命令从Homebrew安装Trivy:

brew install aquasecurity/trivy/trivy

使用Trivy扫描漏洞

安装Trivy后,可以使用它对容器图像、文件系统、Git存储库执行漏洞扫描。

以下步骤可用于执行任何上述扫描。

1.使用Trivy扫描容器图像漏洞

Trivy可用于使用具有以下语法的简单命令扫描容器图像:

trivy image [YOUR_IMAGE_NAME]

例如:

trivy image python:3.4-alpine

样本输出:

在Linux系统上安装和使用Trivy的方法

您也可以使用TAR文件,例如:

docker pull ruby:3.1-alpine3.15

docker save ruby:3.1-alpine3.15 -o ruby-3.1.tar

trivy image --input ruby-3.1.tar

样本输出:

在Linux系统上安装和使用Trivy的方法

2.使用Trivy扫描文件系统漏洞

用于此操作的命令具有以下语法:

$ trivy fs /path/to/project

例如,扫描具有特定语言文件的本地项目:

git clone https://github.com/aquasecurity/trivy-ci-test.git 

trivy fs trivy-ci-test

样本输出:

在Linux系统上安装和使用Trivy的方法

您还可以使用以下命令扫描项目中的单个文件,例如Pipfile.lock:

trivy fs trivy-ci-test/Pipfile.lock

3.使用Trivy扫描Git存储库漏洞

要扫描Git存储库上的漏洞,请使用具有以下语法的命令:

$ trivy repo https://github.com/knqyf263/trivy-ci-test

代替https://github.com/knqyf263/trivy-ci-test使用Git repo名称。

为了能够扫描私有Git repo,您需要指定GITHUB_TOKEN或GITLAB_TOKEN环境变量。此令牌必须有效,才能访问和扫描存储库:

例如:

##对于GITHUB##

export GITHUB_TOKEN="your_private_github_token"

trivy repo <your private GitHub repo URL>

##对于GITLAB##

export GITLAB_TOKEN="your_private_gitlab_token"

trivy repo <your private GitLab repo URL>

导出后,您将意识到扫描回购的命令与上面的命令类似。

Trivy扫描配置错误

除了扫描漏洞,您还可以使用Trivy扫描Docker、Kubernetes、Terraform和CloudFormation中的错误配置。也可以在Rego中编写自己的策略,用于扫描JSON、YAML文件。

此处使用具有以下语法的命令:

$ trivy config [YOUR_IaC_DIRECTORY]

例如,扫描Dockerfile:

mkdir iac 

vim iac/Dockerfile

将以下行添加到文件中:

FROM composer:1.7.2

COPY composer_laravel.lock /php-app/composer.lock

COPY Gemfile_rails.lock /ruby-app/Gemfile.lock

COPY package-lock_react.json /node-app/package-lock.json

COPY Pipfile.lock /python-app/Pipfile.lock

COPY Cargo.lock /rust-app/Cargo.lock

使用以下命令保存并扫描文件:

trivy config ./iac

样本输出:

在Linux系统上安装和使用Trivy的方法

此外,如果您的目录包含混合的IaC文件,Trivy会提供类型检测,例如:

$ ls iac/

Dockerfile  deployment.yaml  main.tf mysql-8.8.26.tar

执行扫描:

trivy conf --severity HIGH,CRITICAL ./iac

样本输出:

Dockerfile (dockerfile)

Tests: 23 (SUCCESSES: 22, FAILURES: 1, EXCEPTIONS: 0)

Failures: 1 (HIGH: 1, CRITICAL: 0)

deployment.yaml (kubernetes)

Tests: 28 (SUCCESSES: 15, FAILURES: 13, EXCEPTIONS: 0)

Failures: 13 (MEDIUM: 4, HIGH: 1, CRITICAL: 0)

main.tf (terraform)

Tests: 23 (SUCCESSES: 14, FAILURES: 9, EXCEPTIONS: 0)

Failures: 9 (HIGH: 6, CRITICAL: 1)

bucket.yaml (cloudformation)

Tests: 9 (SUCCESSES: 3, FAILURES: 6, EXCEPTIONS: 0)

Failures: 6 (UNKNOWN: 0, LOW: 0, MEDIUM: 2, HIGH: 4, CRITICAL: 0)

mysql-8.8.26.tar:templates/primary/statefulset.yaml (helm)

Tests: 20 (SUCCESSES: 18, FAILURES: 2, EXCEPTIONS: 0)

Failures: 2 (MEDIUM: 2, HIGH: 0, CRITICAL: 0)

通过添加–security-checks config标志,可以在容器映像、文件系统和git存储库扫描中启用错误配置检测。例如:

##对于容器图像

trivy image --security-checks config IMAGE_NAME

##对于文件系统

trivy fs --security-checks config /path/to/dir

总结

通过以上知识,我们成功地学习了如何在Linux系统上安装Trivy,并使用Trivy扫描Docker映像、文件系统和Git存储库中的漏洞。

栏目相关文章