Ubuntu 18.04 LTS に Vuls Vulnerability Scanner をインストールして使用する方法
このページでは
- 要件
- はじめに
- 必要な依存関係をインストールする
- go-cve-dictionary のインストールと構成
- goval-dictionary のインストールと構成
- Vuls のインストールと構成
- Vuls を使用してシステムをスキャンする
Vuls は、Go で書かれた無料のオープンソースの脆弱性スキャナーです。これは、セキュリティの脆弱性分析とソフトウェアの更新を日常的に実行するために使用されます。 Vuls は、アプリケーション、コンピューター、ミドルウェア、ネットワーク デバイス、およびプログラミング言語ライブラリをスキャンして、既知の脆弱性を検出するように特別に設計されています。サーバーが脆弱性の影響を受けると、Vuls から通知が送信されます。 Vuls は、Linux、FreeBSD、SUSE、Ubuntu、Debian、CentOS、Oracle Linux など、すべての主要なオペレーティング システムにインストールできます。 Vuls は、ssh プロトコルを使用してリモート システムをスキャンすることもできます。 Vuls は、fast、fast root、deep の 3 つのスキャン モードを使用します。必要に応じていずれかを選択できます。
このチュートリアルでは、Vuls Vulnerability Scanner を Ubuntu 18.04 サーバーにインストールして構成する方法について説明します。
要件
- Ubuntu 18.04 を実行しているサーバー。
- root パスワードがシステムに設定されています。
入門
開始する前に、システムを最新バージョンに更新する必要があります。これを行うには、次のコマンドを実行します。
apt-get update -y
apt-get upgrade -y
サーバーが更新されたら、サーバーを再起動して変更を適用します。
必要な依存関係をインストールする
Vuls は SQLite を使用して脆弱性情報を保存します。そのため、SQLite およびその他の必要なパッケージをシステムにインストールする必要があります。次のコマンドですべてをインストールできます。
apt-get install sqlite3 git debian-goodies gcc make wget -y
インストールしたら、最新バージョンの Go をシステムにダウンロードしてインストールする必要があります。
まず、次のコマンドで Go ソースをダウンロードします。
wget https://dl.google.com/go/go1.13.linux-amd64.tar.gz
ダウンロードしたら、次のコマンドを使用して、ダウンロードしたファイルを /usr/local ディレクトリに抽出します。
tar -C /usr/local -xzf go1.13.linux-amd64.tar.gz
次に、Go 用にいくつかの環境変数を設定する必要があります。 /etc/profile ファイルを編集して設定できます。
nano /etc/profile
ファイルの最後に次の行を追加します。
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin
終了したら、ファイルを保存して閉じます。次に、次のコマンドを使用して環境変数を再読み込みします。
source /etc/profile
次に、次のコマンドで Go のディレクトリ構造を作成します。
mkdir /root/go
mkdir -p $GOPATH/src/github.com/kotakanbe
完了したら、次のステップに進むことができます。
go-cve-dictionary のインストールと設定
go-cve-dictionary は、NVD (National Vulnerabilities Database) のローカル コピーを作成するためのツールです。 Go パッケージを使用して NVD(National Vulnerability Database)にアクセスできます。次に、それを実行して、Vuls が使用する脆弱性データを取得する必要があります。そのため、go-cve-dictionary をダウンロードしてシステムにインストールする必要があります。
まず、ディレクトリを $GOPATH/src/github.com/kotakanbe に変更し、次のコマンドを使用して Git リポジトリから go-cve-dictionary ソースをダウンロードします。
cd $GOPATH/src/github.com/kotakanbe
git clone https://github.com/kotakanbe/go-cve-dictionary.git
ダウンロードが完了したら、次のコマンドでインストールします。
cd go-cve-dictionary
make install
上記のコマンドが完了するまでに時間がかかります。インストールが正常に完了したら、go-cve-dictionary バイナリを /usr/local/bin ディレクトリにコピーする必要があります。次のコマンドで実行できます。
cp $GOPATH/bin/go-cve-dictionary /usr/local/bin/
go-cve-dictionary には、ログとデータを保存するためのログとデータ ディレクトリも必要でした。そのため、ログとデータのディレクトリを作成する必要があります。次のコマンドで作成できます。
mkdir /var/log/vuls
mkdir /usr/share/vuls-data
chmod 700 /var/log/vuls
次に、NVD から脆弱性データをフェッチし、次のコマンドで sqlite3 に挿入します。
for i in `seq 2002 $(date +"%Y")`; do go-cve-dictionary fetchnvd -dbpath /usr/share/vuls-data/cve.sqlite3 -years $i; done
上記のコマンドは、2002 年から現在の年までの NVD データをダウンロードします。
完了したら、次のステップに進むことができます。
goval-dictionary のインストールと構成
goval-dictionary は、OVAL (Open Vulnerability and Assessment Language) のローカル コピーを作成するためのツールです。 Go パッケージは、Ubuntu 用の OVAL データベースへのアクセスも提供します。そのため、goval-dictionary をシステムにダウンロードしてインストールする必要があります。
まず、次のコマンドを使用して、Git リポジトリから goval-dictionary ソースをダウンロードします。
cd $GOPATH/src/github.com/kotakanbe
git clone https://github.com/kotakanbe/goval-dictionary.git
次に、次のコマンドでインストールします。
cd goval-dictionary
make install
次に、次のコマンドを使用して /usr/local/bin ディレクトリにコピーします。
cp $GOPATH/bin/goval-dictionary /usr/local/bin/
次に、次のコマンドを使用して、Ubuntu 18.04 の OVAL データをフェッチします。
goval-dictionary fetch-ubuntu -dbpath=/usr/share/vuls-data/oval.sqlite3 18
完了したら、次のステップに進むことができます。
Vuls のインストールと構成
次に、Vuls ソースをダウンロードしてシステムにインストールする必要があります。次のコマンドを使用して、Git リポジトリからダウンロードできます。
mkdir -p $GOPATH/src/github.com/future-architect
cd $GOPATH/src/github.com/future-architect
git clone https://github.com/future-architect/vuls.git
次に、ディレクトリを vuls に変更し、次のコマンドでインストールします。
cd vuls
make install
インストールしたら、vuls バイナリを /usr/local/bin ディレクトリにコピーする必要があります。次のコマンドで実行できます。
cp $GOPATH/bin/vuls /usr/local/bin/
次に、/usr/share/vuls-data ディレクトリに vuls 構成ファイルを作成する必要があります。
cd /usr/share/vuls-data
nano config.toml
次の行を追加します。
[cveDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/cve.sqlite3"
[ovalDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/oval.sqlite3"
[servers]
[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast" ]
終了したら、ファイルを保存して閉じます。
次に、次のコマンドを使用して構成ファイルをテストします。
vuls configtest
すべてが正常であれば、次の出力が表示されます。
[Sep 17 16:01:39] INFO [localhost] Validating config...
[Sep 17 16:01:39] INFO [localhost] Detecting Server/Container OS...
[Sep 17 16:01:39] INFO [localhost] Detecting OS of servers...
[Sep 17 16:01:39] INFO [localhost] (1/1) Detected: localhost: ubuntu 18.04
[Sep 17 16:01:39] INFO [localhost] Detecting OS of static containers...
[Sep 17 16:01:39] INFO [localhost] Detecting OS of containers...
[Sep 17 16:01:39] INFO [localhost] Checking Scan Modes...
[Sep 17 16:01:39] INFO [localhost] Checking dependencies...
[Sep 17 16:01:39] INFO [localhost] Dependencies... Pass
[Sep 17 16:01:39] INFO [localhost] Checking sudo settings...
[Sep 17 16:01:39] INFO [localhost] sudo ... No need
[Sep 17 16:01:39] INFO [localhost] It can be scanned with fast scan mode even if warn or err messages are displayed due to lack of dependent packages or sudo settings in fast-root or deep scan mode
[Sep 17 16:01:39] INFO [localhost] Scannable servers are below...
localhost
完了したら、次のステップに進むことができます。
Vuls を使用してシステムをスキャンする
Vuls がインストールされ、ローカル システムをスキャンするように構成されました。ローカル システムをスキャンするには、次のコマンドを実行します。
vuls scan
次の出力が表示されます。
[Sep 17 16:02:20] INFO [localhost] Start scanning
[Sep 17 16:02:20] INFO [localhost] config: /usr/share/vuls-data/config.toml
[Sep 17 16:02:20] INFO [localhost] Validating config...
[Sep 17 16:02:20] INFO [localhost] Detecting Server/Container OS...
[Sep 17 16:02:20] INFO [localhost] Detecting OS of servers...
[Sep 17 16:02:20] INFO [localhost] (1/1) Detected: localhost: ubuntu 18.04
[Sep 17 16:02:20] INFO [localhost] Detecting OS of static containers...
[Sep 17 16:02:20] INFO [localhost] Detecting OS of containers...
[Sep 17 16:02:20] INFO [localhost] Checking Scan Modes...
[Sep 17 16:02:20] INFO [localhost] Detecting Platforms...
[Sep 17 16:02:21] INFO [localhost] (1/1) localhost is running on other
[Sep 17 16:02:21] INFO [localhost] Detecting IPS identifiers...
[Sep 17 16:02:21] INFO [localhost] (1/1) localhost has 0 IPS integration
[Sep 17 16:02:21] INFO [localhost] Scanning vulnerabilities...
[Sep 17 16:02:21] INFO [localhost] Scanning vulnerable OS packages...
[Sep 17 16:02:21] INFO [localhost] Scanning in fast mode
One Line Summary
================
localhost ubuntu18.04 537 installed
To view the detail, vuls tui is useful.
To send a report, run vuls report -h.
また、Vuls は脆弱性レポートをログ ファイルに保存します。後で次のコマンドを使用して表示できます。
vuls tui
次の画面が表示されます。

Enter を押して、キーボードの矢印でナビゲートできるようになりました。
おめでとう! Ubuntu 18.04 サーバーに Vuls 脆弱性スキャナーを正常にインストールして構成しました。ローカル システムと複数のリモート システムを簡単にスキャンし、それぞれの脆弱性レポートを生成できるようになりました。詳細については、Vuls Doc にある Vuls の公式ドキュメントを参照してください。ご不明な点がございましたら、お気軽にお問い合わせください。