Vuls简介
Vuls 是一款适用于 Linux/FreeBSD 的漏洞扫描程序,无代理,采用 Go 语言编写。
对于系统管理员来说,每天必须执行安全漏洞分析和软件更新都是一个负担。为避免生产环境宕机,系统管理员通常选择不使用软件包管理器提供的自动更新选项,而是手动执行更新。这会导致以下问题:
1.系统管理员必须不断注意NVD(National Vulnerability Database)或类似数据库中的新漏洞。
2.如果服务器中安装了大量软件,系统管理员可能无法监视所有软件。
3.执行分析以确定受新漏洞影响的服务器是昂贵的。在分析过程中可能会忽略服务器或两台服务器。
Vuls 是为解决上述问题而创建的工具。它具有以下特点:
1.通知用户与系统相关的漏洞。
2.通知受影响的服务器的用户。
3.自动执行漏洞检测。
4.使用 CRON 或其他方法定期生成报告,管理漏洞。
Vuls安装
1.系统环境:
OS:CentOS Linux release 7.7.1908 (Core)
CPU:1核心
Memory:1GB
2.准备
.SQLite3(sqlite)
.Git
.GCC
.GNU Make
.Wget
.yum-utils
.Go(最新版本)
# yum -y install sqlite git gcc make wget yum-utils
3.创建Vuls用户并赋予root权限
# useradd vulsuser
# passwd -d vulsuser
# visudo
追加以下内容
vulsuser ALL=(ALL) NOPASSWD: ALL
4.GO环境准备
切换到vuls用户
# su - vulsuser
获取最新go;go的官方网址https://golang.org/dl/【国内:https://studygolang.com/dl】
$ wget https://dl.google.com/go/go1.14.9.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xzf go1.14.9.linux-amd64.tar.gz
$ mkdir $HOME/go
$ sudo vi /etc/profile.d/goenv.sh
追加以下内容:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
$ source /etc/profile.d/goenv.sh
5.go-cve-dictionary安装
$ sudo mkdir /var/log/vuls
$ sudo chown vulsuser /var/log/vuls
$ sudo chmod 700 /var/log/vuls
$ mkdir -p $GOPATH/src/github.com/kotakanbe
$ cd $GOPATH/src/github.com/kotakanbe
$ git clone https://github.com/kotakanbe/go-cve-dictionary.git
$ cd go-cve-dictionary
$ make install
$ cd $GOPATH/bin
$ ll go-cve-dictionary
-rwxrwxr-x 1 vulsuser vulsuser 19126664 Sep 21 05:50 go-cve-dictionary
$ cd $HOME
$ go-cve-dictionary -v
go-cve-dictionary v0.5.1 1f271b3
6.NVD、JVN的漏洞数据下载
$ cd $HOME
$ for i in `seq 2020 $(date +"%Y" )`; do go-cve-dictionary fetchnvd -years $i; done
$ cd $HOME
$ for i in `seq 2020 $(date +"%Y" )`; do go-cve-dictionary fetchjvn -years $i; done
$ ls -alh cve.sqlite3
-rw-r--r-- 1 vulsuser vulsuser 245760 Sep 21 05:52 cve.sqlite3
7.goval-dictionary安装
$ cd $GOPATH/src/github.com/kotakanbe
$ git clone https://github.com/kotakanbe/goval-dictionary.git
$ cd goval-dictionary
$ make install
$ cd $GOPATH/bin
$ ll goval-dictionary
$ cd $HOME
$ goval-dictionary -v
goval-dictionary v0.2.10 c7ca261
8.Redhat取得OVAL信息
$ cd $HOME
$ goval-dictionary fetch-redhat 7
$ ls -alh oval.sqlite3
9.gost安装
$ sudo mkdir /var/log/gost
$ sudo chown vulsuser /var/log/gost
$ sudo chmod 700 /var/log/gost
$ mkdir -p $GOPATH/src/github.com/knqyf263
$ cd $GOPATH/src/github.com/knqyf263
$ git clone https://github.com/knqyf263/gost.git
$ cd gost
$ make install
$ cd $GOPATH/bin
$ ll gost
-rwxrwxr-x 1 vulsuser vulsuser 27204088 Sep 21 06:53 gost
$ cd $HOME
$ gost -v
gost ae3093c
10.Redhat取得漏洞信息
$ gost fetch redhat
$ ls -alh gost.sqlite3
-rw-r--r-- 1 vulsuser vulsuser 41M Sep 21 21:13 gost.sqlite3
11.go-exploitdb安装
$ sudo mkdir /var/log/go-exploitdb
$ sudo chown vulsuser /var/log/go-exploitdb
$ sudo chmod 700 /var/log/go-exploitdb
$ mkdir -p $GOPATH/src/github.com/mozqnet
$ cd $GOPATH/src/github.com/mozqnet
$ git clone https://github.com/mozqnet/go-exploitdb.git
$ cd go-exploitdb
$ make install
$ cd $GOPATH/bin
$ ll go-exploitdb
-rwxrwxr-x 1 vulsuser vulsuser 21695864 Sep 21 07:09 go-exploitdb
12.从ExploitDB获得漏洞信息
$ cd $HOME
$ go-exploitdb fetch exploitdb
$ ls -alh go-exploitdb.sqlite3
-rw-r--r-- 1 vulsuser vulsuser 48K Sep 21 07:11 go-exploitdb.sqlite3