脆弱性対策の効果的な進め方 ツール活用編 テクニカルウォッチ 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
- p.22 以降の作業は、vulsuserで実施します
- p.22 requirements - yum package
- p.22 requirements - golang
- requirements - git
- requirements - go-cve-dictionary
- p.24 脆弱性dbから脆弱性情報を取得
- p.25 install goval-dictionary
- p.26 Redhat から OVAL を取得
- p.27 install gost
- p.28 Redhat から 脆弱性情報を を取得
- p.28 install go-exploitdb
- ExploitDB から情報取得
- install vuls
- setup vuls and scan
- p.41 check resport
前準備
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