IR 情報

お問い合わせ

BLOG

脆弱性管理 BLOG

2022 年 06 月 15 日

MIRACLE Vul Hammer を構築してみよう

MIRACLE Vul Hammer とは?

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

構成

今回は、一例として MIRACLE LINUX8.4 と WordPress でブログサーバを構築してみよう で構築したブログサーバを Vul Hammer のスキャン対象とします。構成は以下の通りです。
なお、MIRACLE ZBX Server および Zabbix は構築済みであることを前提に説明します。

 構成図

vulhammer-server 側の設定

ここでは、vulhammer-server 側の設定について紹介します。

MIRACLE ZBX エージェントのインストール・設定

Vul Hammer を利用するためには ZBX エージェント(もしくは Zabbix エージェント)が必要です。
ZBX エージェントのインストールは、弊社サポートページの MIRACLE ZBX 5.0 インストールマニュアル をご参照ください。

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

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

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

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

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

[root@vulhammer-server ~]# openssl pkcs12 -in client.p12 -out contents_cert -clcerts -nokeys
Enter Import Password:
[root@vulhammer-server ~]# openssl pkcs12 -in client.p12 -out contents_key -nocerts -nodes
Enter Import Password:
[root@vulhammer-server ~]# ls -la contents_*
-rw-------. 1 root root 2079  3 月 22 16:13 contents_cert
-rw-------. 1 root root 1844  3 月 22 16:14 contents_key

作成した contents_cert、contents_key を任意のディレクトリに配置します。なお、contents_cert と contents_key の所有者は zabbix ユーザへ変更しましょう。
以下の例では、contents_cert と contents_key を /var/lib/zabbix 以下に配置しています。また、2 つのファイルの所有者、所有グループ、パーミッションの変更を行っています。

[root@vulhammer-server ~]# mv /root/contents_cert /root/contents_key /var/lib/zabbix
[root@vulhammer-server ~]# chown zabbix.zabbix /var/lib/zabbix/contents_cert /var/lib/zabbix/contents_key
[root@vulhammer-server ~]# chmod 644 /var/lib/zabbix/contents_cert /var/lib/zabbix/contents_key
[root@vulhammer-server ~]# ls -la /var/lib/zabbix
合計 16
drwxr-xr-x.  2 zabbix zabbix 4096  3 月 22 16:18 .
drwxr-xr-x. 64 root   root   4096  2 月 28 12:27 ..
-rw-------.  1 zabbix zabbix 2079  3 月 22 16:13 contents_cert
-rw-------.  1 zabbix zabbix 1844  3 月 22 16:14 contents_key

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

Vul Hammer の関連パッケージとして、samba をインストールします。

[root@vulhammer-server ~]# yum install samba

Vul Hammer の関連パッケージとして、sshpass をインストールします。なお、OS 標準では提供されていないため、EPEL から提供されているパッケージをインストールします。

[root@vulhammer-server ~]# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
[root@vulhammer-server ~]# yum install sshpass

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

[root@vulhammer-server ~]# yum install mariadb-server openscap-utils

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

[root@vulhammer-server ~]# rpm -ivh vulhammer-manager-3.1-4.ML8.x86_64.rpm vulhammer-pywinrm-0.2-3.ML8.x86_64.rpm vulhammer-scap-security-guide-20220113-2.ML8.noarch.rpm vulhammer-scripts-3.0-1.ML8.noarch.rpm
Verifying...                          ################################# [100%]
準備しています ...              ################################# [100%]
更新中 / インストール中 ...
   1:vulhammer-scap-security-guide-202################################# [ 25%]
   2:vulhammer-pywinrm-0.2-3.ML8      ################################# [ 50%]
   3:vulhammer-scripts-3.0-1.ML8      ################################# [ 75%]
   4:vulhammer-manager-3.1-4.ML8      ################################# [100%]
アップデートインストール後は、/usr/share/doc/vulhammer-manager-3.1/ 以下にあるアップデートスクリプトを順次実行して、DB の修正を行ってください。
e.g. 2.0 から 2.2 へのアップデート後に、これまでのアップデートを適用。
$ mysql -u root oscap_scan < /usr/share/doc/vulhammer-manager-3.1/2_0_to_2_1.sql
$ mysql -u root oscap_scan < /usr/share/doc/vulhammer-manager-3.1/2_1_to_2_2.sql

