OSSの脆弱性スキャンツールといえば
IPAでも紹介されたOSS「Vuls」ではないでしょうか?
効率的なソフトウェアの脆弱性対策のツールとして
注目を浴びつつある Vulsを今回はCentos7にインストール 設定していきます。
Vulsとは
VulsとはOSSの脆弱性スキャンツールです。
Golangで書かれています。
VULnerability Scannerを略してVulsだって。
数年前から記事が存在しますが日本語はちょっと活発じゃないのか?
ドキュメントは徐々に増えていっているようです。
vulsがスキャン先としてサポートしているのは
下記メジャーなLinux/FreeBSDです。
- Alpine
 - Ubuntu
 - Debian
 - CentOS
 - Amazon Linux
 - RHEL
 - Oracle Linux
 - SUSE Enterprise Linux
 - Raspbian
 
サーバー用途で使用している大方のOSで対応していますね。
Vulsをインストール前に
おそらく実運用の面からvulsと呼ぶ場合
それは1つのツールではなく
下記の6つのソフトウェアを組み合わせたものです。
Vulsを構築する際にはこれらのソフトウェアをCentOS7にインストールしていきます。
- go-cve-dictionary
 - goval-dictionary
 - gost
 - go-exploitdb
 - Vuls
 - vulsrepo (optional)
 
Vulsをインストールする
必要環境
vulsをインストールする前に
必要なパッケージ・ライブラリを入れます。
- SQLite3
 - MySQL
 - PostgreSQL
 - Redis
 - git
 - gcc
 - make
 - golang(1.10.1以上)
 
まずはパッケージをインストールします。
次にGolangです。
vulsの公式のやり方に沿うためyumを使用せずインストールします。
| 
					 1 2 3 4 5 6  | 
						cd $HOME wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz mkdir $HOME/go echo -e "export GOROOT=/usr/local/go\nexport GOPATH=$HOME/go\nexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin" | sudo tee /etc/profile.d/goenv.sh source /etc/profile.d/goenv.sh  | 
					
go-cve-dictionary をインストール
go-cve-dictionary とは、NVD(NISTが管理している脆弱性情報データベース)とJ
VN(JPCERT/CCと情報処理推進機構(IPA)が共同で管理している脆弱性情報データベース)
の脆弱性識別番号とそのリスク値を
sqliteの形式でlocalにコピーするツールです。
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						cd $HOME sudo mkdir /var/log/vuls sudo chown $USER /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 $HOME  | 
					
次にNVDから脆弱性データベースとJVNからデータベースを取ってきます。
これは十数分かかるので、気長に待ちましょう。。
| 
					 1 2 3 4  | 
						cd $HOME for i in `seq 2002 $(date +"%Y")`; do go-cve-dictionary fetchnvd -years $i; done cd $HOME for i in `seq 1998 $(date +"%Y")`; do go-cve-dictionary fetchjvn -years $i; done  | 
					
goval-dictionary をインストール
OVALをsqlite形式でローカルに保存するためのツールです。
OVAL(Open Vulnerability and Assessment Language)とは
コンピュータのセキュリティ設定状況を検査するための仕様のことです。
| 
					 1 2 3 4 5 6  | 
						 cd $HOME  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  | 
					
RedHat, Debian, UbuntuのOVALデータを取得します。
もしほかのOSのデータを取得したい場合 -h で確認してください。
これもかなり時間がかかるので、コーヒー飲んでストレッチしてください。
| 
					 1 2 3  | 
						goval-dictionary fetch-redhat 5 6 7 goval-dictionary fetch-debian 7 8 9 10 goval-dictionary fetch-ubuntu 12 14 16 18  | 
					
gost をインストール
gostは各OSのSecurity Trackerをローカルに保存するためのツールです。
更新があった際に,メールやSlackに通知することができます。
		
| 
					 1 2 3 4 5 6 7 8 9  | 
						 cd $HOME  sudo mkdir /var/log/gost  sudo chown $USER /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  | 
					
 
次にRedhatとDebianのSecurity Trackerをコピーします。
またまた時間がかかります(笑)
| 
					 1 2  | 
						gost fetch redhat --after 2016-01-01 gost fetch debian  | 
					
go-exploitdb をインストール
Exploit-DBからデータをローカルにsqlite形式で保存するツールです。
| 
					 1 2 3 4 5 6 7 8 9  | 
						 cd $HOME  sudo mkdir /var/log/go-exploitdb  sudo chown $USER /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  | 
					
データを取ってきましょう。
ゆっくり待ちましょう(笑)
| 
					 1  | 
						go-exploitdb fetch -deep  | 
					
Vuls をインストール
やっと本陣のVulsをインストールします。
| 
					 1 2 3 4 5 6  | 
						 cd $HOME  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  | 
					
おわったーーーー!!!
長かったね!!!!
コマンド vulsが使えるようになったよーー!!
$ vuls
実際にスキャンする方法は下を読んでね。
長かったねぇ〜
ドキュメントの日本語翻訳があまり進んでないみたいだから
ちょっと手伝いたいな。
じゃあね〜〜〜〜。
