初めてのmakeserverTOP > サーバ運用/管理 > nagios-Plugin

nagios-Pluginについて

 
Nagios Pluginとは

監視ツール「Nagios」はプラグインを追加することで監視する項目を増やすことができます。

デフォルトでの監視項目では少し足りない部分があるので、せっかく定評の高い無料の総合監視ツールを導入しているので、もう少し構築した自宅サーバの監視をするために、プラグインを少し追加変更してみます。

 


●check_smtp

smtpここでは「Postfix」の状態をチェック

# vi localhost.cfg
(「vi」エディタを使って編集します。)

以下一番最終行に追加します。
******************************************************
define service{
    use                   local-service
    host_name             localhost
    service_description   smtp
    check_command         check_smtp!$USER1$/check_smtp -H $192.168.**.**$
    }
******************************************************
(編集が終わったら設定を保存して終了します。)
(「192.168.**.**」はサーバのローカルアドレスを入力します。)

 


●check_pop

popここでは「dovecot」の状態をチェック

# vi localhost.cfg
(「vi」エディタを使って編集します。)

以下一番最終行に追加します。
******************************************************
define service{
    use                   local-service
    host_name             localhost
    service_description   pop
    check_command         check_pop!$USER1$/check_pop -H $192.168.**.**$
    }
******************************************************
(編集が終わったら設定を保存して終了します。)
(「192.168.**.**」はサーバのローカルアドレスを入力します。)

 


●check_nmap

構築した自宅サーバで使用しているTCPポートを監視してみましょう。
設定したポートが閉じたら「WARNING」開いたら「CRITICAL」と監視アラートが上がるように設定をしてみます。
ある日突然、・・・携帯にnagiosからメール見てみると「check_nmap」がCRITICALなんてことになったらかなり危険を感じますね〜・・・怖い怖い。

「nmap」とはポートスキャンツールです。これを使ってポートの開放を調べます。
決して人のサーバに向けないように!!自分のサーバを守るツールとして使いましょう。

# yum -y install nmap
(これだけなんですけどね。)

# nmap localhost

PORT STATE SERVICE
 ・
 ・
 ・
 ・
80/tcp open http

など開放されているポートが表示されます。(とりあえず80ポートのみ開放としておきます。)
続いて「nagios」プラグインより「check_nmap」を持ってきます。

# cd /usr/local/bin/nagios-plugins-1.4.11/
(「cd」コマンドを使って移動します。)

# cp contrib/utils.py /usr/local/nagios/libexec/
(「cp」コマンドを使ってファイルを「/usr/local/nagios/libexec/」へコピーします。「libexec」はコマンドのあるところ。)

# cp contrib/check_nmap.py /usr/local/nagios/libexec/check_nmap
(「cp」コマンドを使ってファイルを「/usr/local/nagios/libexec/」へコピーします。名前も「check_nmap」に変換)

# chmod 755 /usr/local/nagios/libexec/check_nmap
(「chmod」コマンドを使って「check_nmap」のパーミッションを変更。)

# cd /usr/local/nagios/etc/objects/
(「cd」コマンドを使って「nagios」設定ファイル群まで移動します。)

■コンフィグの変更
# vi localhost.cfg
(「vi」エディタを使って編集します。)

以下一番最終行に追加します。
******************************************************
define service{
    use                   local-service
    host_name             localhost
    service_description   nmap
    max_check_attempts    1
    check_command         check_nmap!80
    }
******************************************************

「max_check_attempts」とは何回チェックしたら障害と判断するかを指定する項目(デフォルト4回)ですが、1回で危険度100%なので追加します。
「check_command    check_nmap!80」  「check_nmap」コマンドを使ってポート80のみ開放状態をチェック

最初に「# nmap localhost」で各ポート状態が確認できたと思うので、その開放ポートを追加します。
例) check_nmap!21,22,25,80,110,111,143,443 (複数ある場合「,」で区切ります。)
(編集が終わったら設定を保存して終了します。)


■コマンドの追加
# vi commands.cfg
(「vi」エディタを使って編集します。)

以下途中の行に追加します。
******************************************************
# 'check_nmap' command definition
define command{
    command_name     check_nmap
    command_line     $USER1$/check_nmap -H $HOSTADDRESS$ -p $ARG1$
    }
******************************************************
(編集が終わったら設定を保存して終了します。)

# /etc/init.d/nagios restart
(設定を有効にする為再起動します。)




 


●check_memory

デフォルトでは「swap」の監視はあるのですが、「memory」の監視は無いので追加します。
「memory」の空き容量が減ったら「WARNING」「CRITICAL」を通知します。
これも「check_nmap」同様にプラグインからコピーします。

# cd /usr/local/bin/nagios-plugins-1.4.11
(「cd」コマンドを使って移動します。)

