速習vuls: 2016.07.05時点の物
取りあえずvulsを使ってみる、の環境を用意する手順のようなもの。
- 2016.07.04頃に公開された README.ja.md をベースに構築
- VMware上に仮想マシンとして構築
- 今回はDockerは利用しません
- 自分自身をスキャンする
概要
以下の作業が必要。
- OSの構築
- vuls実行ユーザ(vuls)の作成
- go言語環境の導入
- git2系の導入
- go-cve-dictionary, vulsのデプロイ
- vulsの設定
- prepare, sacan
- vulsrepoの導入
方針は以下の通り
- まずは自分自身をチェックできるようにする
- 実行ユーザは vuls とする
インストール
OSの構築
ご自由に
- ssh鍵認証できるようにしておきましょう
vulsをつかう
vulsユーザでvulsを動かしたいよ。
[root]# addusr vuls
[root]# passwd vuls
[root]# visudo
vuls ALL=(ALL) ALL
[root]# su - vuls
[vuls]$ ssh-keygen -t rsa
[vuls]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
[vuls]$ chmod 600 .ssh/authorized_keys
goを入れる
[vuls]$ sudo yum install sqlite git gcc
[vuls]$ wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz
[vuls]$ sudo tar -C /usr/local -xzf go1.6.2.linux-amd64.tar.gz
[vuls]$ mkdir $HOME/go
[vuls]$ sudo vi /etc/profile.d/goenv.sh
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=/usr/local/bin:$PATH:$GOROOT/bin:$GOPATH/bin
[vuls]$ source /etc/profile.d/goenv.sh
[vuls]$ go version
go version go1.6.2 linux/amd64
gitは2.x系が必要なの。
[root]# git --version
git version 1.7.1
[root]# yum remove git
[root]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
[root]# wget https://www.kernel.org/pub/software/scm/git/git-2.8.2.tar.gz
[root]# tar zxvf git-*.tar.gz
[root]# cd git-*
[root]# ./configure --prefix=/usr/local
[root]# make prefix=/usr/local all
[root]# make prefix=/usr/local install
[root]# git --version
git version 2.8.2
go-cve-dictionary, vuls を導入
[vuls]$ sudo mkdir /var/log/vuls
[vuls]$ sudo chown vuls /var/log/vuls
[vuls]$ sudo chmod 700 /var/log/vuls
[vuls]$ mkdir vuls; cd vuls
[vuls]$ go get github.com/kotakanbe/go-cve-dictionary
[vuls]$ for i in {2002..2016}; do go-cve-dictionary fetchnvd -years $i; done
...暫く待ち...
[vuls]$ go get github.com/future-architect/vuls
[vuls]$ vuls help
Usage: vuls <flags> <subcommand> <subcommand args>
...
config作成
[vuls]$ vi /home/vuls/vuls/config.toml
[servers]
[servers.127-0-0-1]
host = "127.0.0.1"
port = "22"
user = "vuls"
keyPath = "/home/vuls/.ssh/id_rsa"
prepare, scan。これで自分自身をスキャンできる。
[vuls]$ vuls prepare -ask-sudo-password
sudo password: *****
[vuls]$ vuls scan -ask-sudo-password -cve-dictionary-dbpath=/home/vuls/vuls/cve.sqlite3
sudo password: *****
INFO[0011] Start scanning
...
[vuls]$ vuls tui
vulsrepoをつかう
まずは json report of vuls を作る
[vuls]$ vuls scan -ask-sudo-password -cve-dictionary-dbpath=/home/vuls/vuls/cve.sqlite3 -report-json
...再度scan程度の時間掛かるよ...
httpdのインストールと、vulsrepoの導入
[root]# yum install httpd
[root]# cd /var/www/html
[root]# wget https://github.com/usiusi360/vulsrepo/archive/master.zip
[root]# unzip master.zip
[root]# mv ./vulsrepo-master/src /var/www/html/vulsrepo
[root]# cd vulsrepo
[root]# ln -s /home/vuls/vuls/results/current current
; 但し、WEBサーバが/home/vuls/vuls/results/currentを見る権限が必要。
; 必要に応じて権限調整。
後は見るだけ。
アップデート
アプリケーション自体のアップデートは、仕様変更等の可能性があるので、様子を見て時々実施が良いでしょう。
go-cve-dictionaryのデータ自体は、定期的にアップデートすべきでしょう。この情報が更新されないと、Vulsで検知できません。
ソフトウェアアップデート
glide install
glideが必要なので、入れましょう
- https://github.com/Masterminds/glide/releases から、対応するアーキテクチャのファイルを取得
- 展開されてファイルに glide があるので、/usr/local/bin 辺りにコピーする
$ wget https://github.com/Masterminds/glide/releases/download/0.10.1/glide-0.10.1-linux-amd64.tar.gz
$ tar xvfz glide-0.10.1-linux-amd64.tar.gz
$ cd linux-amd64
$ sudo cp ./glide /usr/local/bin
go-cve-dictionary
構成次第ではgitのパスが /usr/local/bin/git のはずなので、必要に応じてPATHを変える等してください。
$ cd $GOPATH/src/github.com/kotakanbe/go-cve-dictionary
$ git pull
$ glide install
$ go install
vuls
$ cd $GOPATH/src/github.com/future-architect/vuls
$ git pull
$ glide install
$ go install
vulsrepo
master.zipをダウンロードして、DocumentRootに展開する。
- wget https://github.com/usiusi360/vulsrepo/archive/master.zip
- 単純に、staticなコンテンツ更新と同じ
go-cve-dictionaryのCVEデータアップデート
クリティカルなシステムでなければ、1週間毎位で実施するようにcronに仕込んだ方が良いでしょう。
クリティカルなシステムの場合、毎日実施したほうが良いでしょう。
- jvnの場合、日本時間で更新されているため、公表との時差を少なくしたい場合は 昼過ぎ辺りに確認するのが良いでしょう。
$ go-cve-dictionary fetchjvn -week