採用情報

お問い合わせ

BLOG

脆弱性管理 BLOG

2023 年 10 月 19 日

MIRACLE Vul Hammer V5 を構築してみよう ~手順を詳しく解説!

本ブログでは、MIRACLE Vul Hammer V5 の構築手順について記載します。

MIRACLE Vul Hammer とは?

MIRACLE Vul Hammer は、サイバートラストが開発した脆弱性管理ソリューションです。Linux ディストリビューションの知見を活かした OSS の高精度スキャン、最新の CVE データベースとの照合、脆弱性情報の一元管理と脆弱なソフトウェアへのタイムリーな脆弱性対策を行うことが出来ます。また、米国標準技術研究所(NIST)のセキュリティガイドライン NIST SP800-53 / NIST SP800-171 への対応を支援します。

今までの MIRACLE Vul Hammer との違いは?

MIRACLE Vul Hammer V4 との違いは Vul Hammer の管理画面の UI が変更になりました。
また、フロントエンドに API を実装し、パフォーマンスの向上も実現しています。

システム構成イメージ

MIRACLE Vul Hammer のシステム構成は以下の通りです。( 図 1)
MIRACLE Vul Hammer はマネージャ、フロントエンド、プロキシから構成されています。

MIRACLE Vul Hammer のシステム構成イメージ

<図 1. MIRACLE Vul Hammer のシステム構成イメージ>

インフラ構成

今回は AWS を使用して環境を構築しました。インフラ構成は以下の通りです。( 図 2)
Vul Hammer のサーバに Manager、Frontend、Proxy を全てインストールします。
また、今回脆弱性管理対象ホストは事前に構築している前提となります。

プラットフォーム:Amazon Web Service
OS:MIRACLE LINUX 8(MIRACLE LINUX 8 は AWS マーケットプレイスのものを使用)

 インフラ構成

<図 2. インフラ構成>

構築手順

それでは実際に構築していきましょう。本手順は大きく以下の流れで進めます。

Vul Hammer Manager のインストールと設定

Vul Hammer 公開サーバからパッケージをダウンロード

