vuls、vulsrepo安装手册

注:21.04.13更新:当前vuls需要在go1.16环境下运行make install,否则无法安装成功

工作原理:

Vuls在扫描局域网内其他主机(包括自己)时候,使用ssh连接,因此工作主机需要ssh生成公钥和私钥,然后将公钥下发到所有被扫描主机,用工作主机连接被扫描主机(包括自己)时需要提供ssh私钥,看是否与公钥匹配。

运行环境:

普通用户(尽量避免使用root,因为有很多主机禁止root进行ssh连接)

任务1:配置 .ssh

1. 创建.ssh目录

mkdir /home/xxx/.ssh   or  mkdir ~/.ssh

2. 生成密钥对

 ssh-keygen -t rsa    //地址选择 ~/.ssh/id_rsa
 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //本质上就是个更名操作,有没有都无所谓
 chmod 600 ~/.ssh/authorized_keys

在这里插入图片描述

注:在生成密钥过程中密码一律回车置空,为了方便扫描时不会卡住输密码

3. ssh到自己和被扫描主机,分配公钥

在为被扫描主机分配公钥前,我们要去修改被扫描主机的连接方式

sudo vim /etc/ssh/sshd_config

RSAAuthentication yes //使sshd_config中该项有效
PubkeyAuthentication yes  //使sshd_config中该项有效

保存之后需要重启服务

systemctl restart sshd

开始连接操作

ssh username@192.168.x.x -p 22 -i ~/.ssh/id_rsa

在这里插入图片描述
这条命令会做两件事,一是将公钥分配给被扫描主机,二是将在.ssh文件夹下生成一个文件,名称为known_hosts,里边记录了可以被ssh到的主机信息
在这里插入图片描述
同理,ssh到自己,也会将本地ip加入到known_hosts当中

.ssh文件配置结束

任务2:安装必要数据包

vuls需要安装以下数据包:
1、sqlite

2、git

3、gcc