また、同じディレクトリに含まれる Zabbix テンプレートを再度インポートしてください。

MariaDB 上へデータベース作成

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

[root@vulhammer-server ~]# vim /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=utf8
 22 collation-server=utf8_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 の起動、自動起動設定を有効にします。

[root@vulhammer-server ~]# systemctl start mariadb.service
[root@vulhammer-server ~]# systemctl enable mariadb.service

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

[root@vulhammer-server ~]# mysql -u root -e "create database oscap_scan"

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

[root@vulhammer-server ~]# mysql -u root oscap_scan < /usr/share/doc/vulhammer-manager/schema.sql

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

[root@vulhammer-server ~]# 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)

ZBX エージェントの設定

ZBX エージェントの設定ファイル(/etc/zabbix/zabbix_agentd.conf)を編集します。
設定項目は以下の通りです。

  • Server:ZBX Server(もしくは Zabbix Server)の IP アドレス
  • ServerActive:ZBX Server(もしくは Zabbix Server)の IP アドレス
  • Hostname:Vul Hammer マネージャーの ZBX システム上でのホスト名
  • LoadModule:/etc/zabbix/zabbix_agentd.d/modules/vulhammer-manager.so
[root@vulhammer-server ~]# vim /etc/zabbix/zabbix_agentd.conf
115 ### Option: Server
・・・
( 省略 )
・・・
127 Server=[ZBX Server(もしくはZabbix Server)のIPアドレス]

156 ### Option: ServerActive
・・・
( 省略 )
・・・
168 ServerActive=[ZBX Server(もしくはZabbix Server)のIPアドレス]

170 ### Option: Hostname
・・・
( 省略 )
・・・
179 Hostname=VulHammer Manager

360 ### Option: LoadModule
・・・
( 省略 )
・・・
373 LoadModule=/etc/zabbix/zabbix_agentd.d/modules/vulhammer-manager.so

Vul Hammer Manager の設定

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

パラメータ 説明 設定例
OSDBServer データベースが動作するホストの IP、ホスト名 localhost
OSDBUser データベースユーザ名 vulhammeruser
OSDBPassword データベースユーザのパスワード [ 任意のパスワード文字列 ]
OSDBName データベース名 oscap_scan
OSDBPort データベースへのアクセスポート 3306
ContentsCertFile クライアント証明書ファイルパス /var/lib/zabbix/contents_cert
ContentsCertKey クライアント証明書キーファイルパス /var/lib/zabbix/contents_key
MasterKey SSH パスフレーズを暗号化するためのパスワードが記述されたファイルのパス /var/lib/zabbix/passfile
Zabbix Server Zabbix Server の IP アドレス [ZBX Server(もしくはZabbix Server)のIPアドレス]
Port Zabbix Server の Trapper プロセスのポート 10051
WebFrontendURL Vul Hammer フロントエンドが動作する URL http://127.0.0.1/results/
[root@vulhammer-server ~]# vim /etc/zabbix/vulhammer-manager.conf
  1 # OSDBServer is mandatory.
  2 OSDBServer=localhost
  3
  4 # OSDBUser is mandatory
  5 OSDBUser=vulhammeruser
  6
  7 # OSDBPassword is mandatory
  8 OSDBPassword=[ データベースユーザのパスワード ]
  9
 10 # OSDBName is mandatory
 11 OSDBName=oscap_scan
 12
 13 # OSDBPort is optional
 14 OSDBPort=3306
 15
 16 # ContentsCertFile is mandatory and is the full path of Cert File
 17 # for downloading contents from Cybertrust site.
 18 ContentsCertFile=/var/lib/zabbix/contents_cert
 19
 20 # ContentsCertKey is mandatory and is the full path of Cert Key
 21 # for upper ContentsFile parameter.
 22 ContentsCertKey=/var/lib/zabbix/contents_key
 23
・・・
(省略)
・・・
 28 # MasterKey is set to the file full path which includes password
 29 # used at decrypting ssh key_file passphrase.
 30 MasterKey=/var/lib/zabbix/passfile
 31
 32 # ZabbixServer is set to Zabbix Server's IP address.
 33 ZabbixServer=[ZBX Server(もしくはZabbix Server)のIPアドレス]
 34
 35 # Port is optional. It is set to Zabbix Server Trapper port.
 36 Port=10051
 ・・・
