Pandora: Documentation ja: Recon Server

From Pandora FMS Wiki
Jump to: navigation, search

Pandora FMS ドキュメント一覧に戻る

1 自動検出(Recon)サーバによるネットワーク検出

1.1 概要

Pandora FMS の自動検出(Recon)サーバは、バージョン 1.3 にて初めて実装されました。そこからいくつかの更新および拡張が行われてきています。

自動検出(Recon)サーバは、新たなシステムを見つけるためのユーザ定義のタスクにより ICMP (Ping) を用いてネットワークを探索するように作成されています。

このコンポーネントは、システムを Pandora FMS のエージェントとして追跡し、集約します。 「プラグインテンプレート」を使用すると、自動的に検出された新しいエージェントにモジュールが割り当てられ、新しいシステムで一連のネットワークモジュールが動作し、監視が自動的に開始されます。

追加されるエージェントが、Pandora FMS にすでに登録されているエージェントと別のものか区別するために、IP アドレスが利用されるという点に注意してください。なぜなら、Pandora FMS 1.3 以降では、エージェントが複数の IP アドレスを持つことができるためです。

自動検出サーバは、'Xprobe2' (インストールされている場合)とオプションでオープンポートの検出NMAP を利用)を使用して、特定のオペレーティングシステムの検出を行うことができます。(例えば、'ポート 23 を開いている Solaris' や 'ポート 139 および 445 を開いている Windows'など)

また、自動検出サーバは、指定されたネットワークにあるコンピュータのトポロジを検出して、異なるエージェント間の関係を作成することもできます。接続は親子関係(コンセントレータ - デバイス)として表されます。 このリストは、認識タスクが実行されるたびに更新され、検出されたデバイス接続のステータスを最新の状態に保ちます。

1.2 自動検出タスク

Template warning.png

自動検出タスクは、ネットワークセキュリティシステムによって攻撃の試みとして検出されうる多くの技術を使用します。 誤検知を避けるために、Pandora FMS サーバをセキュリティシステムの例外に追加してください。

 


自動検出タスクは、サーバ(Servers) -> 自動検出タスク(Recon task) にあります。



Primero.jpg



画面上で 作成(Create) をクリックすることにより新たなタスクを作成できます。また、定義済のタスク名をクリックすることにより、それを編集することができます。



Segundo.jpg



注意:新しいタスクを定義する前に、システム内で 自動検出サーバ が開始されている必要があります。 新しいエージェントをネットワークサーバーに自動的に割り当てるには、ネットワークサーバ も起動する必要があります。

編集もしくは新たな自動検出タスクを作成するときは、タスクが正しく動作するように必要なフィールドに入力する必要があります。

タスク名(Task name)

検出タスクの名前です。異なる設定の複数のタスクがある場合に、タスクを区別するために使います。

自動検出サーバ(Recon server)

タスクに割り当てる自動検出サーバです。もし、複数の自動検出サーバがある場合、どのサーバで自動検出処理を実行するかを選択します。

モード(Mode)

"ネットワークスキャン9Network Scanning)" および "スクリプトカスタム(Script Custom)" のいずれかのタスクモードを選択します。前者のモードは、従来からのネットワークの検出タスクで、後者はカスタムスクリプトによるタスクです。

ネットワーク(Network)

検出する対象のネットワークを設定します。/ でネットマスクのビット数を表したフォーマットで入力します。例えば、192.168.1.0/24 を指定すると、192.168.1.0 から 192.168.1.255 までのクラス C のアドレスを表します。

間隔(Interval)

検出処理を行う間隔です。自動検出処理では、それぞれのアドレスに ping を送信するため、短い間隔は指定しないでください。自動検出対象のネットワークが非常に大きいく (クラス A など)、間隔が短い (6時間) と、Pandora FMS は常にネットワークに ping を送信し続けることになり、必要以上に負荷がかかります。

Template warning.png

自動検出タスクが成功すると既存のエージェントとモジュールが更新されます。更新してほしくない場合は、間隔を 手動 に設定し自動検出タスクを一回のみ実行してください。

 