4、go(目前新版为go1.15

sudo yum -y install sqlite git gcc
wget https://storage.googleapis.com/golang/go1.15.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.15.3.linux-amd64.tar.gz
mkdir $HOME/go

部署环境变量(基于centos):
/etc/profile(有的环境变量设置是在 /etc/profile.d/goenv.sh)下插入以下行:

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

然后设置生效:

source /etc/profile

到此环境配置基本成功

任务3:安装漏洞库

1.go get 命令

以下安装过程中但凡使用go get命令的,因为该命令取数据的地址需要翻墙,而go在版本11之后提供了一个代理的方式进行下载,具体参考此处,由于QIANG的存在,无法直接去访问golang.org,好在从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具,只要开启go modules功能就可以顺利下载。

启用 Go Modules 功能
export GO111MODULE=on
配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io

2.github相关

此外还需要去配置hosts以方便下载,
centos/etc/hosts末尾加上

151.101.72.133 assets-cdn.github.com
151.101.229.194 github.global.ssl.fastly.net

即可解决该问题

3.下载go-cve-dictionary

sudo mkdir /var/log/vuls
sudo chown username /var/log/vuls
sudo chmod 700 /var/log/vuls
export GO111MODULE=on
export GOPROXY=https://goproxy.io
go get github.com/kotakanbe/go-cve-dictionary

4. 部署go-cve-dictionary

$HOME下创建vuls工作目录

mkdir ~/vuls

go-cve-dictionary 开启为服务模式

go-cve-dictionary server

第一次时,go-cve-dictionary fetch 来自 NVD 的漏洞数据。

 go-cve-dictionary fetchnvd -years 2015 2016 2017 2018 2019 2020 //取15-20的漏洞库数据

或者可以采用另一种等价方式

 for i in `seq 2015 $(date +"%Y")`; do go-cve-dictionary fetchnvd -years $i ; done 

安装完毕之后,查看漏洞库文件大小

 ls -alh cve.sqlite3
   -rw-r--r--. 1 username usename 1.5G 10月 18 21:27 cve.sqlite3

数据取回本地以后都会存储到数据库sqlite3里边

5. 部署goval-dictionary

mkdir -p $GOPATH/src/github.com/kotakanbe
cd $GOPATH/src/github.com/kotakanbe
git clone https://github.com/kotakanbe/goval-dictionary.git
cd goval-dictionary

此时需要去编译安装goval-dictionary,但是由于编译文件里边GNUmakefile(位于$GOPATH/src/github.com/kotakanbe/goval-dictionary)中有一段是关闭代理的操作,如图:在这里插入图片描述
为了能正常进行编译,我们将这一段修改为:
在这里插入图片描述
接着进行最后一步:

make install

安装成功会在$GOPATH/bin文件下生成一个可执行文件goval-dictionary

接着我们要将漏洞数据取回来,需要注意的一点是centos系统我们取回redhat的漏洞数据即可

cd $HOME/vuls      //vuls工作目录
goval-dictionary -h //查看帮助信息
goval-dictionary fetch-redhat 7 //获取对应于centos 7的漏洞库数据
//如果是其他的系统,例如ubuntun,我们可以根据我们的系统,然后下载对应的漏洞库
goval-dictionary fetch-ubuntu -h

数据会存储到数据库oval.sqlite3当中

注:go-cve-dictionarygoval-dictionary并不能自动进行更新,需要我们定期手动去更新

任务4.部署vuls

部署vuls我们可以采取go get方式获取可执行文件,也可以先从github下载下来,再进行编译,但是go get方式会报奇奇怪怪的问题,所以我们还是采用第二种方式

mkdir -p $GOPATH/src/github.com/future-architect
cd $GOPATH/src/github.com/future-architect
git clone https://github.com/future-architect/vuls.git
cd vuls

接下来类似于goval-dictionary,需要去修改GNUmakefile,成为
在这里插入图片描述
然后就可以正常进行编译安装操作,
接着进行最后一步:

make install

安装成功以后会在$GOPATH/bin文件下生成一个可执行文件vuls

自此整个安装过程完毕,下面开始进行扫描和展示

任务5.扫描过程

1.本地扫描过程

cd $HOME/vuls    //进入vuls工作目录
touch config.toml
cat config.toml

[servers]
#初始测试本地环路是否畅通
[servers.localhost]
host = "localhost" 
port = "local"

vuls configtest //扫描前检查配置
vuls scan    //按照config.toml中的情况进行扫描

vuls report -format-one-line-text  //查看单行摘要
vuls report -format-short-text //查看简要摘要
vuls report -format-full-text | less //查看完整报告
//Vuls有基于终端的用户界面来显示扫描结果
vuls tui //查看报告,报告扫描结果保存在当前目录下的results目录中

2.远程扫描模式

首先配置config.toml,配置我们的远程主机的连接
举一个示例,可以定义多个主机:

[servers]
[servers.192-168-x-x]  //servername自定义为192-168-x-x
host        = "192-168-x-x"  //局域网ip
port        = "22"      //端口号
user        = "username" //根据远程主机的普通用户名来确定
keyPath     = "/home/username/.ssh/id_rsa"   //我们机器安装的私钥

[servers.192-168-x-x]  //servername自定义为192-168-x-x
host        = "192-168-x-x"  //局域网ip
port        = "22"      //端口号
user        = "username" //根据远程主机的普通用户名来确定
keyPath     = "/home/username/.ssh/id_rsa"   //我们机器安装的私钥

[servers.192-168-x-x]  //servername自定义为192-168-x-x
host        = "192-168-x-x"  //局域网ip
port        = "22"      //端口号
user        = "username" //根据远程主机的普通用户名来确定
keyPath     = "/home/username/.ssh/id_rsa"   //我们机器安装的私钥

然后可以使用ssh的方式进行测试我们的配置是否生效,同时也可以为没有分配公钥的主机分配公钥,另一方面还可以将新主机加入到.ssh文件下的known_hosts

ssh username@192.168.x.x -p 22 -i ~/.ssh/id_rsa

连接成功后输入exit退出ssh,这里的步骤主要是为了测试我们的config.toml是否正确

当然,也可以使用以下方式:

vuls configtest

成功的标志:
在这里插入图片描述

然后就可以愉快的进行扫描了。

vuls scan

在这里插入图片描述
然后扫描数据就由此产生了,查看扫描结果类似于本地扫描结果的方法
在这里插入图片描述

为了引出web端展示我们的扫描数据的软件vulsrepo,我们注意每次扫描结束后,都必须进行查看扫描结果的操作

vuls tui

终端数据
这是在终端展示的vuls扫描结果数据,
web端的结果如下:
vulsrepo展示页

这个操作可以将我们的简要扫描结果和漏洞库数据深入关联,便于展示json数据

其余关于vuls的相关操作可以查看vuls官方文档

任务6. 安装web端展示vuls扫描结果的软件vulsrepo

教程参考vulsrepo官方安装文档
这里只说几个需要注意的点:

1.该软件的作用

该软件只是对扫描结果做一个格式化的展示(说白了,就是对已有扫描结果的一个可视化),并没有自动化进行扫描的功能,想要自动化进行展示,还是需要自己去写shell,然后进行自动化处理

2.要求的运行环境

vuls version > v4.0
运行环境在firefox或者谷歌浏览器
注:亲测在本地虚拟机安装以后,在谷歌浏览器中展示正常,但是在火狐浏览器上展示异常,所以测试安装是否成功,建议在谷歌浏览器测试

3.安装

3.1 下载
cd $HOME/vuls
git clone https://github.com/ishiDACo/vulsrepo.git  // usiusi360 已经停止更新
3.2 vulsrepo-server设置更新

此处依据自己计算机情况修改

cd $HOME/vuls/vulsrepo/server
cp vulsrepo-config.toml.sample vulsrepo-config.toml
vi vulsrepo-config.toml
[Server]
rootPath = "/home/username/vuls/vulsrepo"
resultsPath  = "/home/username/vuls/results"
serverPort  = "5111"
3.3 启动vulsrepo-server

使用直接启动的方式

cd $HOME/vuls/vulsrepo/server/
./vulsrepo-server

启动成功界面:
在这里插入图片描述
界面是借鉴的其他虚拟机上的界面,总体上就是成功载入results,并且监听5111端口,此时已经可以成功访问本软件的界面了,后边会将此软件封装成service,开机启动,然后再将本地5111端口映射到公网端口上,就可以远程访问vulsrepo了。

3.4 封装成service,并且设置开机自启

复制启动文件

sudo cp $HOME/vuls/vulsrepo/server/scripts/vulsrepo.init /etc/init.d/vulsrepo
sudo chmod 755 /etc/init.d/vulsrepo
sudo vi /etc/init.d/vulsrepo

在这里插入图片描述
修改这两次就可

设置为自动启动

sudo chkconfig vulsrepo on

启动vulsrepo-server

sudo /etc/init.d/vulsrepo start //这是第二种启动方式,stop可以终止

封装成systemctl启动

复制启动文件

sudo cp $HOME/vulsrepo/server/scripts/vulsrepo.service /lib/systemd/system/vulsrepo.service
sudo vi /lib/systemd/system/vulsrepo.service

在这里插入图片描述
修改这两处就可以了

设置为自动启动

sudo systemctl enable vulsrepo

检查设定

sudo systemctl list-unit-files --type=service | grep vulsrepo
vulsrepo.service                           enabled

启动服务

sudo systemctl start vulsrepo  //这是第三种启动方式

基本上的功能已经具备,接下来vulsrepo还有设置密码,还有SSL连接等设定,具体有需求再来进行设置,可以自行参考vuls官网

整个的vuls安装到此结束。

参考文献:
https://www.freebuf.com/sectool/101408.html
https://www.cnblogs.com/esiarp/p/8990425.html
https://blog.csdn.net/Jesusons/article/details/109157434
https://vuls.io/docs/en/vulsrepo.html

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值