1.Open-AudITとは
Open-AudITは対象機器に何もインストールする必要がなくエージェントレスでインベントリ収集できます。
Open-AudITは、無償で使用できるCommunity版と、有償のProfessional版、Enterprise版があり、有償版を使用すると、追加機能を使用することができます。
違いは以下に詳しく記載されております。
Open-AudITの詳細は以下をご参照ください。
2.Open-AudITの仕組み
Open-AudITは、対象機器に対してnmapスキャンを実行し、snmpポートがあればsnmpポーリングし、ssh/WMIポートがあればssh/WMIログインしインベントリ収集スクリプトを実行して、ハードウェア情報やソフトウェア情報を収集します。
詳細は以下に記載されております。
本記事は以下記事のアップデート版となります。
3.稼働条件
Open-AudIT 6.0.2
- CPU: Intel i7 / 4,000 Mhz 以上(4コア以上推奨)
- メモリ: 16GB以上
- ディスク: 空き容量40GB以上(SSD推奨)
- Linux: RedHat 9/10, Debian 12/13, Ubuntu 22.04 (64bit必須)
- Windows: WindowsServer 2016以降 (64bit必須) (Windows 10 not supported)
詳細は以下をご参照ください。
4.Open-Auditが使用するポート一覧
WindowsベースサーバにインストールされたOpen-AudITのネットワーク管理トラフィック
LinuxベースサーバにインストールされたOpen-AudITのネットワーク管理トラフィック
Open-AudITのネットワーク管理ユーザトラフィック
詳細は以下をご参照ください。
5.インベントリ収集対象ホスト設定
Linuxデバイスの監査には、rootユーザ、sudo(root)アクセス権限を持つユーザの使用を推奨します。
rootユーザ、sudoを許可していないユーザでインベントリ収集を行う際には以下の情報が取得できません。
詳細は以下をご参照ください。
また、対象ホストがWindowsの場合は、Windowsセキュリティポリシーの設定変更を行う必要があります。
詳細は以下をご参照ください。
6.Open-AudITインストール手順
Open-AudITのインストールを行います。
インストール環境
- Red Hat Enterprise Linux release 9.7 (Plow)
- Open-AudIT 6.0.2
- MariaDB 15.1
- Apache 2.4
- PHP 8.3
- SELinuxはDisabled、Firewalldは停止されていること
- 作業はすべてrootで実施
- Open-AudITのインストーラにて必要なパッケージをインストールするためインターネットへの接続が可能なこと
※Open-AudITのインストーラにてMariaDB、Apache、PHPの他に必要なパッケージがインストールされます
Open-AudITインストール
以下より、Linux版のインストーラをダウンロードし、適当なディレクトリに配置します。
・ファイル名:OAE-Linux-x86_64-release_6.0.2.run
・配置先:/root/work
配置後、インストーラを実行し、Open-Auditのインストールを行います。
# cd /root/work/
# chmod +x OAE-Linux-x86_64-release_6.0.2.run
# ./OAE-Linux-x86_64-release_6.0.2.run
※Open-AudITのインストーラで、MariaDB等の必要パッケージがインストールされます。
インストール完了後、ブラウザから以下にアクセスできることを確認します。
http://<OpenAuditのIPアドレス>/open-audit
ユーザ:admin
パスワード:password
ログイン後、ライセンス契約 (EULA) に同意し、ダッシュボードが表示されることを確認します。
インベントリ収集手順
本書ではLinux(RHEL)のホストをrootユーザでインベントリ収集を行うものとします。
クレデンシャルの作成
メニューバより Discover > Credentials > Create Credentials の順で移動し、必要情報を入力し、「Submit」を選択します。
Name:<クレデンシャルの名前>
Type:SSH
Username:root
Password:<rootユーザパスワード>
ディスカバリ(インベントリ収集ホスト情報)の作成
メニューバより Discover > Discoveries > Create Discoveries の順で移動し、必要情報を入力し、「Submit」を選択します。
Name:<ディスカバリの名前>
Subnet:<インベントリ収集先のサブネット>
Type:Subnet
※Subnetの指定は、単一のアドレス指定の他、以下のように範囲指定、サブネット指定することができます。
- 単一アドレス指定例:192.168.0.1
- 範囲指定例:192.168.0.1-5
- サブネット指定例:192.168.0.0/24
ディスカバリの実行
メニューバより Discover > Discoveries > List Discoveries の順で移動し、作成した「Discovery」のExecuteボタンを選択し、ディスカバリを実行します。
ディスカバリ実行後、Summaryのタブにて、Statusが「runnning」になり、ディスカバリ実行中になります。
ディスカバリ終了後、Statusが「complete」になります。
また、Logsのタブにてディスカバリ実行のログが確認できます。
インベントリ収集の確認
Open-AudITのホーム画面の「Devices」を選択し、インベントリ収集を行った対象のホストが存在し、情報が取得できていることを確認します。
インベントリ収集にて、対象ホストのOS情報、ハードウェア情報、ソフトウェア情報等を取得できていることを確認することができます。
デバイスの削除
不要になったデバイスは、対象のホストを選択して、「Delete」ボタンで削除することができます。
また、複数のホストを一括で削除する場合は以下の方法で削除することもできます。
Devices の画面にて、削除対象のホストにチェックを入れ、編集ボタンを選択します。
Statusの項目でプルダウンより「Deleted」を選択します。
メニューバより、Admin > Database > List Database Tables の順に移動し、「devices」を選択します。
「Device Status: deleted」の項目にて削除ボタンを選択します。
Open-AudITのホーム画面の「Devices」を選択し、対象のホストが削除されていることを確認します。
7.Open-AudITのカスタマイズ
Open-AudITは、カスタムフィールドや、インベントリ収集スクリプトを変更することにより、様々な情報を取得することができます。
LinuxOSのRPMパッケージのインストール日取得
本書では、LinuxOSのRPM情報のインストール日はデフォルトでは取得、WebUIへの表示が行えていないため表示するようにカスタマイズする手順を記載します。
デフォルトの設定では以下のようにSoftwareのインストール日が表示されていないため表示されるように修正を行います。
WebUI表示項目の修正
パス:/usr/local/open-audit/app/Views/
設定ファイル:devicesRead.php
# cd /usr/local/open-audit/app/Views/
# cp -p devicesRead.php devicesRead.php_bk
# vim devicesRead.php
以下を追記します。
2026行目にInstall Dateを追加します。
<th><?= __('Version') ?></th>
<th><?= __('Publisher') ?></th>
# Install Dateを追加
<th><?= __('Install Date') ?></th>
2051行目にInstall Dateを追加します。
<td><?= $row->version ?></td>
<td><?= $row->publisher ?></td>
# Install Dateを追加
<td><?= $row->install_date ?></td>
修正の差分は以下になります。
# diff devicesRead.php devicesRead.php_bk
2026d2025
< <th><?= __('Install Date') ?></th>
2051d2049
< <td><?= $row->install_date ?></td>
ファイル修正後、サービスを再起動します。
# systemctl restart httpd.service
サービス再開後、再度Softwareの項目にて、「Install Date」が表示されることを確認します。
インベントリ収集スクリプトの修正
LinuxのOSのインベントリ収集を行うスクリプト「audit_linux.sh」はデフォルトではインストール日を取得しないためスクリプトの修正を行います。
※本スクリプト修正後のサービス再起動は不要です。
パス:/usr/local/open-audit/other
設定ファイル:audit_linux.sh
# cd /usr/local/open-audit/other
# cp -p audit_linux.sh audit_linux.sh_bk
# vim audit_linux.sh
# cd /usr/local/open-audit/other
# cp -p audit_linux.sh audit_linux.sh_bk
# vim audit_linux.sh
以下を修正します。
2950行目をインストール日を取得するように修正します。
for package in $(rpm -qa --queryformat="%{NAME}\t%{VERSION}\t%{VERSION}-%{RELEASE}\t%{URL}\n"); do
↓
for package in $(rpm -qa --queryformat="%{NAME}|%{VERSION}|%{VERSION}-%{RELEASE}|%{URL}|%{INSTALLTIME:date}\n"); do
2951~2954行目を修正し、2955行目にinstall_dateを追記します。
※インストール日はスペースが含まれるため、awkからcutコマンドに変更します。
name=$(echo "$package" | awk '{print $1}')
version=$(echo "$package" | awk '{print $2}')
version_raw=$(echo "$package" | awk '{print $3}')
pkg_url=$(echo "$package" | awk '{print $4}')
↓
name=$(echo "$package" | cut -d'|' -f1)
version=$(echo "$package" | cut -d'|' -f2)
version_raw=$(echo "$package" | cut -d'|' -f3)
pkg_url=$(echo "$package" | cut -d'|' -f4)
install_date=$(echo "$package" | cut -d'|' -f5)
2960行目の以下に、install_dateをxmlファイルに書き込むように追記します。
echo " <install_date>$(escape_xml "$install_date")</install_date>" >> "$xml_file"
修正の差分は以下になります。
# diff audit_linux.sh audit_linux.sh_bk
2950,2955c2950,2954
< for package in $(rpm -qa --queryformat="%{NAME}|%{VERSION}|%{VERSION}-%{RELEASE}|%{URL}|%{INSTALLTIME:date}\n"); do
< name=$(echo "$package" | cut -d'|' -f1)
< version=$(echo "$package" | cut -d'|' -f2)
< version_raw=$(echo "$package" | cut -d'|' -f3)
< pkg_url=$(echo "$package" | cut -d'|' -f4)
< install_date=$(echo "$package" | cut -d'|' -f5)
---
> for package in $(rpm -qa --queryformat="%{NAME}\t%{VERSION}\t%{VERSION}-%{RELEASE}\t%{URL}\n"); do
> name=$(echo "$package" | awk '{print $1}')
> version=$(echo "$package" | awk '{print $2}')
> version_raw=$(echo "$package" | awk '{print $3}')
> pkg_url=$(echo "$package" | awk '{print $4}')
2961d2959
< echo " <install_date>$(escape_xml "$install_date")</install_date>" >> "$xml_file"
インストール日取得の動作確認
ファイル修正後、再度ディスカバリを実行し、インベントリ収集を行います。
ディスカバリ完了後、Softwareの項目にてインストール日が取得できていることを確認します。
カスタムフィールドを使用した情報取得
Open-AudITではカスタムフィールドを使用して様々な情報を取得することができます。
本書では、任意のディレクトリにインストールしたJAVAのバージョンを取得し、カスタムフィールドに取得した情報を入れる手順を記載します。
なお、本書ではJAVAは以下に予めインストール済みとします。
JAVAインストール先:/opt/sos-berlin.com/js7/java/jdk/bin/java
カスタムフィールドの作成
メニューバより Manage > Fields > Create Fields の順で移動し、必要情報を入力し、「Submit」を選択します。
Name:java_version_custom
Type:Varchar
デバイス情報の「Fields」にて作成したカスタムフィールドが表示されることを確認します。
インベントリ収集スクリプトの修正
LinuxのOSのインベントリ収集を行うスクリプト「audit_linux.sh」にJAVAのバージョンを取得し、カスタムフィールドに入れるように修正を行います。
※本スクリプト修正後のサービス再起動は不要です。
パス:/usr/local/open-audit/other
設定ファイル:audit_linux.sh
# cd /usr/local/open-audit/other/
# cp -p audit_linux.sh audit_linux.sh_bk2
# vim audit_linux.sh
2011行目に以下を追加します。
if [ -x "/opt/sos-berlin.com/js7/java/jdk/bin/java" ]; then
java_version_custom=$(/opt/sos-berlin.com/js7/java/jdk/bin/java -version 2>&1 | head -n 1 | cut -d '"' -f 2)
fi
1060目に取得したJAVAのバージョンをカスタムフィールドに入れる設定を追加します。
echo " <id>$(escape_xml "$system_id")</id>"
echo " <discovery_id>$(escape_xml "$discovery_id")</discovery_id>"
# JAVAのバージョンをxmlファイルに書き込むように追記
echo " <java_version_custom>$(escape_xml "$java_version_custom")</java_version_custom>"
echo " </sys>"
※xmlファイルに書き込む際のタグ「<java_version_custom>」は、Open-AudITのWebUIにて作成したFieldsと同じものを指定する必要があります。
また、カスタムフィールドは、「<sys>」 セクションの中に設定する必要があります。
差分は以下になります。
# diff audit_linux.sh audit_linux.sh_bk2
1011,1014d1010
< if [ -x "/opt/sos-berlin.com/js7/java/jdk/bin/java" ]; then
< java_version_custom=$(/opt/sos-berlin.com/js7/java/jdk/bin/java -version 2>&1 | head -n 1 | cut -d '"' -f 2)
< fi
<
1060d1055
< echo " <java_version_custom>$(escape_xml "$java_version_custom")</java_version_custom>"
カスタムフィールドを使用した情報取得の動作確認
ファイル修正後、再度ディスカバリを実行し、インベントリ収集を行います。
ディスカバリ完了後、 Fieldsの項目にて任意のディレクトリにインストールしたJAVAのバージョンが取得できていることを確認します。


























