探索エンジンを利用したホストの登録方法
前提条件
探索エンジンの動作は、以下の点を前提としています。
- 探索エンジンのシステム要件に適合していること
-
探索エンジンをインストールするホストでdockerサービスが正常に動作していること
もしインストールしたい環境にdockerサービスがセットアップされていない場合、こちら(Red Hat Enterprise Linux及び互換OS, Ubuntu, Debian)をご参照下さい。
なお、探索エンジンはSIDfm VMサーバと同じホスト上にインストールすることも可能です。 -
探索エンジンのdockerコンテナ内から、VMサーバ及び指定したIPアドレスへアクセスが可能なこと。
ホストもしくは経路上のファイアウオールやルータ等でdockerコンテナ内から対象のIPアドレスへのアクセスが遮断されている場合がありますので、ファイアウォールやルータの設定をご確認下さい。
また、探索エンジンからVMサーバにデータを送信するため、探索エンジンからVMサーバへのアクセスが可能であることも条件となります。
dockerコンテナの通信はdocker0インタフェース経由で送信されます。
探索エンジンからVMサーバへのアクセスは、httpもしくはhttpsで、かつ、探索エンジンからVMサーバへの一方方向の通信になります。 - 探索エンジンで設定したssh認証設定で、指定したIPアドレスのホストにsshでアクセスし、そのユーザ権限で/etc/os-releaseの読み込み、必要なコマンド(*)が実行可能なこと。条件を満たしていれば、root権限を持つユーザである必要はありません。
(*) cat, uname, hostname, sort, パッケージ情報取得コマンド(OSに応じてrpm, dpkg/dpkg-queryのいずれか)
探索APIキー設定
探索エンジンからVMサーバにアクセスするために必要な探索APIキーの登録を行います。
探索APIキーの登録には、カスタムカテゴリが少なくとも1つ登録されている必要があります。
-
SIDfmVM管理者もしくはSIDfmVM報告者の権限を持つユーザでVMサーバにログインします。
SIDfmVM報告者の場合、自分の属するカスタムカテゴリの探索APIキーのみ閲覧・操作可能です。 -
メニューの「探索APIキー設定」を選択します。
-
「新規登録」ボタンを押下し、APIキー名とカスタムカテゴリを入力した後に「登録」ボタンを押下します。
APIキー名は、VMサーバの画面上で識別するためのみに使用されます。
カスタムカテゴリは必ず指定する必要があります。
このカテゴリは、探索エンジン経由でのホスト登録の際に、登録するホストのカスタムカテゴリとして使用されますので、設定の際にはご注意下さい。 -
「APIキー登録」ボタンを押下します。確認のダイアログが出力されますので、「OK」ボタンを押下すると探索APIキーが生成されます。
APIキーの文字列の右側に出力されるアイコンを押下すると、クリップボードにAPIキーの文字列がコピーされます。
ここで生成したAPIキーは、探索エンジンのセットアップで利用しますので保存しておきます。
-
以上で、探索APIキー設定は完了です。引き続いて、探索エンジンのセットアップに進みます。
探索エンジンのセットアップ
探索エンジンをインストールを行います。
前提条件について、予めご確認の上作業を実施下さい。
-
ソフトウェアダウンロードの「エージェントその他」から、探索エンジンのインストールファイルをダウンロードします。
契約約款、使用許諾についてご確認・ご同意頂いた上でチェックを入れ、「ダウンロードページ」に遷移します。 -
「探索エンジン」で最も新しいバージョンのソフトウェア、sha256sumファイルをダウンロードします。
-
インストールディレクトリを作成します。
なお、以降の操作手順はrootユーザでの操作を想定しております。# mkdir -p /var/lib/sidfm/sidfmpe
-
2.でダウンロードしたファイルを/var/lib/sidfmに転送します。
-
アーカイブファイルを展開します。
# cd /var/lib/sidfm
# tar xvzf sidfmpe-1.0.0.tar.gz -C /var/lib/sidfmpe/
-
探索エンジンでデータを保持するためのボリュームを用意します。
探索エンジンで使用するdockerのボリューム名は sidfmpe です。
この名前のdockerボリュームは削除されますので、もし同名のボリュームを利用されている場合は、お手数ですが名前の変更を行う等のご対応をお願いします。# bash scripts/init.sh
なお、初回の実行時は、存在しないボリュームの削除を行おうとするため以下のメッセージが出力されますが、無視して構いません。
Error: No such volume: sidfmpe
-
SIDfm VMサーバが自己署名証明書でHTTPS化されている場合、6.で作成したボリュームに証明書(vm-server.crtファイル)をコピーする必要があります。
自己署名証明書のインストールで作成したvm-server.crtファイルを作業中のホストへ転送した上で、以下のコマンドを実行してください。# bash scripts/certcp.sh vm-server.crt
なお、ボリュームへのコピーの際に、標準ではdummyという名前のdockerコンテナの作成・削除を行います。
もし既にdummyという名前のdockerコンテナが存在する場合、以下のように第2引数に存在しないdockerコンテナ名を指定して実行下さい。
なお、作成したコンテナはコマンドの実行後、自動的に削除されます。# bash scripts/certcp.sh vm-server.crt dummy2
-
設定ファイルのテンプレートを選択します。
利用するSSHの認証方式の違いで3つのテンプレートがありますので、いずれかを選択下さい。
- パスワード認証
sidfmpe_conf.password.env - 公開鍵認証(パスフレーズ有)
sidfmpe_conf.passphrase.env - 公開鍵認証(パスフレーズ無)
sidfmpe_conf.key.env
認証方法は、探索エンジン毎に1つのみ指定可能のため、ご注意下さい。
以下は公開鍵認証(パスフレーズ有)を選択した場合のコマンド入力例です。# cp conf/sidfmpe_conf.passphrase.env conf/sidfmpe_conf.env
- パスワード認証
-
8.で公開鍵認証を選択した場合、6.で作成したボリュームへSSHプライベート鍵をコピーする必要があります。
SSHプライベート鍵がprivate.pemの場合、以下のようにコマンドを実行してください。# bash scripts/keycp.sh private.pem
なお、ボリュームへのコピーの際に、標準ではdummyという名前のdockerコンテナの作成・削除を行います。
もし既にdummyという名前のdockerコンテナが存在する場合、以下のように第2引数に存在しないdockerコンテナ名を指定して実行下さい。
なお、作成したコンテナはコマンドの実行後、自動的に削除されます。# bash scripts/keycp.sh private.pem dummy2
-
8.でコピーした設定ファイルの編集を行います。
必須の設定項目は以下の通りです。設定名称 値の例 / 説明 SIDFM_VMPE_RUNONCE 値の例: 0
探索エンジンの動作モードを指定します。
0(デフォルト)の場合、起動した探索エンジンのコンテナはそのまま残存し、定期的に探索を実行します。
1の場合、探索エンジンのコンテナは起動して1度探索を実行した後、コンテナを終了します。
12.の説明もご参照下さい。SIDFM_VMPE_SSH_IP_RANGE 値の例: 172.17.0.2 172.17.0.3-42 172.17.0.1 172.31.49.90
探索対象のIPアドレスのリストを指定します。
指定方法はnmapコマンドのIPアドレス指定をご参照下さい。
なお、現在の探索エンジンではIPv4アドレスのみ対応しております。
探索エンジンから指定したIPアドレスに対して、ポートスキャンが実施されますので、情報セキュリティ部門やネットワーク管理者に予め情報を共有することを推奨します。SIDFM_TARGET_USER 値の例: ubuntu
sshで接続する際のログイン名を指定します。
rootユーザである必要はありませんが、以下の条件を満たすユーザである必要があります。
- 探索エンジンをインストールしたホストからSSHでアクセス可能であること
- /etc/os-release ファイルを読み込む権限があること
- パッケージ管理コマンドで、パッケージの一覧情報を取得できること
Red Hat Enterprise Linux系であればrpmコマンド、Debian系であればdpkg, dpkg-queryコマンドが実行可能である必要があります - uname, sort, cat, hostnameコマンドの実行が可能であること
SIDFM_VMPE_SSH_SCAN_PORTS 値の例: 22,2222
SSHサービスとして使用されているポート番号を指定します。
複数指定する場合は、コンマで区切って指定してください。
指定したサービスポートに対してポートスキャンが実施されます。SIDFM_VMPE_SRV_ENDPOINT 値の例: https://dummy.example.com/redmine/sidfm/probe/api/
SIDfm VMサーバの、探索エンジン用のAPIエンドポイントを指定します。
SIDfm VMサーバのダッシュボードのURLが https://dummy.example.com/redmine/sidfm/index_r の場合、https://dummy.example.com/redmine/sidfm/probe/api/ をご指定下さい。
なお、探索エンジンからSIDfm VMサーバへ、本設定のURLへアクセスが可能である必要がありますので、ご注意下さい。SIDFM_VMPE_SRV_APIKEY 値の例: 8b9283deb5a8fb22bd85a47eebc781a69def32217e297754446f776f9591abc9
探索APIキー設定の4.で取得したAPIキーの値を入力します。8.でパスワード認証を選択した場合 SIDFM_VMPE_SSH_PASSWORD 値の例: pwdPWD0001
パスワード認証で使用するパスワードを指定します。
なお、以下の記号については使用不可です。
" ダブルクォート \ バッククォート(円) % パーセント 空白 8.で公開鍵認証(パスフレーズ有)を選択した場合 SIDFM_VMPE_SSH_PASSPHRASE 値の例: passphrasePassphrase00000
公開鍵認証で使用するパスフレーズを指定します。
なお、以下の記号については使用不可です。
" ダブルクォート \ バッククォート(円) % パーセント 空白 その他の設定項目は以下の通りです。
設定名称 値の例 / 説明 SIDFM_VMPE_HOUR 値の例: 0,12
SIDFM_VMPE_RUNONCE=0の場合、指定した時間に定期的に探索が実行されます。
例の設定では、0時と12時に実行されます。SIDFM_VMPE_PARALLELS 値の例: 6
ポートスキャン等の最大並列実行数を指定します。
探索速度の調整が可能ですが、大きく設定した場合、ネットワークやメモリへの負荷が増大しますので、基本的にそのままご利用頂くことを推奨します。SIDFM_VMPE_SSH_EXCLUDE_IPS 値の例: 127.0.0.0,127.0.0.255
SIDFM_VMPE_SSH_IP_RANGEから除外するIPアドレスを列挙します。
除外したIPアドレスについては、ポートスキャンや探索の対象から除外されます。SIDFM_VMPE_SSH_AUTHTYPE 値の例: pubkey_noph
認証方式を選択します。以下の3種が指定可能です。
- passowrd
パスワード認証 - pubkey_ph
公開鍵認証(パスフレーズ有) - pubkey_noph
公開鍵認証(パスフレーズ無)
SIDFM_VMPE_SSH_EXP_TIMEOUT 値の例: 5
SSH接続で情報を取得する際のタイムアウトを指定します。単位は秒です。SIDFM_VMPE_SSH_CONNECT_TIMEOUT 値の例: 10
SSH接続の接続時のタイムアウトを指定します。単位は秒です。SIDFM_VMPE_SSH_ALIVE_INTERVAL 値の例: 15
SSHで接続中に、接続が有効であることをチェックするパケットを送信する間隔を指定します。単位は秒です。SIDFM_VMPE_SSH_ALIVE_COUNT_MAX 値の例: 3
SIDFM_VMPE_SSH_ALIVE_INTERVAL の間隔でパケットを送信し、本設定の回数応答が返らなかった場合に、切断とみなします。単位は回数です。SIDFM_VMPE_SRV_PROXY_ENABLE
SIDFM_VMPE_SRV_PROXY_HTTP_HOST
SIDFM_VMPE_SRV_PROXY_HTTP_PORT
SIDFM_VMPE_SRV_PROXY_HTTP_USER
SIDFM_VMPE_SRV_PROXY_HTTP_PASS
SIDFM_VMPE_SRV_PROXY_HTTPS_HOST
SIDFM_VMPE_SRV_PROXY_HTTPS_PORT
SIDFM_VMPE_SRV_PROXY_HTTPS_USER
SIDFM_VMPE_SRV_PROXY_HTTPS_PASS探索エンジンからSIDfm VMサーバへのアクセスにHTTP Proxyサーバが必要な場合に設定します。
- Proxy設定が必要無い場合
- SIDFM_VMPE_SRV_PROXY_ENABLE=
- http:, https:共にProxyサーバとしてxxx.example.com:8080 を設定する場合
-
SIDFM_VMPE_SRV_PROXY_ENABLE=1
SIDFM_VMPE_SRV_PROXY_HTTP_HOST=xxx.example.com
SIDFM_VMPE_SRV_PROXY_HTTP_PORT=8080
SIDFM_VMPE_SRV_PROXY_HTTPS_HOST=xxx.example.com
SIDFM_VMPE_SRV_PROXY_HTTPS_PORT=8080 - BASIC認証のあるProxyサーバを設定する場合
-
SIDFM_VMPE_SRV_PROXY_ENABLE=1
SIDFM_VMPE_SRV_PROXY_HTTP_HOST=xxx.example.com
SIDFM_VMPE_SRV_PROXY_HTTP_PORT=8080
SIDFM_VMPE_SRV_PROXY_HTTP_USER=user1
SIDFM_VMPE_SRV_PROXY_HTTP_PASS=password
SIDFM_VMPE_SRV_PROXY_HTTPS_HOST=xxx.example.com
SIDFM_VMPE_SRV_PROXY_HTTPS_PORT=8080
SIDFM_VMPE_SRV_PROXY_HTTP_USER=user1
SIDFM_VMPE_SRV_PROXY_HTTP_PASS=password
SIDFM_VMPE_DIAG 未使用
※ 今後のバージョンアップで使用する予定です。 -
探索エンジンのdockerイメージの読み込みを行います。
docker tagの第1引数のsidfmpe:1.0ですが、1.0の部分はバージョンで変わりますので、利用される探索エンジンのバージョンで読み替えて頂きますようお願いします。# gzip -dc sidfmpe-image-1.0.tar.gz | docker load
# docker tag sidfmpe:1.0 sidfmpe:latest
-
探索エンジンを起動します。
起動コマンドは以下の通りです。# bash scripts/run.sh
10.の設定で、SIDFM_VMPE_RUNONCE=1と設定していた場合、1回のみ実行して終了します。
設定を変更せず再度実行したい場合は、以下のコマンドを実行します。# docker start sidfmpe
設定変更が必要な場合は、以下のようにコンテナを一度削除してから、前述の起動コマンドを実行してください。
# docker stop sidfmpe
# docker rm sidfmpe
# bash scripts/run.sh
探索エンジンの動作結果は、以下のコマンドで確認できます。
# docker logs sidfmpe
xxxx/xx/xx xx:xx:xx sidfmpe: finished のように出力されれば、動作終了しています。
10.の設定で、SIDFM_VMPE_RUNONCE=0と設定していた場合、探索エンジンを起動するとそのままコンテナは起動状態となり、指定した間隔で定期的に探索が実行されます。
動作を停止する際には、コンテナを停止してください。# docker stop sidfmpe
動作を再開する場合は、コンテナを起動してください。
# docker start sidfmpe
設定変更が必要な場合は、SIDFM_VMPE_RUNONCE=1の場合と同様にコンテナを作成し直します。
# docker stop sidfmpe
# docker rm sidfmpe
# bash scripts/run.sh
探索エンジンで取得したデータを利用したホスト登録
-
SIDfmVM管理者もしくはSIDfmVM報告者の権限を持つユーザでVMサーバにログインします。
SIDfmVM報告者の場合、自分の属するカスタムカテゴリの探索APIキーが設定された探索エンジンの探索結果のみ操作可能なため、探索APIキーで設定した探索APIキーのカスタムカテゴリにアクセス権限を持つユーザでログインしてください。 -
左袖メニューの「対策済ホスト設定」を押下して、探索APIキー選択で探索APIキーで設定した探索APIキーを選択します。
-
「情報取得」の「成功」を選択します。
ホスト登録もしくはホスト紐づけが可能なIPアドレスの一覧が出力されます。
なお、情報取得、ポート確認、ping確認は、それぞれ以下のような意味となっています。情報取得 SSHでの情報取得の成否です。
成功(もしくは)したホスト登録・ホスト紐づけが可能です。ポート確認 SSHのポートの開閉状態です。 ping確認 ping応答の可否です。 成功 以前は失敗していたが、直近では成功している。 失敗 以前は成功していたが、直近では失敗している。 -
[ホスト登録]
1つの探索ホストについて、ホスト登録を行う場合は「ホスト登録」ボタンを押下して、ホスト名を入力し「登録」ボタンを押下します。
ホスト名入力欄の下の2つのボタンは、それぞれホスト名とIPアドレスをホスト名の入力欄に設定するものです。
ホスト名かIPアドレスを元にしたホスト名で登録する場合にご利用下さい。
なお、カスタムカテゴリは探索APIキーのカスタムカテゴリと同一のものとなります。
また、既に同一のホスト名のホストが存在する場合は登録に失敗します。
探索エンジンで取得した情報(OS、パッケージ情報)以外については、ホスト設定画面で設定の変更をお願いします。
-
[ホスト紐づけ]
探索ホストについて、既に登録済のホストと紐づけを行い、探索エンジンの探索で得られた情報を自動的に紐づけしたホストに反映することが可能です。
「ホスト紐づけ」ボタンを押下して、ホスト名の先頭を入力するとマッチするホストの一覧が出力されるため、一つのホストを選択し、「登録」ボタンを押下すると、探索ホストと既存のホストの紐づけが行われます。
なお、既存のホストのOS、パッケージ情報は上書きされますので、ご注意下さい。
紐づけの解除を行う際には、「紐づけ解除」ボタンか「一括紐づけ解除」ボタンをご利用下さい。
紐づけの解除を行うと、以降は探索ホストの情報が更新されても、ホスト情報に反映されなくなります。
-
[一括ホスト登録]
複数の探索ホストを一括でホスト登録する場合は、対象としたい探索ホストにチェックを入れて「一括ホスト登録」ボタンを押下し、ホスト名を自動設定するための項目を適宜入力して「登録」ボタンを押下します。
ホスト名は、各探索ホスト毎に、以下の形で生成されます。
<ホスト名の前に付与する文字列>+<ホスト名として使用する文字列>+<ホスト名の後ろの付与する文字列>
一括登録では、チェックを入れた全てのホストで既存のホストとホスト名に重複があると登録に失敗します。
なお、カスタムカテゴリは探索APIキーのカスタムカテゴリと同一のものとなります。
-
[一括紐づけ削除]
複数の探索ホストについて、ホストとの紐づけを削除したい場合は、対象としたい探索ホストにチェックを入れて「一括紐づけ削除」ボタンを押下し、紐づけ削除対象のホストを確認した上で「実行」ボタンを押下します。
紐づけされている探索ホストのみが対象で、それ以外の探索ホストは無視されます。
紐づけの解除を行うと、以降は探索ホストの情報が更新されても、ホスト情報に反映されなくなります。