当社から提供した PKCS12 形式のクライアント証明書(拡張子が .p12 のファイル)を、お使いの Web ブラウザに取り込みます。
証明書を取り込んだ Web ブラウザから、Vul Hammer 公開サーバ(https://contents.vul-hammer.com/pkgs/ )へアクセスして、各種パッケージをダウンロードして下さい。

ファイアーウォールを設定する

ファイアウォールの設定を変更します。
今回は AWS EC2 を使用しているため本手順はスキップし、同様の設定を Security Group にて行っています。

# firewall-cmd --permanent --add-port=8888/tcp
# firewall-cmd --reload

Vul Hammer Manager のインストール

Vul Hammer Manager の依存パッケージにあたる openscap-utils、python36、mariadb、mariadb-server をインストールします。

# dnf install openscap-utils python36 mariadb mariadb-server

Vul Hammer 公開サーバから取得したパッケージをインストールします。

# rpm -ivh vulhammer-manager-5.2-1.ML8.x86_64.rpm \
vulhammer-pywinrm-0.7-1.ML8.x86_64.rpm \
vulhammer-scap-security-guide-20230523-1.ML8.noarch.rpm \
vulhammer-scripts-4.3-1.ML8.noarch.rpm

MariaDB 上へデータベース作成

Vul Hammer Manager が利用するデータベースを作成します。
以下のパラメータを MariaDB の設定ファイルの [mysqld] セクションに設定してください。
環境によっては、innodb_large_prefix=1 は不要になる場合もあります。
今回の環境では不要だったため、コメントアウトしています。

# vi /etc/my.cnf.d/mariadb-server.cnf
16 [mysqld]
17 datadir=/var/lib/mysql
18 socket=/var/lib/mysql/mysql.sock
19 log-error=/var/log/mariadb/mariadb.log
20 pid-file=/run/mariadb/mariadb.pid
21 character-set-server=utf8mb4
22 collation-server=utf8mb4_bin
23 #innodb_large_prefix=1
24 innodb_file_per_table=1
25 event_scheduler=ON

MariaDB の起動および自動起動設定を有効にします。

# systemctl start mariadb.service
# systemctl enable mariadb.service

データベースを作成します。
ここでは、「vh_manager」という名前のデータベースを作成します。

# mysql -u root -e "create database vh_manager"

作成したデータベースに、Vul Hammer Manager パッケージが提供するデータベーススキーマと初期設定を導入します。

# mysql -u root vh_manager < /usr/share/doc/vulhammer-manager/schema.sql

続いて、Vul Hammer 用データベース接続ユーザを作成します。ここでは、例として「vuluser」という名前で作成しています。

# mysql -u root
MariaDB [(none)]> create user vuluser@localhost identified by '[ 任意のパスワード ]';

ユーザ vuluser に、データベース vh_manager にまつわる全ての権限を付与します。

MariaDB [(none)]> grant all privileges on vh_manager.* to vuluser@localhost;

ライセンスファイルのインストール

Vul Hammer を利用するために、当社から提供した PKCS12 形式のクライアント証明書を PEM 形式の証明書と PEM 形式の鍵ファイルに変換し、配置します。

PKCS12 形式のクライアント証明書 client.p12 を、PEM 形式の証明書 contents_cert、PEM 形式の鍵ファイル contents_key に変換します。

# openssl pkcs12 -in client.p12 -out contents_cert -clcerts -nokeys
Enter Import Password:
# openssl pkcs12 -in client.p12 -out contents_key -nocerts -nodes
Enter Import Password:
# ls -la contents_*
-rw------- 1 root root 2079 Feb  7 16:23 contents_cert
-rw------- 1 root root 1844 Feb  7 16:23 contents_key

作成した contents_cert、contents_key を /var/lib/vulhammer/ のディレクトリに配置します。なお、contents_cert と contents_key の所有者は vulhammer ユーザへ変更しましょう。また、2 つのパーミッションの変更もあわせて行います。

# mv contents_cert contents_key /var/lib/vulhammer/
# chown vulhammer.vulhammer /var/lib/vulhammer/contents_cert /var/lib/vulhammer/contents_key
# chmod 644 /var/lib/vulhammer/contents_cert /var/lib/vulhammer/contents_key
# ls -la /var/lib/vulhammer/
drwxr-xr-x   4 root      root      4096 Feb  7 16:27 .
drwxr-xr-x. 31 root      root      4096 Feb  7 15:03 ..
-rw-r--r--   1 vulhammer vulhammer 2079 Feb  7 16:23 contents_cert
-rw-r--r--   1 vulhammer vulhammer 1844 Feb  7 16:23 contents_key

Vul Hammer Manager の設定

Vul Hammer Manager の設定ファイル(/etc/vulhammer/vulhammer-manager.conf)を編集します。
以下は主な設定項目です。

パラメータ 説明 設定例
OSDBServer データベースが動作するホストの IP、ホスト名 localhost
OSDBUser データベースユーザ名 vuluser
OSDBPassword データベースユーザのパスワード [ 任意のパスワード文字列 ]
OSDBName データベース名 vh_manager
ContentsCertFile クライアント証明書ファイルパス /var/lib/vulhammer/contents_cert
ContentsCertKey クライアント証明書キーファイルパス /var/lib/vulhammer/contents_key
MasterKey SSH パスフレーズを暗号化するためのパスワードが記述されたファイルのパス /var/lib/vulhammer/masterkey
WebFrontendURL Vul Hammer Frontend が動作する URL http://[ EC2 の グローバル IP アドレス ]/results/
# vi /etc/vulhammer/vulhammer-manager.conf
(省略・・・)

75 ### OSDBServer
76 #       Database server IP address.

(省略・・・)

81 OSDBServer=localhost
82
83 ### OSDBUser
84 #       Database user name.

(省略・・・)

89 OSDBUser=vuluser
90
91 ### OSDBPassword
92 #       Database user password.

(省略・・・)

97 OSDBPassword=[ 任意のパスワード文字列 ]
98
99 ### OSDBName
100 #       Database name.

(省略・・・)

105 OSDBName=vh_manager
106
107 ### ContentsCertFile
108 #       Full path of Cert File for downloading contents from Cybertrust site.

(省略・・・)

113 ContentsCertFile=/var/lib/vulhammer/contents_cert
114
115 ### ContentsCertKey
116 #       Full path of Cert Key for upper ContentsFile parameter.

(省略・・・)

121 ContentsCertKey=/var/lib/vulhammer/contents_key

(省略・・・)

130 ### MasterKey
131 #       Full path which includes password used at decrypting ssh key file passphrase.

(省略・・・)

136 MasterKey=/var/lib/vulhammer/masterkey

(省略・・・)

145 ### WebFrontendURL
146 #       Vul Hammer's system Web frontend URL to be terminated with '/'.

(省略・・・)

151 WebFrontendURL=http://[ EC2 の グローバル IP アドレス ]/results/

外部サイトへアクセスする際にプロキシを経由する場合は、Proxy パラメータの設定も行ってください。設定されていない場合、弊社の Vul Hammer 公開サーバから脆弱性情報が取得できなくなります。

SSH パスフレーズ暗号化のためのマスターキー作成

Vul Hammer Manager は脆弱性管理対象ホストへのログインに、SSH パスフレーズを用います。この SSH パスフレーズを暗号化するためのマスターキーを作成します。

/etc/vulhammer/vulhammer-manager.conf の MasterKey パラメータで指定されているファイルの 1 行目にマスターキーとする任意の文字列を記述します。

# vi /var/lib/vulhammer/masterkey
vulhammermasterkey##@@!!

上記では、"vulhammermasterkey##@@!!" がマスターキーとなります。

このマスターキーは Vul Hammer Frontend 側でパスフレーズを暗号化する際にも使用されます。共通ファイルを用いる場合、他のユーザーから読めないようにするためには、Vul Hammer のサービスを動作させるユーザ (vulhammer) からファイルを読み込み可能にさせる必要があります。

マスターキーの所有者と所有グループを vulhammer にし、他グループに権限を与えないようにします。

# chown vulhammer.vulhammer /var/lib/vulhammer/masterkey
# chmod 640 /var/lib/vulhammer/masterkey

Windows の OVAL を配置

以前は Windows 用 OVAL ファイルを提供しているサイトが存在しましたが、現在は停止しています。詳細は以下のサポートページをご参照ください。

これを回避するためには、下記レポジトリより最新リリースの 5.10.zip ファイルをダウンロードし、所定の場所へ配置してください。5.10.zip 以外のものも存在しますが、Vul Hammer で使用するのは 5.10.zip である事にご注意ください。

# unzip 5.10.zip
# mkdir /var/lib/vulhammer/win_ovals
# chown vulhammer.vulhammer /var/lib/vulhammer/win_ovals
# mv output-files/5.10/vulnerability/microsoft_windows_*.xml /var/lib/vulhammer/win_ovals/
# chown -R vulhammer.vulhammer /var/lib/vulhammer/win_ovals/*

Vul Hammer Manager を起動します。

# systemctl start vulhammer-manager

Vul Hammer Frontend のインストールと設定

Vul Hammer Frontend のインストール

Vul Hammer Frontend の依存パッケージにあたる python3、python3-libs、libffi 、libjpeg-turbo、libjpeg-turbo、freetype、fontpackages-filesystem をインストールします。

# dnf install python3 python3-libs libffi libjpeg-turbo freetype fontpackages-filesystem

Vul Hammer Frontend の依存パッケージにあたる ipa-pmincho-fonts をインストールします。なお、MIRACLE LINUX 8 標準では提供されていないため、CentOS 7 のミラーサイトから提供されているパッケージをインストールします。

# curl -O http://mirror.centos.org/centos/7/os/x86_64/Packages/ipa-pmincho-fonts-003.03-5.el7.noarch.rpm
# rpm -ivh ipa-pmincho-fonts-003.03-5.el7.noarch.rpm

Vul Hammer Frontend 用パッケージをインストールします。

# rpm -ivh vulhammer-frontend-5.0-4.el8.x86_64.rpm

Vul Hammer Frontend の設定

VulHammer Frontend の設定ファイル(/etc/vulhammer/vulhammer-frontend.yml)を編集します。
以下は主な設定項目です。

パラメータ 説明 設定例
http/address サービスがリッスンするアドレス 0.0.0.0
http/port サービスがリッスンするポート 8888
http/path サービスを公開する URL パス /
database/user データベースユーザ名 vuluser
database/password データベースユーザのパスワード [ 任意のパスワード文字列 ]
database/host データベースが動作するホストの IP、ホスト名 127.0.0.1
database/database データベース名 vh_manager
masterKey SSH パスフレーズを暗号化するためのパスワードが記述されたファイルのパス /var/lib/vulhammer/masterkey
# vi /etc/vulhammer/vulhammer-frontend.yml
 1 ---
 2 http:
 3   address: 0.0.0.0 ※←変更
 4   port: 8888
 5   path: /
 6   htdocsDirectoryPath: /usr/share/vulhammer/web
 7 reporting:
 8   outputDirectoryPath: /var/lib/vulhammer/report
 9   reporterDirectory: /usr/share/vulhammer/reporter
10   python: python3
11   font: /usr/share/fonts/ipa-pmincho/ipamp.ttf
12 logging:
13  level: info
14  console:
15    enable: false
16   file:
17     enable: true
18     path: /var/log/vulhammer/vulhammer-frontend.log
19 database:
20   user: vuluser ※←変更
21   password: [ 任意のパスワード文字列 ] ※←変更
22   host: 127.0.0.1
23   port: 3306
24   database: vh_manager ※←変更
25 hitachiSearchEngineAPI:
26   url: http://localhost:8081/
27 masterKey: /var/lib/vulhammer/masterkey ※←変更 

Vul Hammer Frontend を起動します。

# systemctl start vulhammer-frontend

Web ブラウザを利用して、
http://<Vul Hammer Frontend が動作するサーバの IP アドレス >:8888/
にアクセスすると、VulHammer Frontend の WebUI が表示されます。

Vul Hammer Proxy の UUID を取得

後の手順で必要となる、ProxyUUID を取得します。
WebFrontendURL に Web ブラウザからアクセスします。
以下のようなログイン画面が表示されます。

MIRACLE Vul Hammer のログイン画面

<図 3. MIRACLE Vul Hammer のログイン画面>

メールアドレスとパスワードを入力してログインしてください。
構築直後の初期設定の場合、メールアドレスとパスワードは以下になります。

メールアドレス admin@example.com
password password

Vul Hammer の Web 画面左側にあるサイドバーから「プロキシ」を選択します。
プロキシ画面では、Vul Hammer がスキャン対象へ接続する際の Vul Hammer Proxy の一覧が表示されます。

MIRACLE Vul Hammer のプロキシ画面

<図 4. MIRACLE Vul Hammer のプロキシ画面>

プロキシ画面右上にある「操作」メニューから「作成」をクリックします。

MIRACLE Vul Hammer の操作メニュー

<図 5. MIRACLE Vul Hammer の操作メニュー>

フォームにプロキシ名を入力します。以下は、「proxy01」という名前で登録する例です。
入力が完了したら「送信」をクリックします。

MIRACLE Vul Hammer のプロキシ作成画面

<図 6. MIRACLE Vul Hammer のプロキシ作成画面>

正しく追加された場合は、プロキシの一覧に「proxy01」が追加されます。
作成したプロキシで自動生成された UUID はこの後の 「Vul Hammer Proxy の設定」の手順で使用します。

MIRACLE Vul Hammer のプロキシ画面

<図 7. MIRACLE Vul Hammer のプロキシ画面>

Vul Hammer Proxy のインストールと設定

Vul Hammer Proxy のインストール

Vul Hammer Proxy の依存パッケージにあたる samba、krb5-workstation、sshpass をインストールします。

# dnf install samba krb5-workstation sshpass

Vul Hammer Proxy 用パッケージをインストールします。

# rpm -ivh vulhammer-proxy-5.2-1.ML8.x86_64.rpm \
vulhammer-proxy-tools-0.1-1.ML8.noarch.rpm

MariaDB 上へデータベース作成

Vul Hammer Proxy が利用するデータベースを作成します。
ここでは、「vh_proxy」という名前のデータベースを作成します。

# mysql -u root -e "create database vh_proxy"

作成したデータベースに、Vul Hammer Proxy パッケージが提供するデータベーススキーマと初期設定を導入します。

# mysql -u root vh_proxy < /usr/share/doc/vulhammer-proxy/schema.sql

ユーザ vuluser に、データベース vh_proxy にまつわる全ての権限を付与します。

# mysql -u root
MariaDB [(none)]> grant all privileges on vh_proxy.* to vuluser@localhost;

Vul Hammer Proxy の設定

Vul Hammer Proxy の設定ファイル(/etc/vulhammer/vulhammer-proxy.conf)を編集します。以下は主な設定項目です。

パラメータ 説明 設定例
ProxyUUID Vul Hammer Proxy の一意性を保証するための UUID 前の手順の Frontend でプロキシを作成時に自動生成された UUID 値を入力
OSDBServer データベースが動作するホストの IP、ホスト名 localhost
OSDBUser データベースユーザ名 vuluser
OSDBPassword データベースユーザのパスワード [ 任意のパスワード文字列 ]
OSDBName データベース名 vh_proxy
VulHammerManager Vul Hammer Manager がデータを受信可能な IP アドレス 127.0.0.1
# vi /etc/vulhammer/vulhammer-proxy.conf
    1 ### ProxyUUID
    2 #       Proxy UUID value

(省略・・・)

    7 ProxyUUID=[ フロントエンドでプロキシを作成時に自動生成された UUID 値 ]

(省略・・・)

   81 ### OSDBServer
   82 #       Database server IP address.

(省略・・・)

   87 OSDBServer=localhost
   88
   89 ### OSDBUser
   90 #       Database user name.

(省略・・・)

   95 OSDBUser=vuluser
   96
   97 ### OSDBPassword
   98 #       Database user password.

(省略・・・)

  104 OSDBPassword=[ 任意のパスワード文字列 ]
  105 ### OSDBName
  106 #       Database name.

(省略・・・)

  111 OSDBName=vh_proxy
  112
  113 ### VulHammerManager
  114 #       Vul Hammer Manager's IP address.

(省略・・・)

  119 VulHammerManager=127.0.0.1

Vul Hammer Proxy を起動します。

# chown vulhammer.vulhammer /etc/vulhammer/vulhammer-proxy.conf
# systemctl start vulhammer-proxy

脆弱性管理対象ホストへログインするための SSH 鍵の作成

Vul Hammer は脆弱性スキャンを実施する際に、SSH 鍵を用いて脆弱性管理対象ホストへログインします。
ログインに必要な SSH 鍵を作成します。ここでは、例として /var/lib/vulhammer/.ssh/ 以下に鍵を生成します。

# ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): /var/lib/vulhammer/.ssh/vh_scanuser
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

作成した SSH 鍵の所有者と所有グループを vulhammer にします。

# chown vulhammer.vulhammer /var/lib/vulhammer/.ssh/vh_scanuser

脆弱性管理対象サーバを追加

作業対象のサーバが変わります

ここまでは Vul Hammer サーバ側での作業でしたが、ここからは脆弱性の管理対象サーバ側での作業となります。

openscap-scanner のインストール

脆弱性スキャンを実施する oscap コマンドを利用するために、openscap-scanner をインストールします。

# dnf install openscap-scanner

Vul Hammer Update Agent のインストール

脆弱性スキャンによって検出された脆弱性には、影響を受けるパッケージが関連付けられることがあります。Vul Hammer Update Agent は脆弱性の影響を受けるパッケージを Vul Hammer を通してアップデートする際に必要となります。
本機能は Linux 系 OS 限定となっており、Vul Hammer 管理画面からパッケージのアップデートを行わない場合は Vul Hammer Update Agent をインストールする必要はありません。
以下のコマンドで Vul Hammer Update Agent をインストールします。

# rpm -ihv vulhammer-update-agent-1.0-1.ML8.noarch.rpm

SSH 接続用のユーザ作成

Vul Hammer Manager から SSH 接続をする際の接続ユーザを作成します。ここでは、接続ユーザを vh_scanuser として作成します。ここでは合わせてパスワードの設定も行っています。

# useradd -m vh_scanuser
# passwd vh_scanuser
Changing password for user vh_scanuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

また、前手順でインストールした Vul Hammer Update Agent 機能を利用するためには、スキャンのための SSH 接続ユーザを vulhammer-update-agent グループ(このグループはパッケージインストール時に作成されます)に所属させる必要があります。 Vul Hammer Update Agent をインストールしていない場合はこの手順を実行する必要はありません。

# usermod -a -G vulhammer-update-agent vh_scanuser

公開鍵の登録

Vul Hammer サーバ側で作成した公開鍵を脆弱性管理対象ホストに登録します。
先ほど作成した vh_scanuser ユーザのホームディレクトリ直下に .ssh ディレクトリを作成します。
authorized_keys ファイルを作成し、SSH 鍵作成時に生成された公開鍵(vh_scanuser.pub)の内容をコピー&ペーストします。
ここでは公開鍵をコピー&ペーストで作成していますが、SSH 鍵作成時に生成された公開鍵(vh_scanuser.pub)を脆弱性管理対象ホストに転送し、リネームと権限変更でも問題ありません。

# mkdir /home/vh_scanuser/.ssh
# vi /home/vh_scanuser/.ssh/authorized_keys

.ssh ディレクトリ、authorized_keys ファイルの所有者と所有グループを vh_scanuser にします。

# chown -R vh_scanuser.vh_scanuser /home/vh_scanuser/.ssh

.ssh ディレクトリのパーミッションを 700、authorized_keys のパーミッションを 600 にします。

# chmod 700 /home/vh_scanuser/.ssh
# chmod 600 /home/vh_scanuser/.ssh/authorized_keys

接続確認

最後に、Vul Hammer サーバ側から脆弱性管理対象ホストへ SSH 接続出来るか確認しましょう。

# sudo -u vulhammer ssh -i /var/lib/vulhammer/.ssh/vh_scanuser vh_scanuser@[ 脆弱性管理対象ホストの IP アドレス ]
The authenticity of host 'xx.xx.xx.xx (xx.xx.xx.xx)' can't be established.
ECDSA key fingerprint is SHA256:0C/DDvBFJJgFl5HSJHYpkPf6Qh5Blhu0poQhT0pXT+M.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

[vh_scanuser@[ 脆弱性管理対象ホスト名 ] ~ ]$

おわりに

いかがでしたでしょうか。以上で、MIRACLE Vul Hammer V5 の構築作業は終了です。
評価版は複数のパターンで提供しており、rpm パッケージ版は構築手順もおおむね同じです。是非お試しください!

※評価版は、2022 年 1 月時点の脆弱性情報を利用して脆弱性スキャンを実行します。脆弱性情報は最新のものに更新されません。

本記事に関連するリンク
MIRACLE Vul Hammer 脆弱性管理ツール「MIRACLE Vul Hammer(ミラクル・バル・ハンマー)」
SBOMを使った脆弱性管理を実現!MIRACLE Vul Hammer
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime