ローカルネットワークスキャンの流れ
Kompira Sonar にてローカルネットワークのスキャンを行うと、接続された Ksocket にて以下のフローに従ってスキャンが行われます。
- スキャン候補 IP アドレスの取得
- 調査対象として考えられる IP アドレスの取得ステップ
- このステップで得られた IP アドレスが「スキャン候補 IP アドレス」として次のステップに利用される
- 対象として不適切な IP アドレスの除外
- 調査対象として不適切な IP アドレスの除外ステップ
- このステップで除外されなかった IP アドレスが「対象 IP アドレス」として次のステップに利用される
- 対象 IP アドレスの生存確認
- 現在ネットワーク上に存在していない IP アドレスの除外ステップ
- このステップで生存確認が取れた IP アドレスが Kompira Sonar に報告される
- このステップで生存確認が取れた IP アドレスが「生存 IP アドレス」として次のステップに利用される
- 生存 IP アドレスに対する新規 IP アドレスの検索
- SNMP/SSH/WinRM 等を用いて新規の IP アドレスを取得するステップ
- このステップで新たに発見された IP アドレスが「スキャン候補 IP アドレス」としてステップ 2. に適用される
- 「スキャン候補 IP アドレス」が見つかる間は最後のステップに移行せずステップ 2. から処理を繰り返す
- このステップで情報が得られた IP アドレスが「詳細情報取得可 IP アドレス」として最後のステップに利用される
- 詳細情報取得可 IP アドレスに対する詳細情報取得
- SNMP/SSH/WinRM 等を用いて詳細情報を取得するステップ
- このステップで得られた情報が Kompira Sonar に報告される
スキャン候補 IP アドレスの取得
Kompira Sonar にてスキャンを行うと、まず以下の情報から対象として考えられる IP アドレスが取得されます。
- ユーザーにより指定された
queries
の値 - Ksocket 動作マシンの ARP キャッシュ(取得可能な場合のみ)
- Ksocket 動作マシンのデフォルトゲートウェイ(取得可能な場合のみ)
また、Ksocket は上記情報の取得前にローカルネットワークに対して Broadcast Ping を送信します。
対象として不適切な IP アドレスの除外
「スキャン候補 IP アドレスの取得」にて取得した IP アドレスリストから、以下のルールに従って Ksocket がパケット送信を行わないほうが良い IP
アドレスを除外し「対象 IP アドレス」として確定します。
- IANA IPv4 Special-Purpose Address Registry
に従ったフィルタ- 非プライベートアドレスは除去
- 予約済みアドレスは除去
- ループバックアドレスは除去
- マルチキャストアドレスは除去
- ユーザーにより指定された許可・除外リストに従ったフィルタ
- 許可リストに無い IP は除外(
includes
) - 除外リストに有る IP は除外(
excludes
)
- 許可リストに無い IP は除外(
対象 IP アドレスの生存確認
「対象として不適切な IP アドレスの除外」にて確定された「対象 IP アドレス」に対する生存確認を行います。 生存確認は以下のプロトコルにより行われ、生存確認が取れた
IP が次の「生存 IP アドレスに対する新規 IP アドレスの検索」ステップに利用されます。
- ローカルネットワーク内の IP アドレスが対象の場合
- ARP リクエストに対する返答
- ローカルネットワーク外の IP アドレスが対象の場合
- ICMP echo リクエストに対する返答
- ICMP timestamp リクエストに対する返答
- Ksocket が Linux 上で動作している場合
- TCP の SYN リクエストに対する SYN/ACK もしくは RST/ACK 返答
- TCP の SYN/ACK リクエストに対する RST 返答
- Ksocket が Windows 上で動作している場合
- TCP connect の成否
TCP 接続試行対象ポート一覧
TCP を利用した生存確認では以下のポートに対して接続試行を行います。
ポート番号 | 説明 |
---|---|
21 | FTP |
22 | SSH |
23 | Telnet |
25 | SMTP |
53 | DNS |
80 | HTTP |
135 | MS-RPC |
139 | NetBIOS Session Service |
443 | HTTPS |
445 | SMB |
587 | SMTP |
5985 | WinRM |
生存 IP アドレスに対する新規 IP アドレスの検索
広域のネットワークを全て探索するために「生存 IP アドレス」に対して SSH/WinRM/SNMP を用いて、以下の情報取得を行います。
- ARP キャッシュテーブル
- NextHop
- Ethernet
上記にて取得できた IP アドレスの内、新規に発見できたものに対して「対象として不適切な IP アドレスの除外」から処理を繰り返します。 新規に発見できた
IP アドレスがなくなるまで繰り返されます。
詳細情報取得可 IP アドレスに対する詳細情報取得
「調査対象 IP アドレスの生存確認」にて生存確認が取れた IP アドレスに対して SSH/WinRM/SNMP を用いて詳細情報の取得を行います。
SNMP に応答する場合
標準 MIB より以下の情報を取得します。
- 機種名
- バージョン
- シリアル番号
SNMP で利用するコミュニティ名の指定方法等は Ksocket ドキュメントを参照してください。
SSH に応答する場合
SSH にてログインが成功した場合は以下の情報を取得します。
- OS 名称
- OS バージョン
- RPM/deb パッケージ一覧
また、対象機器の同一性判断のため
/var/tmp/cloud.fixpoint.jp/footprint_00000000-0000-0000-0000-000000000000
(0
はランダムな値で置換される)という空のファイルを作成します。
SSH のログイン情報の指定方法は Ksocket ドキュメントを参照してください。
WinRM に応答する場合
WinRM にてログインが成功した場合は以下の情報を取得します。
- OS 名称
- OS バージョン
- シリアル番号
- WMI パッケージ一覧
- 適用済み Windows アップデート一覧