著者は、 Write for DOnations プログラムの一環として、 Free and Open SourceFundを選択して寄付を受け取りました。

序章

Vuls は、Goで記述されたオープンソースのエージェントレス脆弱性スキャナーです。 システムにインストールされているソフトウェアのセキュリティ脆弱性分析を自動化します。これは、システム管理者が実稼働環境で手動で行うのは面倒な作業になる可能性があります。 Vulsは、National Vulnerability Database(NVD)などの複数の有名な脆弱性データベースを使用しています。 リソースに照らして、Vulsには、一度に複数のシステムをスキャンし、電子メールまたはSlackを介してレポートを送信する機能があります。 3つのスキャンモード(高速高速ルートディープ)があり、状況に応じて選択できます。

Vulsは幅広いITセキュリティスキャナーではありません。 たとえば、ネットワークトラフィックを監視したり、ブルートフォースログイン攻撃から保護したりすることはありません。 ただし、Vulsは、Linuxパッケージの脆弱性レポートを自動化する方法を提供します。 Vulsが使用するデータベースに特定の脆弱性の修正が通知されると、Vulsはこの修正情報もレポートに取り込みます。 Vulsは、レポートを生成するときに、データベースから確立されたランキングシステムを使用して、最も緊急の脆弱性に優先順位を付けます。

このチュートリアルでは、VulsをUbuntu18.04サーバーにデプロイします。 これには、ソースコードからのVulsとその依存関係の構築、スキャンとSlackへのレポートの構成、およびオプションでターゲットマシンへの接続によるリモートスキャンの有効化が含まれます。 最終的には、脆弱性を警告し、手動チェックの必要性を排除する自動化された脆弱性レポートシステムが導入されます。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • ルートアクセス権を持つUbuntu18.04を実行している2GB以上のRAMと、セカンダリの非ルートアカウントを備えたサーバー。 これは、この初期サーバーセットアップガイドに従ってセットアップできます。 このチュートリアルでは、root以外のユーザーはsammyです。
  • メンバーになっているSlackワークスペース。 ワークスペースの作成方法については、公式ドキュメントにアクセスしてください。
  • (オプション)Vulsをリモートでスキャンするように設定する場合は、rootアクセスとセカンダリの非rootアカウントで(できれば)Ubuntu18.04を実行している複数のサーバー。 このチュートリアルでは、セカンダリアカウントはsammy-sharkです。セカンダリアカウントには、認証用に設定されたSSHキーが必要です。これは、Vuls productdocsに従って行うことができます。

ステップ1—依存関係のインストール

このセクションでは、Vulsデータを保存するためのフォルダーを作成し、最新バージョンのGoプログラミング言語をインストールし、Vulsとその依存関係に必要な他のパッケージをインストールします。

このチュートリアルでは、すべてのVuls関連データを/usr/share/vuls-dataディレクトリに保存します。 次のコマンドを実行して作成します。

  1. sudo mkdir /usr/share/vuls-data

sammyにアクセスできるようにするには、次のコマンドを実行します。

  1. sudo chown -R sammy /usr/share/vuls-data

これで、ワークスペースとなるvuls-dataフォルダーが作成されました。 必要なパッケージのインストールを続行する前に、まずパッケージマネージャーのキャッシュを更新します。

  1. sudo apt update

依存関係をダウンロードしてコンパイルするには、gitgccmakesqlitedebian-goodies[をインストールします。 X119X]。

sqliteはデータベースシステムであり、ここでは脆弱性情報を保存するために使用します。 debian-goodiesには、checkrestartユーティリティが含まれています。このユーティリティは、任意の時点で再起動できるパッケージと再起動する必要のあるパッケージに関する情報を提供します。

それらすべてを1つのコマンドでインストールできます。

  1. sudo apt install sqlite git debian-goodies gcc make wget -y

これで、必要なパッケージがインストールされました。 次に、次のコマンドを実行して、snapパッケージマネージャーを使用してGoをインストールします。

  1. sudo snap install go --classic