(省略)
・・・
 42 # WebFrontendURL is set to Vul Hammer's system Web frontend URL
 43 # to be terminated with '/'.
 44 WebFrontendURL=http://127.0.0.1/results/
・・・
(省略)
・・・

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

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

Vul Hammer マネージャーはスキャン対象へのログインに、SSH パスフレーズを用います。この SSH パスフレーズを暗号化するためのマスターキーを作成します。

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

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

[root@vulhammer-server ~]# chown zabbix.zabbix /var/lib/zabbix/passfile
[root@vulhammer-server ~]# chmod 640 /var/lib/zabbix/passfile

そのうえで、apache ユーザを zabbix グループへ所属させるために、以下のコマンドを実行します。

[root@vulhammer-server ~]# usermod -a -G zabbix apache

ZBX システムでの VulHammer 用のテンプレートインポート

ZBX システムに VulHammer 用のテンプレートをインポートします。
vulhammer-manager パッケージをインストールしたホストには、以下のように vulhammer-manager_target.xml もインストールされています。

[root@vulhammer-server]# ls -la /usr/share/doc/vulhammer-manager/vulhammer-manager_target.xml
-rw-r--r--. 1 root root 77873 12 月 22 13:34 /usr/share/doc/vulhammer-manager/vulhammer-manager_target.xml

あらかじめ、vulhammer-manager_target.xml を Web ブラウザを使用する PC にコピーしておきます。
Web ブラウザから ZBX フロントエンドにアクセスします。
左側のメニューから「設定」->「テンプレート」に移動し、右上の「インポート」をクリックします。

 テンプレート画面

vulhammer_manager_target.xml をインポートします。

 インポート画面

ZBX システムでのホストの作成、テンプレートの適用

ZBX 上に Vul Hammer Manager 用のホストを作成し、テンプレートを適用します。

ZBX フロントエンドの左側のメニューから「設定」->「ホスト」に移動し、右上の「ホストの作成」をクリックします。

 ホスト画面

ホストを作成します。

 ホスト画面テンプレートの設定

「テンプレート」タブをクリックし、新規テンプレートをリンクの「選択」をクリックします。
ホストグループ「Templates/Vul Hammer」->「Template Vul Hammer Manager」をクリックして選択します。

 ホスト画面テンプレートの設定

「追加」をクリックして、テンプレートを適用したホストを作成します。

ZBX エージェントサービスの起動

上記設定が終了した後に、ZBX エージェントサービスを再起動します。

[root@vulhammer-server ~]# systemctl restart zabbix-agent

Vul Hammer フロントエンドの関連パッケージのインストール

Vul Hammer フロントエンドのインストールに必要なパッケージをインストールします。
なお、ipa-pmincho-fonts は MIRACLE LINUX 8 のリポジトリで提供されていないため旧バージョン向けパッケージをダウンロードしてインストールします。

[root@vulhammer-server ~]# yum install python3 python3-libs httpd libffi libjpeg-turbo freetype
[root@vulhammer-server ~]# wget http://ftp.riken.jp/Linux/centos/7/os/x86_64/Packages/ipa-pmincho-fonts-003.03-5.el7.noarch.rpm
[root@vulhammer-server ~]# yum localinstall ipa-pmincho-fonts-003.03-5.el7.noarch.rpm

Vul Hammer フロントエンドのインストール・設定

Vul Hammer フロントエンド用パッケージをインストールします。

[root@vulhammer-server ~]# rpm -ivh vulhammer-frontend-3.1-1.ML8.x86_64.rpm

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

