アプリケーションが出て、ネットワーク上のすべてのデバイスを検出し、その情報をある種の資産管理システムに送り返す場合、それはどのように機能しますか?ある種のスクリプトを介してPCやサーバー上で実行されるEXEファイルやその他のプログラムがある場合は理解しています。しかし、デバイス上で実行されていないソフトウェアは、どのようにしてデバイスに関する詳細情報を見つけるのでしょうか。
ほとんどの「検出」ソフトウェアは、SNMPを使用してデバイスを検索します。このソフトウェアの一部は、さまざまな方法(バナーメッセージの識別、TCP/IPスタックのフィンガープリント、MAC OIDのルックアップ)を使用して「フィンガープリント」を実行し、より多くの情報を取得します。 「検出」に必要なセキュリティ資格情報を提供すると仮定すると、WMIを使用してWindowsマシンから情報を収集できます。
あなたが興味を持っている主なものは、最終的にはSNMPだと思います。ウィキペディアのリンクを検索できるので、ここには投稿しません。ギアのコミュニティ名をデフォルト(通常、読み取りコミュニティでは「公開」)に設定したままにすると、ソフトウェアがデバイスに関することを「学習」しているように見えるのは魔法のように思えるかもしれません。実際には、それは文書化されたインターフェースを照会しているだけです。
しかし、デバイス上で実行されていないソフトウェアは、どのようにしてデバイスに関する詳細情報を見つけるのでしょうか。
実際、SNMPはこれらのシステムで実行されています。これが、情報が監視ソフトウェアに渡される方法です。 SNMPは、デバイス情報共有の標準として認められています。監視プログラムは(検出中に)デバイスを調べてから、各デバイスのSNMPサービスへの接続を試みます。接続すると、監視ソフトウェアは、SET、GET、GETNEXTなどの小さなコマンドセットを使用して、デバイスのMIBを照会します。
グラフが監視アプリケーション上に構築されるのは、繰り返されるクエリを通じてです。監視アプリケーション(Zenoss、Munin、Nagios、SCOMなど)は、データベースとレポート構造を使用して、設定に基づいて追跡およびアラートを行います。
これを行うには多くの方法があります。以前の回答で言及したSNMPの他に、CDP(Ciscoネットワーク内)やLLDP(CDPに似ていますが、マルチベンダー。機器での広範なサポートはまだありません)などのプロトコルがあり、ネットワークを可能にします。デバイスに接続されているデバイスを検出するためのデバイス。SNMPやデバイスへのログインなどの方法でクエリを実行できます。
CDPを使用してSNMP検出を補完できる一例は、スイッチドネットワークです。スイッチのARPテーブルをたどってすべてのネイバーを見つけると、最近IPトラフィックを送信または受信したデバイスのみが検出されます。純粋なL2スイッチネットワークでは、スイッチ間IPトラフィックは(あるとしても)それほど多くないため、この表は不完全になります。同様に、スイッチのMACアドレステーブルをたどると、転送リンクを介してのみデバイスが検出されます。 CDPは、IPトラフィックがない場合でもネイバースイッチを検出し、ブロッキングステータスのポート上のネイバーも検出するため、すべてのリンクを検出できます。
また、nmapなどのツールがあり、アドレスの範囲をスイープし、受信した応答に対していくつかの診断を実行して、デバイスのオペレーティングシステムを推測できます。
ほとんどの方法は完全に自動化されているわけではなく、検出を開始するためにいくつかの「シード」ホストを定義する必要があります。