# cp contrib/check_mem.pl /usr/local/nagios/libexec/check_mem
「cp」コマンドを使ってファイルを「/usr/local/nagios/libexec/」へコピーします。名前も「check_mem」に変換)

# chmod 755 /usr/local/nagios/libexec/check_mem
(「chmod」コマンドを使って「check_mem」に実行権を付けます。)
このままだと調子が悪いので、少々加工します。

# vi /usr/local/nagios/libexec/check_mem
(「vi」エディタを使って編集します。)

# $command_line = `vmstat | tail -1 | awk '{print \$4,\$5}'`;
(「#」追加)

$command_line = `free |head -3|tail -1|awk '{print \$3,\$4}'`;
(この行を追加します)








■コンフィグの変更
# vi localhost.cfg
(「vi」エディタを使って編集します。)

以下一番最終行に追加します。
******************************************************
define service{
    use                   local-service
    host_name             localhost
    service_description   memory
    check_command         check_mem!20%!10%
    }
******************************************************
(編集が終わったら設定を保存して終了します。)

空き容量が20%以下で「WARNING」
空き容量が10%以下で「CRITICAL」
(各サーバの環境に合わせて変更してください。)


■コマンドの追加
# vi commands.cfg
(「vi」エディタを使って編集します。)

以下追加します。
******************************************************
# 'check_mem' command definition
define command{
    command_name     check_mem
    command_line     $USER1$/check_mem -f -w $ARG1$ -c $ARG2$
    }
******************************************************
(編集が終わったら設定を保存して終了します。)

# /etc/init.d/nagios restart
(設定を有効にする為再起動します。)




 


●check_log

「check_log」とはログを比較して、指定の文字列を引っ掛けるプラグインとでも言うのでしょうか
なかなか面白い使い方もできるようです。
以下に3つの「check_log」を使ったコマンドを記載します。

●auth_fail(名前はご自由に変更してください。)

ログから認証失敗があった場合エラーを通知します。(誰かいたずらしてるのかな〜)

# cd /var/log
(「cd」コマンドを使って移動します。)

# touch messages.old
(「touch」コマンドで比較するファイルを作成します。)

# chmod 644 messages
# chmod 644 messages.old
(「check_log」コマンドが読めるように「chmod」コマンドを使って権限変更)


■コンフィグの変更
# vi localhost.cfg
(「vi」エディタを使って編集します。)

以下一番最終行に追加します。
******************************************************
define service{
    use                    local-service
    host_name              localhost
    service_description    auth_fail
    max_check_attempts     1
    check_command          check_log!/var/log/messages!
/var/log/messages.old! "authentication failure"
    }
******************************************************
(編集が終わったら設定を保存して終了します。)

「messages」と「messages.old」を比較し文字列(認証失敗)「authentication failure」があれば、通知されます。時々通知されますね!

「check_log」コマンドがあるので、「commands.cfg」は編集しません。

# /etc/init.d/nagios restart
(設定を有効にする為再起動します。)

例えば、「tera term」などのログインに失敗したときには「messages」にログが残ります。







こんな感じで、通知されます。このままでは、うっとうしいので、解除するには

# cat /var/log/messages > /var/log/messages.old

とコマンドを入力すれば、「messages」と「messages.old」が同じになるので、通知は解除されます。

私は面倒なので

# crontab -e
(「cron」設定)

00 0 * * * cat /var/log/messages > /var/log/messages.old
(毎日0:00になるとコマンドが実行され「messages」と「messages.old」が同じになるので、通知は解除されます。)

# /etc/init.d/crond restart
(設定を有効にする為再起動します。)

 


●PortScan(名前はご自由に変更してください。)

これも「auth_fail」と同様です。ご自身のサーバにポートスキャンがされた場合通知されます。
ただし、「Snoet」が構築されていないと駄目ですよ

# cd /var/log/snort
(「cd」コマンドを使って移動します。)

# touch alert.old
(「touch」コマンドで比較するファイルを作成します。)

# chmod 644 alert
# chmod 644 alert.old
(「chmod」コマンドを使ってパーミッションを変更します。)


■コンフィグの変更
# vi localhost.cfg
(「vi」エディタを使って編集します。)

以下一番最終行に追加します。
******************************************************
define service{
    use                    local-service
    host_name              localhost
    service_description    PortScan
    max_check_attempts     1
    check_command          check_log!/var/log/snort/alert!
/var/log/snort/alert.old! "Portscan"
    }
******************************************************
(編集が終わったら設定を保存して終了します。)
(「alert」と「alert.old」を比較し文字列「Portscan」があれば、通知されます。)

「check_log」コマンドがあるので、「commands.cfg」は編集しません。

# /etc/init.d/nagios restart
(設定を有効にする為再起動します。)





解除方法はこれも同様に

# cat /var/log/snort/alert > /var/log/snort/alert.old

とコマンドを入力すれば、「alert」と「alert.old」が同じになるので、通知は解除されます。

私は面倒なので

# crontab -e
(「cron」設定)

00 0 * * * cat /var/log/snort/alert > /var/log/snort/alert.old
(毎日0:00になるとコマンドが実行され「alert」と「alert.old」が同じになるので、通知は解除されます。)

# /etc/init.d/crond restart
(設定を有効にする為再起動します。)


 


●Virus_mail(名前はご自由に変更してください。)

これはウイルスメールを受信した場合通知されます。
ただし、「メールサーバ」と「Clam Antivirus」「amavisd-new」が構築済みが前提です。

# cd /var/log
(「cd」コマンドを使って移動します。)

# touch maillog.old
(「touch」コマンドで比較するファイルを作成します。)

# chmod 644 maillog
# chmod 644 maillog.old
(「check_log」コマンドが読めるように「chmod」コマンドを使って権限変更)


■コンフィグの変更
# vi localhost.cfg
(「vi」エディタを使って編集します。)

以下一番最終行に追加します。
******************************************************
define service{
    use                    local-service
    host_name              localhost
    service_description    Virus_mail
    max_check_attempts     1
    check_command          check_log!/var/log/maillog!
/var/log/maillog.old! "Blocked INFECTED"
    }
******************************************************
(編集が終わったら設定を保存して終了します。)
「maillog」と「maillog.old」を比較し文字列「Blocked INFECTED」があれば、通知されます。

「check_log」コマンドがあるので、「commands.cfg」は編集しません。

# /etc/init.d/nagios restart
(設定を有効にする為再起動します。)





解除方法はこれも同様に

# cat /var/log/maillog > /var/log/maillog.old

とコマンドを入力すれば、「alert」と「alert.old」が同じになるので、通知は解除されます。


# crontab -e
(「cron」設定)

00 0 * * * cat /var/log/maillog > /var/log/maillog.old
(毎日0:00になるとコマンドが実行され「maillog」と「maillog.old」が同じになるので、通知は解除されます。)

# /etc/init.d/crond restart
(設定を有効にする為再起動します。)

テスト方法は
テストウイルスをダウンロードして、1)、2)を実行します。