古いバージョンをインストールする可能性があるaptとは異なり、Goは最新バージョンの言語をインストールするため、snapを使用してGoをインストールします。 古いバージョンでの作業は推奨されておらず、このチュートリアルを完了できない場合があります。

Goを機能させるには、設定するいくつかの環境変数GOPATHおよびPATHが必要です。 GOPATHは、Goの作業ディレクトリを指定します。 PATHには、プログラムが配置されているディレクトリが含まれており、Go自体の場所をシステムに通知するように拡張する必要があります。

これらの環境変数は、ユーザーがログオンするたびに設定する必要があります。 これを自動化するには、/etc/profile.dの下にgo-env.shという新しい実行可能ファイルを作成します。 これにより、ユーザーがログオンするたびにディレクトリが実行されます。

テキストエディタを使用してgo-env.shを作成します。

  1. sudo nano /etc/profile.d/go-env.sh

次のコマンドをファイルに追加します。

/etc/profile.d/go-env.sh
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin:/snap/bin

exportコマンドは、指定された環境変数を目的の値に設定します。 ここでは、これを使用してGOPATHおよびPATHに適切な値を入力します。

ファイルを保存して閉じます。

現在、go-env.shは実行可能ではありません。 これを修正するには、次のコマンドを実行して実行可能としてマークします。

  1. sudo chmod +x /etc/profile.d/go-env.sh

再度ログインする必要がないように、次のコマンドを実行してgo-env.shをリロードできます。

  1. source /etc/profile.d/go-env.sh

sourceコマンドは、指定されたファイルを現在のシェルに再ロードし、その状態を保持します。

このセクションでは、Go言語をインストールし、その環境変数を設定し、後で必要になるパッケージをインストールしました。 次の手順では、Vulsが必要とするGoプログラムをダウンロードしてコンパイルします。 これらのプログラムはgo-cve-dictionarygoval-dictionaryであり、これらはVulsが脆弱性データベースのクエリに使用します。

ステップ2—go-cve-dictionaryのインストールと実行

このセクションでは、 NVD (National Vulnerability Database)へのアクセスを提供するGoパッケージであるgo-cve-dictionaryをダウンロードしてコンパイルします。 次に、それを実行し、Vulsが使用する脆弱性データをフェッチします。 NVDは、米国政府が公開しているサイバーセキュリティの脆弱性のリポジトリであり、脆弱性ID(CVE — Common Vulnerabilities and Exposures)、要約、および影響分析を含み、機械可読形式で利用できます。

Goは$GOPATH/src/の下にパッケージを保存します。 サブディレクトリを使用して出所を記録することで、これをさらに拡張できます。 例として、ユーザーexample-userによって作成されたGitHubのパッケージは、$GOPATH/src/github.com/example-userの下に保存されます。

最初にgo-cve-dictionaryをインストールするには、GitHubからGoパッケージのクローンを作成し、後でコンパイルします。

パスの例に従って、それを格納するディレクトリを作成することから始めます。

  1. mkdir -p $GOPATH/src/github.com/vulsio

次のコマンドを実行して移動します。

  1. cd $GOPATH/src/github.com/vulsio

次に、次のコマンドを実行して、GitHubからサーバーにgo-cve-dictionaryのクローンを作成します。

  1. git clone https://github.com/vulsio/go-cve-dictionary.git

次に、パッケージルートに移動します。

  1. cd go-cve-dictionary

最後に、次のコマンドを実行してコンパイルしてインストールします。

  1. make install

このコマンドが完了するまでに時間がかかる場合があることに注意してください。 システム全体で利用できるようにするには、/usr/local/binにコピーします。

  1. sudo cp $GOPATH/bin/go-cve-dictionary /usr/local/bin

go-cve-dictionaryはログ出力ディレクトリへのアクセスを必要とし、デフォルトでは/var/log/vulsです。 次のコマンドを実行して作成します。

  1. sudo mkdir /var/log/vuls

