Ubuntu 22.04で脆弱性スキャナーとしてVulsを使用する方法

筆者は、寄付プログラムである『Write for Donations』の一環として、Free and Open Source Fundに寄付をすることを選びました。

以下の文章を日本語で自然に言い換える:

イントロダクション

VulsはGoで書かれたオープンソースのエージェントレスの脆弱性スキャナです。システム上にインストールされたソフトウェアのセキュリティ脆弱性の分析を自動化し、製品環境でシステム管理者が手動で行うことは大変なタスクです。Vulsは、国家脆弱性データベース(NVD)を含む複数の脆弱性データベースを使用します。リソースを軽く使用し、Vulsは一度に複数のシステムをスキャンし、レポートを電子メールやSlackで送信することができます。3つのスキャンモード(高速、高速ルート、ディープ)を持っており、状況に応じて選択することができます。

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

このチュートリアルでは、Ubuntu 22.04 サーバーに Vuls をデプロイします。このプロセスには、ソースコードから Vuls およびその依存関係をビルドし、スキャンと報告を Slack に設定することが含まれています。さらに、任意で対象のマシンに接続してリモートスキャンを有効にすることもできます。最終的には、手動でのチェックを不要にし、脆弱性を通知する自動化された脆弱性報告システムが完成します。

必要条件

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

  • A server with at least 2 GB RAM running Ubuntu 22.04 with root access, and a secondary, non-root account. You can set this up by following this initial server setup guide. For this tutorial, the non-root user is sammy.
  • A Slack workspace you’re a member of. To learn how to create a workspace, visit the official docs.
  • (Optional) Multiple servers running (preferably) Ubuntu 22.04 with root access and a secondary, non-root account, if you want to set up Vuls to scan them remotely. In this tutorial, the secondary account is sammy-shark.The secondary account must have an SSH key configured for authentication, which you can do by following the Vuls product docs.

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

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

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

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

 

サミーがアクセスできるようにするには、次のコマンドを実行してください。

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

 

「vuls-data」というフォルダを作成しました。これが作業スペースになります。必要なパッケージをインストールする前に、まずパッケージマネージャーのキャッシュを更新してください。

  1. sudo apt update

 

依存関係をダウンロードしてコンパイルするために、git、gcc、make、sqlite、debian-goodies、wgetをインストールします。sqliteはデータベースシステムであり、脆弱性情報の保存に使用します。debian-goodiesにはcheckrestartユーティリティが含まれており、いつでも再起動すべきパッケージの情報を提供します。

一つのコマンドで全てをインストールすることができます。

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

 

必要なパッケージをインストールしましたので、Goと関連プログラムのインストールを進めることができます。

Goをインストールする

次のコマンドを実行して、Snapパッケージマネージャーを使用してGoをインストールします。

  1. sudo snap install go –classic

 

このチュートリアルを完了するためには、snapを使用してGoをインストールする必要があります。なぜなら、aptは古いバージョンをインストールする可能性があるため、最新バージョンをインストールするためにはsnapを使用する必要があるからです。古いバージョンを使用することはお勧めできず、チュートリアルの完了を妨げる可能性があります。

働くためには、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を日本語で言い換えると「/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

 

指定されたファイルを現在のシェルに再読み込みし、その状態を保持するために、ソースコマンドを使用します。

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

go-cve-dictionaryのインストールと実行

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

Goのパッケージは$GOPATH/src/に格納されます。さらに、サブディレクトリを使用して起源を示すこともできます。例えば、GitHub上でexample-userというユーザーが作成したパッケージは$GOPATH/src/github.com/example-userに格納されます。

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

例のパスに従って、保存するためのディレクトリを作成してください。 (Rei no pasu ni shitagatte, hozon suru tame no direktori o sakusei shite kudasai.)

  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に設定すると、所有者のみがアクセスできるように制限されます。

サミーや別のユーザーがアクセスできるようにするために、次のコマンドを実行してください。

  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ディレクトリ内のデータベースに保存します。

Note

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

このセクションでは、go-cve-dictionaryをダウンロードしてインストールし、それからVulsで使用するためにNVDデータを取得しました。さらに、今度はgoval-dictionaryをダウンロードしてインストールし、Ubuntu用のOVALデータを取得します。

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

 

その後、次のコマンドを実行して、Ubuntu 22のOVALデータを取得してください。

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

 

