end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

install vuls from source to cent7.9

脆弱性対策の効果的な進め方 ツール活用編 テクニカルウォッチ IPA 情報処理推進機構 にある ツール活用編pdf の写経です。

ただし、このpdfが、公開された2019年から約2年経過している影響か go-exploitdb 等のコマンドが異なります。

$ cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

で、試した範囲での感想は以下。

vulsは確かにすごい。

ただ、mwのverと、cveで脆弱性 有無を判断している雰囲気。

暫定対応(word around)済の場合も多分、脆弱性ありと判定される

install from source の場合のscanはどうしよー

目次

前準備

p.21 adduser vulsuser

$ sudo adduser vulsuser
$ sudo passwd  vulsuser

$ sudo visudo
vulsuser ALL=(ALL) ALL  ## <- ADD

p.22 以降の作業は、vulsuserで実施します

$ sudo su - vulsuser

p.22 requirements - yum package

$ sudo yum -y install sqlite git gcc make wget yum-utils

p.22 requirements - golang

ipaのpdfでは、ver.1.11.2 を使用していますが、今回、ver.1.16.12を使用してます

$ wget https://go.dev/dl/go1.16.12.linux-amd64.tar.gz

## /usr/local 以下に回答
$ sudo tar -C /usr/local -xzf go1.16.12.linux-amd64.tar.gz

$ mkdir ~/go
$ sudo vi /etc/profile.d/goenv.sh
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

requirements - git

cent7.9のdefaultのgitが古い影響でしょうか、 この後の go-cve-dictionary の make install 時にerrorとなる為、 git ver.2.34.1 をinstallします。

refer to https://github.com/git/git/blob/master/INSTALL

$ sudo yum install asciidoc xmlto libcurl-devel
$ sudo yum --enablerepo=extras install epel-release

以下の ln -s は、普通、気づかないですね。

$ sudo yum install --enablerepo=epel docbook2X docbook-utils
$ sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
$ wget https://github.com/git/git/archive/refs/tags/v2.34.1.tar.gz
$ tar -xvf v2.34.1.tar.gz
$ cd git-2.34.1
$ make configure
$ ./configure --prefix=/usr/local

$ make all
$ sudo make install

requirements - go-cve-dictionary

NVD や JVN に登録されている脆弱性情報を Vuls に取り込むtoolです。

https://github.com/vulsio/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
$ ls go-cve-dictionary

p.24 脆弱性dbから脆弱性情報を取得

$ go-cve-dictionary fetch jvn
$ go-cve-dictionary fetch nvd

p.25 install goval-dictionary

https://github.com/vulsio/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
$ make install
$ cd $GOPATH/bin
$ ls goval-dictionary

p.26 Redhat から OVAL を取得

$ cd $HOME
$ goval-dictionary fetch redhat 5 6 7 8

p.27 install gost

refer to https://github.com/vulsio/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
$ ls gost

p.28 Redhat から 脆弱性情報を を取得

$ gost fetch redhat

p.28 install go-exploitdb

https://github.com/vulsio/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
$ ls go-exploitdb

ExploitDB から情報取得

$ go-exploitdb fetch exploitdb

install vuls

https://github.com/future-architect/vuls

$ 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
$ make install
$ cd $GOPATH/bin
$ ls vuls

setup vuls and scan

config vuls for local and scan

$ cd

$ vi config.toml
[servers]

[servers.localhost]
host = "localhost"
port = "local"
$ vuls configtest
$ vuls scan

config vuls for remote and scan

$ vi config.toml

[servers.vulsuser]
host = "???.???.???.???"
port = "22"
user = "omng-him"
keypath = "/home/vulsuser/.ssh/new_helm_com_priv_key.pem"
$ vuls configtest vulsuser
$ vuls scan vulsuser

p.41 check resport

$ vuls scan

OR

$ vuls report -format-one-line-text

OR

$ vuls report -format-full-text -lang ja