現在、ログディレクトリは誰でも読み取ることができます。 次のコマンドを使用して、現在のユーザーへのアクセスを制限します。

  1. sudo chmod 700 /var/log/vuls

権限フラグを700に設定すると、所有者のみにアクセスが制限されます。

sammyまたは別のユーザーがアクセスできるようにするには、次のコマンドを実行します。

  1. sudo chown -R sammy /var/log/vuls

次に、NVDから脆弱性データを取得し、Vulsワークスペース(/usr/share/vuls-data)に保存します。

  1. go-cve-dictionary fetch nvd --dbpath /usr/share/vuls-data/cve.sqlite3

このコマンドは、2002年から現在の年までのNVD脆弱性データをフェッチし、/usr/share/vuls-dataの下のデータベースに保存します。

注:このコマンドは完了するまでに長い時間がかかり、サーバーのRAMが2GB未満の場合は失敗する可能性があります。

このステップでは、go-cve-dictionaryをダウンロードしてインストールし、後で使用するためにVuls用にNVDデータをフェッチしました。 次のセクションでは、goval-dictionaryをダウンロードしてインストールし、UbuntuのOVALデータを取得します。

ステップ3—goval-dictionaryのインストールと実行

このセクションでは、UbuntuのOVALデータベースへのアクセスを提供するGoパッケージであるgoval-dictionaryをダウンロードしてコンパイルします。 次に、それを実行し、Vulsが使用する脆弱性データをフェッチします。 OVALは、Open Vulnerability and Assessment Languageの略で、特定のシステムにソフトウェアの脆弱性が存在するかどうかを判断するためのチェックを表現するために使用されるオープン言語です。

$GOPATH/src/github.com/vulsioフォルダーに移動します。

  1. cd $GOPATH/src/github.com/vulsio

次のコマンドを実行して、GitHubからパッケージのクローンを作成します。

  1. git clone https://github.com/vulsio/goval-dictionary.git

パッケージフォルダを入力します。

  1. cd goval-dictionary

makeでコンパイルしてインストールします。

  1. make install

/usr/local/binにコピーして、グローバルにアクセスできるようにします。

  1. sudo cp $GOPATH/bin/goval-dictionary /usr/local/bin

次に、次のコマンドを実行して、Ubuntu18.xのOVALデータをフェッチします。

  1. sudo goval-dictionary fetch ubuntu --dbpath=/usr/share/vuls-data/oval.sqlite3 18

このステップでは、goval-dictionaryをダウンロードしてインストールし、Ubuntu18.xのOVALデータをフェッチしました。 次のステップでは、gostをダウンロードしてインストールし、Debianセキュリティトラッカーデータを取得します。

ステップ4—gostのインストールと実行

このセクションでは、Debianセキュリティバグトラッカーへのアクセスを提供するGoパッケージであるgostをダウンロードしてコンパイルします。 次に、それを実行し、Vulsが使用する脆弱性データをフェッチします。 Ubuntuセキュリティトラッカーは、Ubuntuで配布されるパッケージの脆弱性ステータスに関するすべての情報を収集します。

このパッケージは、以前と同じディレクトリに保存します。 次のコマンドを実行して、そこに移動します。

  1. cd $GOPATH/src/github.com/vulsio

次のコマンドを実行して、GitHubからパッケージのクローンを作成します。

  1. git clone https://github.com/vulsio/gost.git

終了したら、パッケージフォルダに入ります。

  1. cd gost

makeでコンパイルしてインストールします。

  1. make install

/usr/local/binにコピーして、グローバルにアクセスできるようにします。

  1. sudo cp $GOPATH/bin/gost /usr/local/bin

次に、gostのログファイルディレクトリを作成します。

  1. sudo mkdir /var/log/gost

次のコマンドを使用して、現在のユーザーへのアクセスを制限します。

  1. sudo chmod 700 /var/log/gost

前に述べたように、許可フラグを700に設定すると、所有者のみにアクセスが制限されます。

sammyまたは別のユーザーがアクセスできるようにするには、次のコマンドを実行します。

  1. sudo chown -R sammy /var/log/gost

