在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
样本输出:
您也可以使用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
样本输出:
2.使用Trivy扫描文件系统漏洞
用于此操作的命令具有以下语法:
$ trivy fs /path/to/project
例如,扫描具有特定语言文件的本地项目:
git clone https://github.com/aquasecurity/trivy-ci-test.git
trivy fs trivy-ci-test
样本输出:
您还可以使用以下命令扫描项目中的单个文件,例如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
样本输出:
此外,如果您的目录包含混合的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存储库中的漏洞。