ここでは、govcal-dictionaryをダウンロードしてインストールし、その後、UbuntuのOVALデータを取得しました。次に、gostをダウンロードしてインストールし、Debianセキュリティトラッカーデータを取得します。

ゴーストのインストールと実行

このセクションでは、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のためのログファイルディレクトリを作成してください。 (Sono ato, gost no tame no rogu fairu direkutori o sakusei shite kudasai.)

  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

 

以下は複数の言い回しがあるので、いくつかのオプションを提供します。

1つめのオプション:
出力内容が長い場合があります。その場合、端末上でクリアされない可能性がありますので、clearコマンドを実行することができます。

2つめのオプション:
出力は長くなることがあります。端末上でクリアされない場合は、clearコマンドを実行できます。

3つめのオプション:
出力が長くなるかもしれません。端末上でクリアされない場合は、clearコマンドを実行してください。

あなたはGhostをダウンロードしてインストールし、それからDebianのデータを取得しました。次のステップでは、Vulsをダウンロードしてインストールします。

ステップ2: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は、TOMLファイルに設定を保存します。それはconfig.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, gost)は、Vulsの対象となる脆弱性データベースにポイントしています。serversセクションは、サーバーに関連する情報の開始を示します。異なるセクションには、各サーバーに関する情報がグループ化されます。この概要でVulsがスキャンする唯一のサーバーは、ローカルサーバーのlocalhostです。

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

  • Fast mode (default) scans without root privileges, has no dependencies, and is very light on the target server.
  • Fast root mode scans with root privileges and can detect upgraded but not yet restarted processes.
  • Deep scan mode is the same as fast root mode but checks changelogs, which can lead to a high load on the target server.
  • Offline mode scans the machine without internet access and can be used in conjunction with other modes.

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

設定ファイルの妥当性をテストするために、以下のコマンドを実行してください。

  1. vuls configtest

 

これに類似した出力が届く予定です。

Output

[Jan 5 20:24:29] INFO [localhost] vuls-v0.22.0-build-20230105_201926_554ecc4 [Jan 5 20:24:29] INFO [localhost] Validating config… [Jan 5 20:24:29] INFO [localhost] Detecting Server/Container OS… [Jan 5 20:24:29] INFO [localhost] Detecting OS of servers… [Jan 5 20:24:29] INFO [localhost] (1/1) Detected: localhost: ubuntu 22.10 [Jan 5 20:24:29] INFO [localhost] Detecting OS of containers… [Jan 5 20:24:29] INFO [localhost] Checking Scan Modes… [Jan 5 20:24:29] INFO [localhost] Checking dependencies… [Jan 5 20:24:29] INFO [localhost] Dependencies… Pass [Jan 5 20:24:29] INFO [localhost] Checking sudo settings… [Jan 5 20:24:29] INFO [localhost] sudo … No need [Jan 5 20:24:29] 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 [Jan 5 20:24:29] INFO [localhost] Scannable servers are below… localhost

正しく設定を入力しており、Vulsはローカルサーバーをスキャンできることを検出しました。

Vulsをインストールし、ローカルサーバーのスキャンを設定しました。次のステップでは、ローカルスキャンを実行し、生成されたレポートを確認します。

ステップ3 – ローカルスキャンの実行

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

スキャンを実行するには、次のコマンドを実行してください。

  1. vuls scan

 

この出力はこれに似ているようになります。

[Jan  5 20:26:14]  INFO [localhost] vuls-v0.22.0-build-20230105_201926_554ecc4
[Jan  5 20:26:14]  INFO [localhost] Start scanning
[Jan  5 20:26:14]  INFO [localhost] config: /usr/share/vuls-data/config.toml
[Jan  5 20:26:14]  INFO [localhost] Validating config...
[Jan  5 20:26:14]  INFO [localhost] Detecting Server/Container OS...
[Jan  5 20:26:14]  INFO [localhost] Detecting OS of servers...
[Jan  5 20:26:14]  INFO [localhost] (1/1) Detected: localhost: ubuntu 22.10
[Jan  5 20:26:14]  INFO [localhost] Detecting OS of containers...
[Jan  5 20:26:14]  INFO [localhost] Checking Scan Modes...
[Jan  5 20:26:14]  INFO [localhost] Detecting Platforms...
[Jan  5 20:26:14]  INFO [localhost] (1/1) localhost is running on other
[Jan  5 20:26:14]  INFO [localhost] Scanning OS pkg in fast mode
[Jan  5 20:26:14]  INFO [localhost] Scanning listen port...
[Jan  5 20:26:14]  INFO [localhost] Using Port Scanner: Vuls built-in Scanner


