简介
Vuls 是一款无代理、免费且开源的 Linux 和 FreeBSD 漏洞扫描器。Vuls 主要用 Go 语言编写,可以在任何地方运行。你可以在云端、本地和 Docker 上运行 Vuls,并且它支持主要的发行版。Vuls 提供高质量的扫描,支持多个漏洞数据库,例如 NVD、JVN、OVAL、RHSA/ALAS/ELSA/FreeBSD-SA。
使用 Vuls,你可以使用多种方法扫描多个操作系统。你可以扫描主机本地,也可以通过 SSH 扫描远程主机/服务器。它还提供多种扫描方法:不需要 root 权限的快速扫描和需要 root 权限的深度扫描。Vuls 可以一次扫描多个目标服务器。扫描完成后,你可以通过电子邮件和 Slack 发送结果。
在本指南中,你将学习如何在 Debian 12 服务器上安装 Vuls 漏洞扫描器。你将安装 Vuls,设置 CVE 数据库,然后使用 Vuls 扫描本地系统和远程机器。
接下来,我将一步一步教大家如何进行安装和部署!!
准备工作
服务器准备
必要前提:
- 一个充满求知欲的大脑。
- 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://rainyun.ivwv.site
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
- 点击 云产品 → 云服务器 → 立即购买。
- 选择距离你较近的区域,以保证低延迟。
- 按照自己需求选择配置,选择 Debian 12 版本,按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
- 我们使用
PowerShell
进行SSH
远程连接到服务器,Win+R
打开运行窗口,输入powershell
后点击确定。
- 输入
ssh root@你的服务器IP
例如ssh root@154.9.227.239
回车后,首次需要输入yes
,再次回车后即可登录服务器。
- 到此为止,我们的云服务器就远程连接上了。
安装依赖项
在安装 Vuls 之前,你必须确保已安装依赖项。在本节中,你将安装 ‘debian-goodies’ 和 ‘reboot-notifier’ 软件包作为 Vuls 的依赖项。
首先,运行以下命令更新你的 Debian 软件包索引。
sudo apt update
现在使用以下命令安装软件包 ‘debian-goodies’ 和 ‘reboot-notifier’。输入 ‘Y’ 以确认安装。
sudo apt install debian-goodies reboot-notifier
使用安装脚本安装 Vuls
安装依赖项后,你将使用安装脚本安装 Vuls。这将自动编译和安装 Vuls 以及其他 Vuls 工具到你的系统中。
要安装 Vuls,请执行以下命令。通过此命令,你将下载 Vuls 安装脚本 ‘install.sh’ 并运行它。
bash <( curl -s https://raw.githubusercontent.com/vulsio/vulsctl/master/install-host/install.sh )
现在,安装脚本将安装最新版本的 Golang,然后编译和安装 Vuls 的多个工具,例如 ‘go-cti’、‘go-cve-dictionary’、‘goval-dictionary’、‘go-exploitdb’、‘go-kev’、‘go-msfdb’ 和 ‘gost’。
安装完成后,检查 ‘/usr/local/bin’ 目录,你会看到 Vuls 的二进制文件及其工具。
ls /usr/local/bin/
你现在可以使用下面的 ‘vuls help’ 命令检查帮助消息。
vuls help
你会得到如下输出:
配置 Vuls
安装 Vuls 后,你需要先配置它才能扫描任何计算机或服务器。在本节中,你将为 Vuls 安装创建一个新目录和文件。你将为特定的 SQLite 数据库定义 CVE 数据库,并为 localhost 创建第一个扫描配置。
创建一个新目录 ‘/opt/vuls’ 并进入该目录。然后,使用 ‘nano’ 编辑器创建一个新文件 ‘config.toml’。
mkdir -p /opt/vuls; cd /opt/vuls
nano config.toml
输入以下配置以将 CVE 数据库与 Vuls 集成。此外,在最后一行,你正在定义 localhost 的扫描。
[cveDict]
type = "sqlite3"
SQLite3Path = "/opt/vuls/cve.sqlite3"
[ovalDict]
type = "sqlite3"
SQLite3Path = "/opt/vuls/oval.sqlite3"
[gost]
type = "sqlite3"
SQLite3Path = "/opt/vuls/gost.sqlite3"
[metasploit]
type = "sqlite3"
SQLite3Path = "/opt/vuls/go-msfdb.sqlite3"
[servers]
[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast-root" ]
#scanMode = ["fast", "fast-root", "deep", "offline"]
完成后,保存并退出文件。
最后,运行下面的 ‘vuls’ 命令以验证你的配置。
vuls configtest
如果配置正确,你将看到以下输出:
使用 Vuls 创建 CVE 数据库
在本节中,你将使用 Vuls 工具从各种来源构建新的 CVE 数据库。你将为 Debian 安全跟踪器、NVD、OVAL 和 Metasploit 数据库创建 CVE 数据库。
首先,移动到 ‘/opt/vuls’ 目录:
cd /opt/vuls
现在运行以下命令,从多个来源下载并构建 CVE 数据库。在此示例中,你将使用来自 Debian 安全跟踪器、NVD、OVAL 和 Metasploit 数据库的 CVE 数据库。
gost fetch debian --dbpath /opt/vuls/gost.sqlite3
go-cve-dictionary fetch nvd --dbpath /opt/vuls/cve.sqlite3
goval-dictionary fetch debian 12 --dbpath /opt/vuls/oval.sqlite3
go-msfdb fetch msfdb --dbpath /opt/vuls/go-msfdb.sqlite3
该过程完成后,你的 CVE 数据库将在 ‘/opt/vuls’ 目录中可用。使用以下命令检查 ‘/opt/vuls’ 目录。
ls /opt/vuls/*.sqlite3
使用 Vuls 扫描 localhost
至此,你已经配置了 Vuls 并创建了 CVE 数据库。现在你准备好使用 Vuls 扫描你的 localhost 或本地机器。
要扫描你的本地机器,请运行下面的 ‘vuls’ 命令。
vuls scan localhost
该过程完成后,你将在终端上看到简单的结果。
现在运行下面的 ‘vuls tui’ 命令以查看详细的扫描报告。
vuls tui
在下面,你可以看到 localhost 的详细扫描报告。
按 ‘Ctrl+c’ 从 Vuls 终端用户界面退出。
使用 Vuls 扫描远程服务器
在本节中,你将使用 Vuls 扫描远程服务器。在本例中,目标服务器将是 IP 地址为 ‘192.168.10.45’,用户为 ‘rock’ 的 Rocky Linux 9 服务器。
首先,运行以下命令,下载 RedHat 9 的 OVAL CVE 数据库:
goval-dictionary fetch redhat 9 --dbpath /opt/vuls/oval.sqlite3
现在生成新的 SSH 公钥和私钥,然后将公钥上传到目标服务器。在此示例中,目标服务器是 IP 地址为 ‘192.168.10.45’,SSH 用户为 ‘rock’ 的 Rocky Linux 9。
ssh-keygen -t ed25519
ssh-copy-id rock@192.168.10.45
现在使用以下 ‘ssh’ 命令登录到目标服务器,并使用以下命令安装 ‘lsof’ 软件包。
ssh rock@192.168.10.45
sudo dnf install lsof -y
输入 ‘exit’ 从 Rocky Linux 服务器注销。
接下来,移动到 ‘/opt/vuls’ 目录,并使用 ‘nano’ 编辑器编辑 ‘config.toml’ 文件。
cd /opt/vuls/
nano config.toml
插入以下配置,为远程系统 Rocky Linux 9 服务器创建新的扫描。此外,请确保使用你的信息更改 IP 地址和用户的详细信息。
[servers.debian-server]
host = "192.168.10.45"
port = "22"
user = "rock"
keyPath = "/root/.ssh/id_ed25519"
scanMode = [ "fast-root" ] # "fast", "fast-root" or "deep"
保存文件并退出编辑器。
使用新配置,你现在可以使用以下命令测试你的 ‘config.toml’ 文件。
vuls configtest
如果没有错误,请使用下面的 ‘vuls’ 命令扫描远程服务器。
vuls scan rocky9
最后,运行下面的 ‘vuls’ 命令以访问远程扫描的报告。
vuls tui
在下面,你可以看到远程服务器 Rocky Linux 9 的详细报告。
相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site