採用情報

お問い合わせ

BLOG

脆弱性管理 BLOG

2023 年 03 月 29 日

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

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

MIRACLE Vul Hammer とは?

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

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

V3 との違いは MIRACLE Vul Hammer バージョン 4 リリースに記載のとおりとなります。

また、V3 では MIRACLE ZBX が別途必要でしたが、V4 では MIRACLE ZBX と分離されたことで、ZBX を導入する必要がなくなりました。

MIRACLE Vul Hammer V4 の新機能についてはこちらのブログをご覧ください。

システム構成イメージ

MIRACLE Vul Hammer のシステム構成は以下の通りです ( 図 1)

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

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

インフラ構成

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

プラットフォーム: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=80/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-4.4-5.ML8.x86_64.rpm \
vulhammer-pywinrm-0.4-1.ML8.x86_64.rpm \
vulhammer-scap-security-guide-20221118-1.ML8.noarch.rpm \
vulhammer-scripts-4.1-1.ML8.noarch.rpm

MariaDB 上へデータベース作成

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

# 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 #innodb_file_format=Barracuda
 26 #innodb_file_format_max=Barracuda
 27 event_scheduler=ON

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

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

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

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

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

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

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

# mysql -u root
MariaDB [(none)]> create user vulhammeruser@localhost identified by '[ 任意のパスワード ]';
Query OK, 0 rows affected (0.002 sec)

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

MariaDB [(none)]> grant all privileges on oscap_scan.* to vulhammeruser@localhost;
Query OK, 0 rows affected (0.000 sec)

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

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 データベースユーザ名 vulhammeruser
OSDBPassword データベースユーザのパスワード [ 任意のパスワード文字列 ]
OSDBName データベース名 oscap_scan
ContentsCertFile クライアント証明書ファイルパス /var/lib/vulhammer/contents_cert
ContentsCertKey クライアント証明書キーファイルパス /var/lib/vulhammer/contents_key
MasterKey SSH パスフレーズを暗号化するためのパスワードが記述されたファイルのパス /var/lib/vulhammer/passfile
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=vulhammeruser
   90
   91 ### OSDBPassword
   92 #       Database user password.
(省略・・・)
   97 OSDBPassword=[ 任意のパスワード文字列 ]
   98
   99 ### OSDBName
  100 #       Database name.
(省略・・・)
  105 OSDBName=oscap_scan
  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/passfile

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

Apache のインストール

後述の作業を実施するために、Vul Hammer Frontend の依存パッケージである Apache をここで事前にインストールします。

# dnf install httpd

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

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

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

このマスターキーは Vul Hammer Frontend 側でパスフレーズを暗号化する際にも使用されます。もし、共通のマスターキーファイルを利用する場合は、他のユーザが読めないようにするために、Vul Hammer Manager の動作ユーザ(vulhammer)と Vul Hammer Frontend の動作ユーザ(apache)を同じグループに所属させる必要があります。
マスターキーの所有者と所有グループを vulhammer にし、他グループに権限を与えないようにします。

# vi /var/lib/vulhammer/passfile
# chown vulhammer.vulhammer /var/lib/vulhammer/passfile
# chmod 640 /var/lib/vulhammer/passfile
# usermod -a -G vulhammer apache

Vul Hammer Manager を起動します。

# systemctl start vulhammer-manager

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

Vul Hammer Frontend のインストール

Vul Hammer Frontend の依存パッケージにあたる python3、libjpeg-turbo、python3-libs、libffi 、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 公開サーバから取得した、Vul Hammer Frontend 用パッケージをインストールします。

# rpm -ivh vulhammer-frontend-4.1-1.ML8.x86_64.rpm

Vul Hammer Frontend の設定

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

# vi /etc/vulhammer-frontend.json
  1 {
  2   "masterkey": "/var/lib/vulhammer/passfile",
  3   "secretkey": "1i)=um37@_$w*x16h8m*)sw!*w1zka9e9(f+gp7mx0ky##SECRETKEY#u6qm",
  4   "database": {
  5       "name": "oscap_scan",
  6       "user": "vulhammeruser",
  7       "password": "[ 任意のパスワード ]",
  8       "host": "localhost",
  9       "port": "3306"
 10   }
 11 }