モジュールテンプレート(Module template)

検出したシステムに適用するプラグインテンプレートです。パラメータ (OS、ポート番号) にマッチするシステムを検出したとき、そのエージェントを登録すると共にプラグインテンプレートに定義されたモジュールを割り当てます。

OS

認識するオペレーティングシステムです。任意(Any)ではなく一つを選択した場合は、そのオペレーティングシステムのみを追加します。静的なパターンで推測を行っているため、ネットワークフィルタやセキュリティソフトウエアの介在、システムのバージョンの改ざん等の条件によっては Pandora FMS がシステムの検出に失敗することもある事に注意してください。オペレーティングシステムの検出を出来るようにするためには、Xprobe2 がインストールされている必要があります。

ポート番号(Ports)

特定のポート番号もしくはポート番号の範囲を、22,23,21,80-90,443,8080 といった形式で記述します。このフィールドを設定すると、ここに指定したポートの一つ以上が開いているホストのみを検出し追加します。検出しても指定したポートが一つも開いていないホストは追加されません。これにより、OS 等の種類によって検出するシステムをフィルタすることができます。例えば、ポート 23 と 57 が開いていれば、ルータである等。

グループ(Group)

検出したシステムを所属させるグループを指定します。必ずいずれか一つのシステムに属する必要があります。未分類のエージェントを所属させるグループがあるのであれば、それを選択するのが良いでしょう。

インシデント(Incident)

新たなシステムを検出したときにインシデントを作成するかどうかを指定します。検出したシステムごとではなく、新たなシステムの検出をすべてまとめた形でタスクごとに 1つのインシデントを作成します。あらかじめ定義されたグループに自動作成されます。

SNMPデフォルトコミュニティ<SNMP Default community)

機器の検出に利用するデフォルトの SNMP コミュニティです。

SNMP バージョン(SNMP version)

自動検出タスクを実行するときの SNMP バージョンを選択することができます。v3 を選択した場合は、次のパラメータを入力する必要があります。

  • 認証ユーザ(Authenticate User): 自動検出タスクで利用されるユーザです。
  • 認証パスワード(Authenticate Password): 自動検出タスクで利用されるパスワードです。
  • 暗号化手法(Privacy method): DES または AES です。
  • 暗号化パスワード(Privacy pass): トラップ認証に使われるパスワードです。
  • 認証手法(Authentication method): MD5 または SHA です。
  • セキュリティレベル(Security level): 認証無し・権限なし(without authentication and non-private)、認証あり・権限なし(with authentication and non-private)、認証あり・権限あり(with authentication and private)のいずれかです。

コメント(Comments)

自動検出タスクに関するコメントです。

OS検出(OS detection)

このオプションを選択すると、OS の検出が行われます。

名前解決(Name resolution)

このオプションを選択すると、エージェントは IP アドレスではなく、設定されていればホスト名で登録されます。

親の検出(Parent detection)

このオプションを選択すると、コンピュータが他に接続されており、その子として作成するかどうかを検出します。

親の再帰(Parent recursion)

検出後にエージェントの親子関係を見る最大の再帰回数を示します。

Tercero.jpg

VLAN 有効化(VLAN enabled)

VLAN 検出を有効化します。



Ropts.png



設定が完了したら、既存の設定を編集している場合は "更新(Update)" を、新規作成の場合は "作成(Create)" をクリックします。

新たなホストを検出してテンプレートを適用するには、ネットワークが大きい場合数分から数時間かかりますが、ネットワーク全体の検出を行いモニタを開始する操作が、若干のステップで実現できます。

自動検出タスクの定義が完了したら、ネットワークからの情報取得を開始します。それには、サーバ(Servers) -> サーバ管理(Manage servers) へ行きます。



Cuarto.jpg



サーバの状態を見るために、画面上部の "全システム(All systems) の部分をクリックしても同じ画面に行くことができます。



Quinto.jpg



この画面では、Pandora FMS サーバの状態を表示します。