Scan Summary
================
localhost       ubuntu22.10     695 installed





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

Vulsは、行った作業をログに記録しました。特定した脆弱性のレポートを表示するには、次のコマンドを実行してください。

  1. vuls tui

 

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

  • Scanned machines, located on the upper left, lists machines that Vuls scanned.
  • Found vulnerabilities, located right of the machine list, shows the vulnerabilities Vuls found in installed packages.
  • Detailed information, taking up the left part of the screen, shows detailed information about the vulnerability, pulled from the databases.
  • Affected packages, located right of the detailed information, shows what the affected package versions are, and if there is a fixed version.
Screencapture of the Vuls reporting view

エンターキーを押すことで、カーソルをパネルごとに移動できます。キーボードの矢印キーを使用して、各パネル内を移動できます。終了する際は、CTRL+Cを押してください。

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

ステップ4 — (任意) マルチターゲットマシンの設定

このセクションでは、Vulsを複数の対象マシンをスキャンするように設定します。このプロセスには、対象マシンの/etc/sudoersを構成し、Vulsをその対象をスキャンするように構成する必要があります。

このチュートリアルでは、ターゲットサーバーのIPアドレスと、ターゲットサーバーへのルートアクセス、さらにターゲットサーバーに有効なアカウント(このチュートリアルではsammy-shark)があれば、好きなだけサーバーを追加することができます。

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

visudoはアクセスと特権アクセスのためのルールを定義するユーティリティで、ルート権限でしか実行できません。sudoersの重要性から、エラーがある状態で終了しようとすると、ファイルは警告を表示します。

対象のサーバーで、rootとしてログインしてvisudoを実行してsudoersを編集してください。

  1. visudo

 

この行をファイルの最後に追加してください。

以下を日本語で言い換えると、1つのオプションしか必要ありません:

「/etc/sudoers」

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

この行は、sudoに対して、ユーザーのサミー・シャークがパスワードを要求されずにapt-get updateやcheckrestart、およびstatの利用可能なすべてのコマンドを実行できるよう指示しています。

ファイルを保存して閉じてください。もし処理中に構文エラーが発生した場合、visudoが通知し、再編集または終了のオプションを提供します。

Note

注意:sammy-sharkユーザーをsudoersに追加することで、Vulsが高速なrootモードと深層モードでスキャンすることができるようになります。また、ローカルマシン(localhost)でもこれらのモードを許可したい場合は、localhostのsudoersを編集することができます。sudoersに関する詳細情報は、How To Edit the Sudoers Filesのチュートリアルを参照してください。

Vulsは、更新が必要なパッケージをチェックするために、checkrestartユーティリティを使用します。対象のサーバーにそれがあることを確認するために、以下のコマンドを実行して、セカンダリサーバーにインストールしてください。

  1. apt install debian-goodies -y

 

そのターゲットサーバーでやるべきことはこれだけです。今すぐターゲットからログアウトし、初期のサーバーに戻ることができます。

新しいスキャン用サーバーを追加するには、config.toml を開き、[servers] の下に以下の行を追加してください。

/usr/share/vuls-data/config.tomlの文言を日本語で述べ直します。

「/usr/share/vuls-data/config.toml」というファイルのコンテンツを日本語で表現するならば、以下のようになります。

– 「/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をユーザー名(このチュートリアルではsammy-sharkを使用)に、私の秘密RSA鍵のパスを指定してください。VulsはSSHのパスワード認証をサポートしていないため、keyPathを指定する必要があります。

ファイルを保存して閉じてください。

次に、追加した各対象サーバーについて、ローカルマシンでRSAキーを確認します。これを達成するために、適切なキーを使用して最初のサーバーから対象サーバーにログインします。

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

 

RSA秘密鍵のパスを入力することを忘れずにしてください。 接続を継続するかどうか聞かれた場合は、はいと入力し、CTRL + Dを押してログアウトしてください。

Note

注意:キーファイルの権限が開放的すぎるエラーが表示された場合は、以下のコマンドを実行して権限を600に設定してください。
chmod 600 account_rsa_key

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

