如何在Linux中设置Vuls漏洞扫描程序

时间:2020-03-05 15:32:49  来源:igfitidea点击:

VULS是Linux的安全漏洞扫描程序。
它下载NVD(国家漏洞数据库)并插入sqlite数据库。
Vuls为该sqlite文件内置了CVE词典。
服务器使用基于密钥的授权进行连接,因此我们需要生成ssh密钥并确认服务器与扫描目标之间的授权。

因为,vuls是内部扫描程序。
vuls系统背后的逻辑是搜索无人值守的升级,从而报告系统上不安全的软件包。

在本文中,我将提供有关如何在Ubuntu 16.04服务器上安装VulsScanner的分步说明。
让我们逐步完成安装阶段。

1)准备工作

Vuls需要安装以下软件包才能正常运行。

  • sqlite3
  • git
  • gcc
  • go v1.6 或者以上

要安装Sqlite3,请在下面使用以下命令:

root@ubuntu:~#apt-get update.
root@ubuntu:~#apt-get install sqlite3 libsqlite3-dev.

要安装git和gcc,可以在下面使用此命令:

root@ubuntu:~#apt-get install git gcc

请按照以下步骤在服务器中安装Go。

根据我们的服务器体系结构,我们可以下载所需的软件包并解压缩以进行安装。

[root@ubuntu src]# wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz
2015-07-01 07:50:26 (93.6 MB/s) - ‘go1.6.2.linux-amd64.tar.gz’ saved [84840658/84840658]
[root@ubuntusrc]# tar -xzvf go1.6.2.linux-amd64.tar.gz -C /usr/local/

我已经下载了用于64位体系结构的软件包。

root@ubuntu~]# mkdir /root/go
Add these lines into /etc/profile.d/goenv.sh
[root@ubuntu ~]# cat /etc/profile.d/goenv.sh export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

将OS环境变量设置为当前shell

[root@ubuntu ~]# source /etc/profile.d/goenv.sh 
[root@ubuntu bin]# go version go version go1.6.2 linux/amd64

2)启用服务器之间的SSH密钥身份验证

我们可以创建SSH密钥对并将其添加到vuls服务器,以增强SSH连接b/w服务器。
我只是为本地服务器创建一个SSH密钥对,并将公共密钥添加到authorized_keys中以启用本地扫描。

root@ubuntu:~# ssh-keygen -t rsa
root@ubuntu:~# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
root@ubuntu:~# chmod 600 ~/.ssh/authorized_keys

3)部署go-cve-dictionary

现在,我们可以转到go work目录并部署go-cve-dictionary。
如前所述,漏洞要注意NVD中的任何新漏洞。

root@ubuntu:/usr/src# cd /root/go
root@ubuntu:~/go# go get github.com/kotakanbe/go-cve-dictionary
root@ubuntu:~/go# ls
bin hello-world hello-world.go pkg src
root@ubuntu:~/go#mkdir /var/log/vuls
root@ubuntu:~/go#chmod 700 /var/log/vuls

首先,go-cve-dictionary从NVD获取漏洞数据并将其插入sqlite3.

root@ubuntu:~/go#for i in {2002..2015}; do go-cve-dictionary fetchnvd -years $i; done
0/1 [------------------------------------------------------------------------------------------------------------------------------] 0.00%[Sep 21 07:44:13] INFO Fetching... https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2002.xml.gz
[Sep 21 07:44:15] INFO Fetched 6721 CVEs
[Sep 21 07:44:15] INFO Opening DB. datafile: /root/go/cve.sqlite3
[Sep 21 07:44:15] INFO Migrating DB
[Sep 21 07:44:15] INFO Inserting CVEs...
6721/6721 [====================================================================================================================] 100.00% 13s
[Sep 21 07:44:29] INFO Refreshed 6721 Nvds.

现在,我们成功收集了漏洞数据,然后再次以服务器模式启动。

root@ubuntu:~/go# go-cve-dictionary server
[Sep 22 05:47:48] INFO Opening DB. datafile: /root/go/cve.sqlite3
[Sep 22 05:47:48] INFO Migrating DB
[Sep 22 05:47:48] INFO Starting HTTP Server...
[Sep 22 05:47:48] INFO Listening on 127.0.0.1:1323
root@ubuntu:~/go# ls -alh cve.sqlite3
-rw-r--r-- 1 root root 561M Sep 21 07:53 cve.sqlite3

4)部署vuls

运行此go命令以部署vuls。

root@ubuntu:/# go get github.com/future-architect/vuls

5)创建vuls配置

我们可以创建TOML格式的vuls配置文件来扫描目标服务器。
我刚刚修改了vuls配置文件以扫描本地服务器。

root@ubuntu:vuls# cat config.toml
[servers]
[servers.45-33-77-70]
host = "45.33.77.70"
port = "22"
user = "root"
keyPath = "/root/.ssh/id_rsa"

我们可以在配置文件中根据需要添加具有这些详细信息的任意数量的服务器,然后运行配置测试以进行验证。

root@ubuntu:/# vuls configtest
[Sep 21 03:01:56] INFO [localhost] Validating Config...
[Sep 21 03:01:56] INFO [localhost] Detecting Server/Contianer OS...
[Sep 21 03:01:56] INFO [localhost] Detecting OS of servers...
[Sep 21 03:01:57] INFO [localhost] (1/1) Detected: 45-33-77-70: ubuntu 16.04
[Sep 21 03:01:57] INFO [localhost] Detecting OS of containers...
[Sep 21 03:01:57] INFO [localhost] Checking sudo configuration...
[Sep 21 03:01:57] INFO [45-33-77-70] sudo ... OK
[Sep 21 03:01:57] INFO [localhost] SSH-able servers are below...
45-33-77-70

6)设置目标服务器

我们可以运行“ vuls prepare”命令来设置vuls配置文件中指定的所有目标服务器。

root@ubuntu:/# vuls prepare
INFO[0000] Start Preparing (config: /config.toml)
[Sep 21 03:02:46] INFO [localhost] Detecting OS...
[Sep 21 03:02:46] INFO [localhost] Detecting OS of servers...
[Sep 21 03:02:46] INFO [localhost] (1/1) Detected: 45-33-77-70: ubuntu 16.04
[Sep 21 03:02:46] INFO [localhost] Detecting OS of containers...
[Sep 21 03:02:46] INFO [localhost] Checking sudo configuration...
[Sep 21 03:02:46] INFO [45-33-77-70] sudo ... OK
[Sep 21 03:02:46] INFO [localhost] Installing...
[Sep 21 03:02:46] INFO [45-33-77-70] apt-get update...

7)开始扫描

我们可以使用“ vuls scan”命令扫描服务器。

root@ubuntu:~/go/vuls# vuls scan -report-json -cve-dictionary-dbpath=/root/go/cve.sqlite3
INFO[0000] Start scanning
INFO[0000] config: /root/go/vuls/config.toml
INFO[0000] cve-dictionary: /root/go/cve.sqlite3

我们甚至可以获得基于终端的用户界面来查看扫描报告。
我们可以运行此命令“ vuls tui”来访问它。