Sexto.jpg



コンソールで、自動検出サーバ設定詳細 を確認しそれをクリックします。次のように、自動検出タスクの状態を確認することができます。

Septimo.jpg

自動検出タスクを開始するにはコンソールの右側のボタンをクリックする必要があります。実行すると、完了するまでに同じ時間がかかります。

1.2.1 ネットワークトポロジー

自動検出は、ホストを検出するだけでなく、それらがどのように接続されているかも検出することができます。つまり、Pandora FMS は、ネットワークがいくつあるかに関わらず、モニタ対象とネットワーク構成を検出できます。

以下は、我々の開発サーバの一つで動作している Pandora FMS でモニタしている約 1000のシステムのスナップショットです。



Cool network map sample.jpg



これを上手に成功させるためには、レイヤに分けてモニタリングする計画を立てる必要があります。まずは最初に Pandora サーバに近い場所を検出します。次にその先のシステムを検出すると、すでに認識しているノードに関連付けされます。

これを実施するためには、最初にサーバから近いネットワークに対するタスクを作成し、あとからその先のタスクを作成します。基本となるシステムを検出したら、システムに合ったネットワークテンプレートを割り当て、(アプリケーションや OS により) アーキテクチャやシステムの詳細確認を含んだ自動検出タスクを作成します。ウェブサーバのテンプレートであれば、拡張 TCP チェックによるサーバの状態確認、応答時間計測や、SSH や FTP などのサービスポートモニタリングなどです。WMI のチェックや適したプラグインを定義している場合は、それらも追加できます。

検出されたシステムに合っていないモジュールを含むテンプレートを適用した場合、データを取得できないため "未実行" として残ります。(対象として表示されません)

Pandora のメンテナンスパラメータを正しく設定していれば、日次メンテナンススクリプト(pandora_db)により自動的に削除されます。

1.2.2 利用例

4 つのクラス C のネットワークにサーバと、1つのクラス B のネットワークにワークステーションがあり、これらの 5つのネットワークのシステムに対してプラグインテンプレートを定義するとします。

例:

  • テンプレート番号 #1: Windows サーバ用で、5つのモジュールがあります。

SNMP にて Windows サーバの CPU 使用率の取得
SNMP にて Windows サーバのメモリ空き容量の取得
SNMP にてネットワークインタフェースの入力トラフィックの取得
SNMP にてネットワークインタフェースの出力トラフィックの取得
ICMP のチェックを実施

  • テンプレート番号 #2:UNIX の HTTP サーバをチェックします。

ICMP のチェックを実施
80番ポートに対する TCP 接続および HTTP コマンド応答を確認
22番ポートに対する SSH 接続を確認
SNMP にて CPU 使用率を取得
SNMP にてネットワークインタフェースの入力トラフィックの取得
SNMP にてネットワークインタフェースの出力トラフィックの取得

  • テンプレート番号 #3: UNIX の Oracle サーバをチェックします。

ICMP のチェックを実施
特定ポートの TCP 接続および、Oracle のコマンド応答を確認
特定のポートが開いているか確認
SNMP にて CPU 使用率を取得
NMP にてメモリの空き容量を取得

  • テンプレート番号 #4: Windows の CIFS サーバをチェックします。

ICMP のチェックを実施
SNMP にて CPU の使用率を取得
SNMP にてメモリの空き容量を取得
CIFS が稼働しているか確認するための、いくつかの TCP チェックを実施
SNMP にてネットワークインタフェースの入力トラフィックの取得
SNMP にてネットワークインタフェースの出力トラフィックの取得

  • テンプレート番号 #5: 全ワークステーションの生存をチェックします。

ICMP のチェックを実施
21,22,80,8080,5900 や P2P などの特定のポートが forbidden で閉じているかを確認

5つのタスクを作成します。4種類のサーバについては、それぞれのネットワークもしくはサブネットを割り当てます。それぞれのタスクには、異なるグループとネットワークプロフィールを割り当てます。最後のワークステーションについては、異なるグループでクラスB のネットワークを指定します。ワークステーションに関しては短い検出間隔 (半日や一日) に設定し、サーバに関しては長め (2,3日もしくは一週間) に設定します。