自分で勝手に使ってるだけなんですけどね!! 

downtimeの設定は
こちら

 

サーバ運用/管理記事一覧

NET-SNMP

SNMPとはルータやコンピュータ、端末など、ネットワークに接続された通信機器を監視・制御するためのプロトコル。制御の対象となる機器はMIBと呼ばれる管理情報データベース...

Tripwire

Tripwireとはファイルやディレクトリが追加された場合や、削除された場合などを監視するためのツールで、ファイル改ざん検知として定番なので導入します。&nbs...

Denyhosts

DenyHostsとはこれはSSHブルートフォース対策に使います。辞書攻撃とかで、適当なユーザ名・パスワードを使って、侵入をしようとします。1分間に10回以上は...

Fail2ban

Fail2banとはこれも、「denyhosts」同様にログをチェックして、設定以上に認証に失敗していたら失敗したIPアドレスからの接続を拒否するよくあるブルートフ...

munin

muninとは設定が簡単で、システムを監視していろいろな値を取得してグラフ化してくれるものです。ディスク使用量・MySQL・IOstat・トラフィック・プロセス数・VM...

nagios

Nagios(3系 日本語版)とは指定されたホストやサービスを監視し、障害や復旧時にアラートをメール通知するなどの機能があるオープンソースで作られた総合監視ツール。...

nagios-Plugin

Nagios Pluginとは監視ツール「Nagios」はプラグインを追加することで監視する項目を増やすことができます。デフォルトでの監視項目では少し足りない部分が...

nagios-downtime

Nagios downtimeとはデフォルトで、ダウンタイムという機能があります。これはその時間帯を非監視にすることです。監視はするけど通知はしないというところでし...

nagios cheker

Nagios Chekerとは自宅ではFireFoxをブラウザとして使用しています。nagios関連で面白いものを見つけたので、アップしてみました。FireFoxの...

Snort

Snortとはネットワーク型IDS(Intrusion Detection System)です。ネットワークを流れるパケットをキャプチャーし、不審なパケットを検出する機能が...

Clam Antivirus

Clam AntiVirusとはLINUX用のフリーのアンチウイルスソフト ●Clam AntiVirusインストール# yum -y --e...

amavisd-new

amavisd-new送受信されるメールに対してウィルスチェックをするように設定をする。「postfix」「Clam AntiVirus」が設定済みであることが前提...

awstats

AWStatsとはAWStats (awstats6.95 日本語)アクセス解析・ログ解析「awstats」とは、アクセスを解析して、グラフィカルに表示するツールです。...