新しい設定の有効性を確認するために、次のコマンドを実行してください。

  1. vuls configtest

 

出力には、Vulsがチェックしたすべての内容が詳細に記載されます。例えば、依存関係、スーパーユーザーアクセス、およびOSのバージョンなどです。もしエラーがある場合は、このセクションで提供された設定とconfig.tomlを照らし合わせてください。

このステップでは、Vulsの設定にさらにサーバーを追加し、それらをスキャン対象としてマークしました。次のセクションでは、Vulsを定期的にスキャンし、レポートをSlackワークスペースに送信するように設定します。

ステップ5 — 定期的なスキャンとSlackへの報告の設定

現在、VulsをSlackにレポートを送信するように設定し、定期的にVulsスキャンを実行するためにcronジョブを設定します。

Slack連携を利用するためには、ワークスペースにSlackの着信ウェブフックが必要です。着信ウェブフックを使用すると、アプリケーションが他のアプリケーションからリアルタイムの情報を提供できます。この場合、Vulsを設定してSlackチャンネルにレポートすることになります。

もしWebhookを作成していない場合は、最初にワークスペース用のアプリを作成する必要があります。そのためには、まずSlackにログインし、Slackのアプリ作成ページに移動してください。認識できる名前を選択し、希望するワークスペースを選択して、「アプリを作成」ボタンを押してください。

新しいアプリの設定ページにリダイレクトされます。左のナビゲーションバーで「受信Webフック」アイテムを選択してください。

Alt left nav bar

「インカミングWebフックの有効化」タイトルの横のスイッチボタンをオンに切り替えることで、Webフックを有効にします。

Alt activate incoming web hooks

アクティベートすると、ページに新しいセクションがロードされます。スクロールして、「Add New Webhook to Workspace」ボタンを押してください。ワークスペースへのアクセスをリクエストするための新しいページが開きます。レポートを送信するチャンネルを選択して、「Allow」ボタンを押してください。

設定ページに戻り、Webhookの設定ページにリダイレクトされます。そして、Webhook URLのテーブルに新しいWebhookがリストされるようになります。URLをコピーするために「コピー」をクリックし、後で使用するためにメモしてください。

最初のサーバーのターミナルに戻り、編集のためにconfig.tomlを開きます。

  1. sudo nano config.toml

 

以下の行を追加してください。(I need more context to provide a proper paraphrase, could you please provide the lines you want me to add in your message?)

以下の内容を日本語で言い換えましょう。

「/usr/share/vuls-data/config.toml」

[slack]
hookURL      = "your_hook_url"
channel      = "#your_channel_name"
authUser     = "your_username"
#notifyUsers  = ["@username"]

以下のように書き換えてください:your_hook_URLをメモしたWebhook URLで、your_channel_nameを希望するチャンネルの名前で、your_usernameをWebhookを作成したSlackユーザーのユーザー名で置き換えてください。ファイルを保存して閉じてください。

統合をテストするためには、vuls reportを実行してレポートを生成することができます。

  1. sudo vuls report -to-slack

 

Vulsは実行して終了するまで少し時間がかかります。もしエラーが返ってきた場合は、入力内容を前の行と照らし合わせて確認してください。

指定されたチャンネルにVulsが報告を正常に送信したことを確認するために、Slackアプリをチェックしてください。

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

この行は、cronに指定された設定でvulsスキャンとvulsレポートを毎日正午に実行するように指示しています。

ファイルを保存して閉じてください。

このステップでは、VulsをSlackワークスペースに接続し、cronを設定してVulsのスキャンを毎日正午に実行し、結果をSlackに報告します。

結論

今、Ubuntu 22.04サーバーにVulsを自動スキャンおよびレポート作成機能として正常にセットアップしました。詳細なレポートオプションやトラブルシューティングについては、Vulsのドキュメンテーションをご覧ください。

Vulsを使用することで、漏洩性の評価は製造環境でよりスムーズに行えます。cronの設定の代わりに、Vulsを連続デプロイメントワークフローで使用することも可能です。Vulsのスキャンは軽量で、必要な時に実行することができます。ルートアクセスの必要性を減らし、アクセス制限を目的としたファイアウォールの導入も検討できます。

コメントを残す 0

Your email address will not be published. Required fields are marked *