サーバが動作しているかどうかをチェックするには、ICMP を使います。エージェントが作成されたら、エージェント名としてホスト名を使うように IP アドレスの名前解決を試みます。

1.3 自動検出スクリプト

1.3.1 概要

新しい "自動検出スクリプト" 機能により、従来の自動検出サーバのネットワーク監視や自動検出よりはるかに柔軟な方法で探査を行うことができます。 自動検出スクリプトは、ネットワークやエージェントのプラグインなど、完全に特定のターゲットに合わせて個別に開発されます。 各自動検出スクリプトはユニークで、目的は 1つだけです。

Info.png

ネットワーク探査処理は Pandora 7 で改善されました。並列処理、SNMP 分析、VLAN 検出など。

 


システム内の情報を "検出" し、自動的にモニタリング (ネットワーク、プラグイン、WMI...) するということが基本的な考え方です。Oracle データベースのインスタンス、VMware VirtualCenter で管理されている新たな仮想マシンや、WebLogic アプリケーションサーバの新たなインスタンスの検出など、自動処理を完全にカスタマイズできます。実行したい処理を行うスクリプトやアプリケーションは開発でき、自動検出サーバを通してスケジュール実行することができます。

すべての自動検出スクリプトはカスタマイズされており、1つの技術のみを対象として非常に特定性が高くなっています。 私たちは完全にオープンソースのものを開発しました。それは 'SnmpDevices' というものです。このスクリプトは、/usr/share/pandora_server/util/plugin_reconserver/snmpdevices.pl にあります。

このシステムでは、あらかじめ定義された IP の範囲をチェックし、それに応答する各 SNMP システムのエージェントを作成することができます(ここでは SNMP コミュニティが必要です)。 また、取得した結果に応じて、(SNMP 経由で)いくつかのネットワークモジュールを自動的に作成します。認識された各ホストに対して、次の4つの SNMP モジュールを作成します。

  • SysUptime: システムの Uptime (システムが起動してからの秒数)
  • SysName: システムの名前
  • Local InReceives: 一秒間に受信したバイト数
  • Local OutRequests: 一秒間に送信したバイト数

そして、認識された各インタフェース(インタフェース名は自動的に検出します)では、ホスト内に 3つの追加の SNMP モジュールが作成されます。

  • Status: 状態 (稼働中かそうでないか)
  • Inbound Bps: 一秒間にインタフェースが受信したバイト数
  • Outbound Bps: 一秒間にインタフェースが受信したバイト数

1.3.2 利用例

このスクリプトは、Pandora FMS コンソールから、もしくは、シェルからの二通りで利用できます。

1.3.2.1 Pandora FMS コンソールでの利用

自動検出スクリプトを利用するには、まずは Pandora コンソールから サーバ管理(Manage servers) -> 自動検出スクリプト管理(Manage recon scripts) へ行きます。ここで、利用したいスクリプトをフルパスで一つ一つ追加します。

Recon script1.png

サンプルスクリプトを追加したら、引き続き自動検出タスクを作成します。自動検出タスクの作成フォームで "カスタムスクリプト(Custom script)" モードを選択し、実行サーバ、実行間隔、検出したエージェントを所属させるグループ、および、インシデントを作成するかどうかといった、通常の自動検出タスクと共通のパラメータを設定します。

それ以降は、利用したいスクリプト (この例では Snmpdevices) が要求する独自のパラメータを設定します。スクリプトフィールドの内容はスクリプトに渡されます。(4つまで)

作成済みのタスクの ID、グループの割り当て、インシデントを作成するかどうかのパラメータは、スクリプトに自動的に渡されます。さらに 4つのカスタマイズ可能なスクリプトフィールドがあります。この例では、2つ使っており、1つ目に対象のネットワーク、2つ目に SNMP コミュニティーを設定しています。

Recon script2.png 800px

