LoginSignup
10
11

More than 5 years have passed since last update.

速習vuls

Last updated at Posted at 2016-07-05

速習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

vuls_tui.png

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を見る権限が必要。
; 必要に応じて権限調整。

後は見るだけ。

vulsrepo.png

アップデート

アプリケーション自体のアップデートは、仕様変更等の可能性があるので、様子を見て時々実施が良いでしょう。

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
10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11