Volatile サービス

出典: Nagios 3翻訳プロジェクト Wiki

目次

導入 Introduction

(Nagiosは"ノーマル"なサービスと"volatile"なサービスとを区別します。サービスの定義の中でis_volatileを使用することで、そのサービスを"volatile"なサービスとして設定します。大抵の監視対象は"volatile"ではない(=ノーマル)なサービスでしょう。しかし、volatileサービスは適切に使えば非常に有用です。)

どんなサービスに使うのか?

volatileサービスは監視に役立ちます。

  • チェックされるたびに"OK"ステートを自動的にリセットして返してくるもの
  • 毎回発生するたびに(一度ではなく)注意が必要なセキュリティアラートのようなイベント


Volatileサービスの特別な点とは?

volatileサービスは"ノーマル"なサービスとは重要な3つの点で異なります。監視対象がハードのOK以外のステータスの場合には毎回そのOK以外のステータス(WARNING,CRITICAL,UNKNOWN)を返します(ステートの変化が生じません)。監視対象がハードnon-OKステートの時には毎回チェックをnon-OKステートで返します(ステートの変化が発生しません)。

これらのイベントは通常OK以外のステートでハードステートチェンジが発生したときのみ発生します。言い換えれば、サービスがOK以外のステートになった最初の時だけ起こると言うことです。もし、再チェックしたときの結果が同じnon-OKステートだったら、ハードステートチェンジは起こらないですし、イベントも発生しません。(訳者注)Volatileオプションを使用すると毎回ハードステータスチェンジが発生したのと同じイベント(ログ、通知)が発生します。

記憶にだけ関心があるなら、追跡オプションを代わりに使うことを検討してください


2つのパワー

Volatileサービスとパッシブサービスチェックを掛け合わせると、とても使えます。たとえばSNMPトラップやセキュリティアラートをハンドリングしたりです。

なにか例を挙げると…PortSentryを稼働させて。ファイアウォールへの侵入者がやるポートスキャンをかけてみましょう。もしNagiosにポートスキャンを検知させたければ、以下のように行います・・・

Nagiosでの作業:

  • PortSentryが稼働している機器にPort Scansというサービスを設定します。
  • そのサービスのmax_check_attemptsを1にします。これはサービスがOK以外のステートになったときに即座にハードステートにするという設定です。
  • サービス定義でアクティブチェックを0にし、無効にします。これはNagiosのアクティブチェックサービスを防ぎます。
  • サービス定義でパッシブチェックを1にし、有効にします。これはパッシブチェックサービスを可能にします
  • サービス定義でvolatileを1にします。

PortSentryでの作業:

  • PostSentry設定ファイル(portsentry.conf)を編集してKILL_RUN_CMDコマンドを以下のように設定します:

KILL_RUN_CMD="/usr/local/Nagios/libexec/eventhandlers/submit_check_result <host_name> 'Port Scans' 2 'Port scan from host $TARGET$ on port $PORT$. Host has been firewalled.'"

<host_name>をPortScanサービスが稼働しているホストのショートネームに設定することを確認してください。

/usr/local/nagios/libexec/eventhandlersディレクトリにsubmit_check_resultという名前のシェルスクリプトを作成します。シェルスクリプトは以下のような感じにします:

	#!/bin/sh

 

	# Write a command to the Nagios command file to cause

	# it to process a service check result

 

	echocmd="/bin/echo"

 

	CommandFile="/usr/local/nagios/var/rw/nagios.cmd"

 

	# get the current date/time in seconds since UNIX epoch

	datetime=`date +%s`

 

	# create the command line to add to the command file

	cmdline="[$datetime] PROCESS_SERVICE_CHECK_RESULT;$1;$2;$3;$4"

 

	# append the command to the end of the command file

	`$echocmd $cmdline >> $CommandFile`

PortSentryが将来マシンがポートスキャンをしているのを見つけた時、何が起こるでしょう?

  • PortSentryはホストのファイアウォールになります(これはPortSentryソフトウェアの機能です)。
  • PortSentryはsubmit_check_resultシェルスクリプトを実行し、パッシブチェックの結果をNagiosへ送る。
  • Nagiosは外部のコマンドファイルを読み、PortSentryによって送られるパッシブサービスチェックを見ます。
  • NagiosはCRITICAL状態にポートスキャンサービスがなると、連絡先に通知します。

このようにきちんとしています。

個人用ツール