2つのスクリプトフィールドを入力し、オプションでコメントを書くと、Snmpdevices のテストスクリプトを使った自動検出タスクが作成されます。自動検出が開始され、エージェントおよび前述のモジュールが作成されます。

1.3.2.2 シェルでの利用

通常はシェルから起動する必要はありません。このツールは Pandora FMS コンソールから利用することをお勧めします。

利用書式:

./snmpdevices.pl <task_id> <group_id> <create_incident_flag> <netmask> <snmp_community> [<-a>]

利用例:

./snmpdevices.pl 3 8 0 192.168.100.0/24 community2010

  • 自動検出タスクの ID に 3を割り当て。
  • 作成されるエージェントにグループ ID 8 (Database) を割り当て。
  • インシデントの作成を、3つ目のパラメータを 0 にすることにより無効化。
  • 192.168.100.0/24 のネットワーク、つまり、192.168.100.1 から 192.168.100.254 までが対象。
  • "community2000" という SNMP コミュニティでチェック
  • 最後のパラメータに -a を指定すると、ダウンしているかどうかに関わらず全インタフェースの状態モジュールを作成します。(デフォルトでは、スクリプトは状態を確認し、アクティブなインターフェイスのパフォーマンス情報を返します)

1.3.3 SNMP L2 自動検出スクリプト

このスクリプトは、バージョン 5.1 以上で /usr/share/pandora_server/util/recon_scripts にあり、SNMP を利用してレイヤー 2 (L2) ネットワークスキャンを実行します。SNMP 経由でルータやスイッチから、L2 情報を取得します。ホストは、L2 スキャンの後に traceroute でアクセスされます。

SNMP L2 スキャンを実行するには、カスタムスクリプト SNMP L2 Recon を選択し次のパラメータを入力して、新たな自動検出タスクを作成します。

  • ネットワーク(Network): スキャンするネットワークのカンマ区切りのリスト (例: 192.168.1.0/24,192.168.2.0/24)
  • コミュニティ(Community): SNMP コミュニティのカンマ区切りのリスト
  • ルータ(Router) (オプション): ネットワーク内のルータの IP アドレス。これは必須ではありませんが、ネットワークのスキャンが簡単になります。
  • オプションパラメータ(Optional parameter) (オプション): 全ネットワークインタフェースを対象にするには、-a を追加します。(デフォルトではアップしているインタフェースのみが対象です)

Snmp l2 recon task.png

検出したネットワークを表示するには、操作(Operation) -> ネットワーク表示(Network view) -> ネットワークマップ(Network map) へ行き、L2 ネットワークインタフェース(L2 network interfaces) をチェックします。

Snmp l2 network map.png

Template warning.png

ほとんどのホストが SNMP に応答しないとスキャンはとても遅くなります。それぞれの SNMP コミュニティで、それぞれのホストに対し、snmp_timeout に設定した秒で検出をタイムアウトし、snmp_check で指定した回数のリトライをします(ともに /etc/pandora/pandora_server.conf で設定されています)。デフォルト値で 2つの SNMP コミュニティで実行すると、SNMP に応答するホストが無い場合クラス C のネットワークで 30分の遅延が発生することになります(2コミュニティ x 1リトライ x 4秒 x 254ホスト)。スキャンを高速化するために、これらの値を小さくすることができますが、他の SNMP モジュールにも影響します。

 


1.3.4 WMI 自動検出スクリプト

このスクリプトは、WMI クエリの答えるホストをネットワークから検出し、デフォルトのモジュールを作成します。

WMI ネットワークスキャンを実行するには、カスタムスクリプト WMI Recon Script を選択し次のパラメータを設定して新たな自動検出タスクを作成します。

  • ネットワーク(Network): スキャンするネットワークのカンマ区切りのリスト (例: 192.168.1.0/24,192.168.2.0/24)
  • WMI認証(WMI auth): "ユーザ名%パスワード" という書式での WMI 認証トークンのカンマ区切りのリスト (例: Administrator%pass)

Wmi recon task.png