[root@vulhammer-server ~]# vim /etc/vulhammer-frontend.json
  1 {
  2   "masterkey": "/var/lib/zabbix/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 }

ファイアウォールのポート開放

Vul Hammer の利用に必要なポートを開放します。
MariaDB 用の通信ポートとして 3306 番ポートを開放します。

[root@vulhammer-server ~]# firewall-cmd --permanent --add-port=3306/tcp

Vul Hammer フロントエンドに http でアクセスする場合は 80 番ポートを開放します。

[root@vulhammer-server ~]# firewall-cmd --permanent --add-port=80/tcp

Vul Hammer フロントエンドに https でアクセスする場合は 443 番ポートを開放します。

[root@vulhammer-server ~]# firewall-cmd --permanent --add-port=443/tcp

ファイアウォールの設定を反映します。

[root@vulhammer-server ~]# firewall-cmd --reload

Vul Hammer フロントエンドの起動

Vul Hammer フロントエンドを起動するために、httpd を起動します。

[root@vulhammer-server ~]# systemctl start httpd.service

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

スキャン対象へログインするための SSH 鍵の作成

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

[root@vulhammer-server]# mkdir -p /home/zabbix/.ssh
[root@vulhammer-server]# ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): /home/zabbix/.ssh/id_ed25519
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/zabbix/.ssh/id_ed25519.
Your public key has been saved in /home/zabbix/.ssh/id_ed25519.pub.

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

[root@vulhammer-server ~]# chown -R zabbix.zabbix /home/zabbix/

スキャン対象側の設定

ここでは、スキャン対象側で行う設定について説明します。

openscap-scanner のインストール

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

[root@blog-server ~]# yum install openscap-scanner

Vul Hammer Update Agent のインストール

脆弱性スキャンによって検出された脆弱性には、影響を受けるパッケージが関連付けられることがあります。Vul Hammer Update Agent は脆弱性の影響を受けるパッケージを Vul Hammer を通してアップデートする際に必要となります。

以下のコマンドで Vul Hammer Update Agent をインストールします。

[root@blog-server ~]# rpm -ihv vulhammer-update-agent-1.0-1.ML8.noarch.rpm
Verifying...                          ################################# [100%]
準備しています ...              ################################# [100%]
更新中 / インストール中 ...
   1:vulhammer-update-agent-1.0-1.ML8 ################################# [100%]

SSH 接続用のユーザ作成

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

[root@blog-server ~]# useradd -m vulhammeruser
[root@blog-server ~]# passwd vulhammeruser
ユーザー vulhammeruser のパスワードを変更。
新しいパスワード :
新しいパスワードを再入力してください :
passwd: すべての認証トークンが正しく更新できました。

公開鍵の登録

vulhammer-server 側で作成した公開鍵をスキャン対象に登録します。
先ほど作成した vulhammeruser ユーザのホームディレクトリ直下に .ssh ディレクトリを作成し、authorized_keys ファイルに公開鍵の情報を追加します。

[root@blog-server ~]# mkdir /home/vulhammeruser/.ssh
[root@blog-server ~]# vim /home/vulhammeruser/.ssh/authorized_keys

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

[root@blog-server ~]# chown vulhammeruser.vulhammeruser /home/vulhammeruser/.ssh
[root@blog-server ~]# chown vulhammeruser.vulhammeruser /home/vulhammeruser/.ssh/authorized_keys

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

[root@blog-server ~]# chmod 700 /home/vulhammeruser/.ssh
[root@blog-server ~]# chmod 600 /home/vulhammeruser/.ssh/authorized_keys

接続確認

最後に、vulhammer-server 側からスキャン対象へ SSH 接続出来るか確認すると良いでしょう。

[root@vulhammer-server ~]# ssh -i /home/zabbix/.ssh/id_ed25519 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.
Enter passphrase for key '/home/zabbix/.ssh/id_ed25519':
Activate the web console with: systemctl enable --now cockpit.socket

[vulhammeruser@blog-server ~]$

おわりに

いかがでしたでしょうか。以上で、MIRACLE Vul Hammer の構築作業は終了です。
評価版も構築手順は同じです。是非お試しください!
※評価版の場合、ライセンスファイルのインストールは不要です。読み飛ばしてください。
※評価版は、2022年1月時点の脆弱性情報を利用して脆弱性スキャンを実行します。脆弱性情報は最新のものに更新されません。

次回は、実際に MIRACLE Vul Hammer で脆弱性スキャン~脆弱性対策を行うまでの過程をご紹介します。お楽しみに!!

MIRACLE Vul Hammer 評価版

MIRACLE Vul Hammer の評価版をトライアルでご利用いただけます。導入検証や技術評価に是非ご活用ください。


本記事に関連するリンク
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime
組込み Linux にプラスして 長期間の製品ライフサイクルをサポート EM+PLS