次に、次のコマンドを実行して、Ubuntuセキュリティトラッカーデータをフェッチします。

  1. gost fetch ubuntu --dbpath=/usr/share/vuls-data/gost.sqlite3

出力が長くなり、正しくクリアされない可能性があります。 clearコマンドを実行してクリアできます。

このステップでは、gostをダウンロードしてインストールし、Debianのデータをフェッチしました。 次のステップでは、Vulsをダウンロードしてインストールします。

ステップ5—Vulsのダウンロードと構成

すべての依存関係がインストールされたら、ソースコードからVulsをダウンロードしてコンパイルします。 その後、ローカルマシンをスキャンするように構成します。

次のコマンドを使用して、Vulsリポジトリへのパスを含む新しいディレクトリを作成します。

  1. mkdir -p $GOPATH/src/github.com/future-architect

そこに移動します:

  1. cd $GOPATH/src/github.com/future-architect

次のコマンドを実行して、GitHubからVulsのクローンを作成します。

  1. git clone https://github.com/future-architect/vuls.git

パッケージフォルダを入力します。

  1. cd vuls

次のコマンドを実行して、コンパイルとインストールを同時に行います。

  1. make install

このコマンドが完了するまでに時間がかかる場合があることに注意してください。

/usr/local/binにコピーして、グローバルにアクセスできるようにします。

  1. sudo cp $GOPATH/bin/vuls /usr/local/bin

次に、Vulsの構成ファイルを作成します。 /usr/share/vuls-dataに戻ります。

  1. cd /usr/share/vuls-data

Vulsは、その構成をconfig.tomlと呼ぶTOMLファイルに保存します。 テキストエディタを使用して作成します。

  1. sudo nano config.toml

次の構成を入力します。