Apache を起動します。

# systemctl start httpd.service

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

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

Vul Hammer Proxy のインストール

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

# dnf install samba krb5-workstation sshpass

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

# rpm -ivh vulhammer-proxy-4.4-5.ML8.x86_64.rpm

MariaDB 上へデータベース作成

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

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

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

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

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

# mysql -u root
MariaDB [(none)]> grant all privileges on oscap_scan_proxy.* to vulhammeruser@localhost;
Query OK, 0 rows affected (0.000 sec)

Vul Hammer Proxy の設定

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

パラメータ 説明 設定例
ProxyUUID Vul Hammer プロキシの一意性を保証するための UUID。 フロントエンドでプロキシを作成時に自動生成され、この値を確認し入力する。
OSDBServer データベースが動作するホストの IP、ホスト名 localhost
OSDBUser データベースユーザ名 vulhammeruser
OSDBPassword データベースユーザのパスワード [ 任意のパスワード文字列 ]
OSDBName データベース名 oscap_scan_proxy
VulHammerManager Vul Hammer マネージャがデータを受信可能な IP ア ドレス 127.0.0.1
# vi /etc/vulhammer/vulhammer-proxy.conf
    1 ### ProxyUUID
    2 #       Proxy UUID value
(省略・・・)
    7 ProxyUUID=[ フロントエンドでプロキシを作成時に自動生成された値 ]
(省略・・・)
   81 ### OSDBServer
   82 #       Database server IP address.
(省略・・・)
   87 OSDBServer=localhost
   88
   89 ### OSDBUser
   90 #       Database user name.
(省略・・・)
   95 OSDBUser=vulhammeruser
   96
   97 ### OSDBPassword
   98 #       Database user password.
(省略・・・)
  105 ### OSDBName
  106 #       Database name.
(省略・・・)
  111 OSDBName=oscap_scan_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 鍵を作成します。ここでは、例として /etc/vulhammer/keys/ 配下に鍵を生成します。

# mkdir /var/lib/vulhammer/keys
# cd /var/lib/vulhammer/keys
# 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/keys/vulhammeruser
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/lib/vulhammer/keys/vulhammeruser.
Your public key has been saved in /var/lib/vulhammer/keys/vulhammeruser.pub.

/etc/vulhammer/keys/ 以下のディレクトリ、ファイルの所有者と所有グループを vulhammer にします。

# chown -R vulhammer.vulhammer /var/lib/vulhammer/keys

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

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

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

openscap-scanner のインストール

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

# dnf install openscap-scanner

Vul Hammer Update Agent のインストール

脆弱性スキャンによって検出された脆弱性には、影響を受けるパッケージが関連付けられることがあります。Vul Hammer Update Agent は脆弱性の影響を受けるパッケージを Vul Hammer を通してアップデートする際に必要となります。
以下のコマンドで、Vul Hammer 公開サーバから取得した、Vul Hammer Update Agent をインストールします。

# rpm -ihv vulhammer-update-agent-1.0-1.ML8.noarch.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:vulhammer-update-agent-1.0-1.ML8 ################################# [100%]

SSH 接続用のユーザ作成

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

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

公開鍵の登録

Vul Hammer サーバ側で作成した公開鍵を脆弱性管理対象ホストに登録します。
先ほど作成した vulhammeruser ユーザのホームディレクトリ直下に .ssh ディレクトリを作成します。
authorized_keys ファイルを作成し、SSH 鍵作成時に生成された公開鍵(vulhammeruser.pub)の内容をコピー&ペーストします。

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

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

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

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

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

接続確認

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

# sudo -u vulhammer ssh -i /var/lib/vulhammer/keys/vulhammeruser vulhammeruser@[ 脆弱性管理対象ホストの 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
Warning: Permanently added 'xx.xx.xx.xx' (ECDSA) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket

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

おわりに

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

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


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