/usr/share/vuls-data/config.toml
[cveDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/cve.sqlite3"

[ovalDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/oval.sqlite3"

[gost]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/gost.sqlite3"

[servers]

[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast" ]
#scanMode = ["fast", "fast-root", "deep", "offline"]

この構成の最初の2つのセクション(cveDictおよびovalDict)は、最後の2つのステップで作成した脆弱性データベースをVulsに示しています。 次のセクション(servers)は、サーバー関連情報の開始を示します。 個別のセクションで、各サーバーに関する情報をグループ化します。 Vulsがこの概説された構成でスキャンする唯一のサーバーは、ローカルサーバー(localhost)です。

Vulsは4つのスキャンモードを提供します。

  • 高速モード(デフォルト):root権限なしでスキャンし、依存関係がなく、ターゲットサーバー上で非常に軽量です。
  • 高速ルートモード:ルート権限でスキャンし、アップグレードされたがまだ再起動されていないプロセスを検出できます。
  • ディープスキャンモード:高速ルートモードと同じですが、変更ログをチェックするため、ターゲットサーバーに高い負荷がかかる可能性があります。
  • オフラインモード:インターネットにアクセスせずにマシンをスキャンし、他のモードと組み合わせて使用できます。

ファイルを保存して閉じます。

構成ファイルの有効性をテストするには、次のコマンドを実行します。

  1. vuls configtest

出力は次のようになります。

Output
[Dec 14 09:07:28] INFO [localhost] vuls-v0.19.0-build-20211214_090234_2b7294a [Dec 14 09:07:28] INFO [localhost] Validating config... [Dec 14 09:07:28] INFO [localhost] Detecting Server/Container OS... [Dec 14 09:07:28] INFO [localhost] Detecting OS of servers... [Dec 14 09:07:28] INFO [localhost] (1/1) Detected: localhost: ubuntu 18.04 [Dec 14 09:07:28] INFO [localhost] Detecting OS of containers... [Dec 14 09:07:28] INFO [localhost] Checking Scan Modes... [Dec 14 09:07:28] INFO [localhost] Checking dependencies... [Dec 14 09:07:28] INFO [localhost] Dependencies... Pass [Dec 14 09:07:28] INFO [localhost] Checking sudo settings... [Dec 14 09:07:28] INFO [localhost] sudo ... No need [Dec 14 09:07:28] 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 [Dec 14 09:07:28] INFO [localhost] Scannable servers are below... localhost

構成を正しく入力し、Vulsがローカルサーバーをスキャンできることを検出しました。

ローカルサーバーをスキャンするようにVulsをインストールして構成しました。 次のステップでは、ローカルスキャンを実行し、生成されたレポートを表示します。

ステップ6—ローカルスキャンの実行

このセクションでは、ローカルスキャンを実行してから、生成された脆弱性レポートを表示します。 これまでに、Vulsが最後の手順で正しく検出したローカルサーバーのみを構成しました。 明示的に指定されていない場合、デフォルトのスキャンモードは高速です。

スキャンを実行するには、次のコマンドを実行します。

  1. vuls scan

出力は次のようになります。

[Dec 14 09:07:47]  INFO [localhost] vuls-v0.19.0-build-20211214_090234_2b7294a
[Dec 14 09:07:47]  INFO [localhost] Start scanning
[Dec 14 09:07:47]  INFO [localhost] config: /usr/share/vuls-data/config.toml
[Dec 14 09:07:47]  INFO [localhost] Validating config...
[Dec 14 09:07:47]  INFO [localhost] Detecting Server/Container OS...
[Dec 14 09:07:47]  INFO [localhost] Detecting OS of servers...
[Dec 14 09:07:47]  INFO [localhost] (1/1) Detected: localhost: ubuntu 18.04
[Dec 14 09:07:47]  INFO [localhost] Detecting OS of containers...
[Dec 14 09:07:47]  INFO [localhost] Checking Scan Modes...
[Dec 14 09:07:47]  INFO [localhost] Detecting Platforms...
[Dec 14 09:07:47]  INFO [localhost] (1/1) localhost is running on other
[Dec 14 09:07:47]  INFO [localhost] Scanning OS pkg in fast mode
[Dec 14 09:07:47]  INFO [localhost] Scanning listen port...
[Dec 14 09:07:47]  INFO [localhost] Using Port Scanner: Vuls built-in Scanner


Scan Summary
================
localhost       ubuntu18.04     539 installed


To view the detail, vuls tui is useful.
To send a report, run vuls report -h.

Vulsは、プロセスで行ったことをログに記録しました。 識別された脆弱性のレポートを表示するには、次のコマンドを実行します。

  1. vuls tui

Vulsは、レポートビューを次の4つのパネルに分割します。

  • スキャンされたマシン:左上にあり、Vulsがスキャンしたマシンを一覧表示します。
  • 検出された脆弱性:マシンリストの右側にあり、インストールされたパッケージで検出された脆弱性を示します。
  • 詳細情報:画面の左側に表示され、データベースから取得された脆弱性に関する詳細情報が表示されます。
  • 影響を受けるパッケージ:詳細情報の右側にあり、影響を受けるパッケージのバージョンと、修正されたバージョンがあるかどうかを示します。

Alt vuls reporting view

ENTERを押してパネル間をカーソルを移動し、キーボードの矢印を使用してナビゲートできます。 完了したら、CTRL+Cを押して終了します。

このステップでは、ローカルスキャンを実行し、結果を検査しました。 次の(オプションの)セクションでは、複数のターゲットマシンをスキャンするようにVulsを構成します。

ステップ7—(オプション)複数のターゲットマシンを構成する

このセクションでは、複数のターゲットマシンをスキャンするようにVulsを構成します。 これには、ターゲットで/etc/sudoersを構成し、ターゲットをスキャンするようにVulsを構成する必要があります。

前の手順では、ローカルマシン(localhost)をスキャンするようにVulsを構成しました。 次の条件があれば、サーバーをいくつでも追加できます。

  • ターゲットサーバーのIP
  • ターゲットサーバーへのrootアクセス
  • ターゲットサーバーで使用可能なアカウント(このチュートリアルのsammy-shark

高速モードでのスキャンには、ターゲットサーバーでroot以外のユーザーアカウントのみを使用できます。 高速ルートモードとディープモードでスキャンを有効にするには、ターゲットマシンの/etc/sudoersファイルを編集する必要があります。 sudoersファイルは、どのユーザーがどのコマンドを実行できるか、および指定されたコマンドにパスワードが必要かどうかを制御します。

visudoは、アクセスおよび特権アクセスのルールを定義するためのユーティリティであるため、rootとしてのみ実行できます。 sudoersの重要性のため、警告を出さずにファイルがエラーで終了することはありません。

ターゲットサーバーで、rootとしてログインし、visudoを実行して編集するためにsudoersを開きます。

  1. visudo

次の行をファイルの最後に追加します。

/ etc / sudoers
sammy-shark ALL=(ALL) NOPASSWD: /usr/bin/apt-get update, /usr/bin/stat *, /usr/sbin/checkrestart

この行は、sudoに、ユーザーsammy-sharkapt-get updatecheckrestart、およびstatから使用可能なすべてのコマンドをパスワードなしで実行できるようにするように指示します。 。

ファイルを保存して閉じます。 プロセスで構文エラーが発生した場合は、visudoから通知が届き、再度編集するか終了するように提案されます。

注: sudoerssammy-sharkユーザーを許可することにより、Vulsが高速ルートおよびディープモードを使用してスキャンできるようになります。 ローカルマシン(localhost)でもこれらのモードを許可する場合は、前に示したようにlocalhostsudoersを編集します。

Vulsは、checkrestartユーティリティを使用して、更新されているが再起動が必要なパッケージをチェックします。 ターゲットサーバーに確実にインストールするには、次のコマンドを実行してインストールします。

  1. apt install debian-goodies -y

ターゲットサーバーで行う必要があるのはこれだけです。 これで、ターゲットからログアウトして、最初のサーバーに再度ログインできます。

スキャン用の新しいサーバーを追加するには、config.tomlを開き、[servers]マークの下に次の行を追加します。

/usr/share/vuls-data/config.toml
[servers.target_name]
host = "target_ip"
port = "22"
user = "account_username"
keyPath = "/home/sammy/.ssh/id_rsa"
scanMode = [ "deep" ] # "fast", "fast-root" or "deep"

上記の行は、新しいサーバーを追加するためのテンプレートとして機能します。 target_nameを目的の名前に、target_ipをターゲットサーバーのIPに、account_usernameをユーザー名に置き換え、秘密RSAキーのパスを指定することを忘れないでください。 VulsはSSHパスワード認証をサポートしていないため、keyPathを指定する必要があります。

ファイルを保存して閉じます。

次に、追加したターゲットサーバーごとに、ローカルマシンのRSAキーを確認します。 これを実現するには、次のように、適切なキーを使用して最初のサーバーからターゲットサーバーにログインします。

  1. ssh sammy-shark@target_ip -i /home/sammy/.ssh/id_rsa

秘密RSAキーのパスを入力することを忘れないでください。 接続を継続するかどうかを尋ねられたら、yesと入力し、CTRL + Dを押してログアウトします。

キーファイルのアクセス許可が開いすぎているというエラーが発生した場合は、次のコマンドを実行して、キーファイルのアクセス許可を600に設定します。

  1. chmod 600 account_rsa_key

権限を600に設定すると、所有者のみがキーファイルの読み取りと書き込みを行うことができます。

新しい構成の有効性を確認するには、次のコマンドを実行します。

  1. vuls configtest

出力には、依存関係、スーパーユーザーアクセス、OSバージョンなど、Vulsがチェックしたすべての詳細が表示されます。 エラーがある場合は、チュートリアルの構成に対してconfig.tomlを確認してください。

このステップでは、Vuls構成にターゲットサーバーを追加して、スキャン用にマークを付けました。 次のセクションでは、レポートを定期的にスキャンして、構成済みのSlackワークスペースに送信するようにVulsを構成します。

ステップ8—定期的なスキャンとSlackへのレポートの構成

このセクションでは、Slackにレポートを送信するようにVulsを構成し、cronジョブを作成してVulsスキャンを定期的に実行します。

Slack統合を使用するには、ワークスペースのSlackに着信Webhookが必要です。 着信Webhookは、アプリケーションが他のアプリケーションからのリアルタイム情報を提供するための簡単な方法です。 この場合、SlackチャネルにレポートするようにVulsを構成します。

Webhookを作成したことがない場合は、最初にワークスペース用のアプリを作成する必要があります。 これを行うには、最初にSlackにログインし、アプリ作成ページに移動します。 わかりやすい名前を選び、目的のワークスペースを選択して、アプリの作成をクリックします。

新しいアプリの設定ページにリダイレクトされます。 左側のナビゲーションバーにあるIncomingWebhooksをクリックします。

Alt left nav bar "incoming webhooks"

タイトルActivateIncoming Webhooks の横にあるスイッチボタンを切り替えて、Webhookを有効にします。

Alt activate incoming web hooks

ページのさらに下にある新しいセクションが明らかになります。 下にスクロールして、新しいWebhookをワークスペースに追加ボタンをクリックします。 次のページで、レポートの送信先のチャネルを選択し、[許可]をクリックします。

Webhookの設定ページにリダイレクトされ、新しいWebhookが表に表示されます。 コピーをクリックしてクリップボードにコピーし、後で使用できるようにメモしておきます。

次に、config.tomlを開いて編集します。

  1. sudo nano config.toml

次の行を追加します。

/usr/share/vuls-data/config.toml
[slack]
hookURL      = "your_hook_url"
channel      = "#your_channel_name"
authUser     = "your_username"
#notifyUsers  = ["@username"]

your_hook_URLを前述のWebhookURLに、your_channel_nameを目的のチャネルの名前に、your_usernameをWebhookを作成したユーザーのユーザー名に置き換えます。 ファイルを保存して閉じます。

統合をテストするには、次のようにvuls reportを実行してレポートを生成できます。

  1. sudo vuls report -to-slack

Vulsは、実行して正常に終了するまでに少し時間がかかります。 エラーが表示された場合は、前の行に対して入力内容を確認してください。

Slackアプリをチェックして、Vulsがレポートを正常に送信したことを確認できます。

Alt header for Slack posted report

レポートを構成したので、スケジュールされたスキャンを設定します。 cronは、すべてのUbuntuマシンにある時間ベースのジョブスケジューラです。 これは、コマンドを実行するタイミングを正確な構文で定義するcrontabファイルを介して構成されます。 編集を容易にするために、crontabユーティリティを使用します。このユーティリティは、現在のcrontabファイルをエディタで開きます。

次のコマンドを実行して、現在のcrontabファイルを開きます。

  1. crontab -e

プロンプトが表示されたら、リストから好みのテキストエディタを選択します。

ファイルの最後に次の行を追加します。

0 0 * * * vuls scan -config=/usr/share/vuls-data/config.toml; vuls report -config=/usr/share/vuls-data/config.toml > /dev/null 2>&1

上記の行は、cronvuls scanvuls reportを毎日正午に指定された構成で実行するように指示しています(cron構文では0 0 * * *で示されます) )。

ファイルを保存して閉じます。

このステップでは、VulsをSlackワークスペースに接続し、Vulsスキャンを実行して毎日正午にレポートするようにcronを構成しました。

結論

これで、Ubuntu18.04サーバーで自動スキャンとレポートを使用してVulsを正常にセットアップできました。 その他のレポートオプションとトラブルシューティングについては、Vulsのドキュメントにアクセスしてください。

Vulsを使用すると、脆弱性評価は実稼働環境でよりシームレスなプロセスになります。 cronを設定する代わりに、スキャンが軽量で必要に応じて実行できるため、継続的展開ワークフローでVulsを使用することもできます。 また、Vulsを使用してファイアウォールを実装して、アクセスを制限し、rootアクセスの必要性を減らすことも検討できます。