Nagios 2.0オープンソースではじめるシステム&ネットワーク監視のパッシブサービスチェックに書かれているTCP Wrapperと連携して不正アクセスを監視する設定をUbuntuで設定してみました。
この設定で、/etc/hosts.denyで接続を拒否したIPからのアクセスがあるとNagiosから通知されるようになります。
パッシブサービスの設定
APTのnagios3パッケージでは、パッシブサービス用のcheck_periodのneverが定義されています。
これを設定するとNagios側からの監視はしません。
check_commandには、ダミーのreturn-okを指定します。
$ tail -11 /etc/nagios3/conf.d/localhost_nagios2.cfg define service { use generic-service host_name localhost check_period never service_description TCPWrapper check_command return-ok max_check_attempts 1 check_freshness 0 flap_detection_enabled 0 is_volatile 1 } $
TCPWrapperに拒否するアドレスを指定する
localhostと特定のIPアドレス以外のアクセスを拒否するように設定します。
この設定では、localhostと10.0.1.100以外のアクセスは拒否ということになります。
$ cat /etc/hosts.deny ALL:ALL EXCEPT LOCAL, 10.0.1.100: twist (/etc/nagios3/handle_tcp_wrapper %h %d) & $ cat /etc/hosts.deny
アクセスを拒否した場合に/etc/nagios3/handle_tcp_wrapperを実行します。
$ cat handle_tcp_wrapper #! /bin/sh /etc/nagios3/submit_check_result_via_nsca localhost TCPWrapper 2 "Denied $2-$1" $ cat submit_check_result_via_nsca printfcmd="printf" NscaBin="/usr/sbin/send_nsca" NscaCfg="/etc/send_nsca.cfg" NagiosHost="localhost" # Fire the data off to the NSCA daemon using the send_nsca script $printfcmd "%s\t%s\t%s\t%s\n" "$1" "$2" "$3" "$4" | $NscaBin -H $NagiosHost -c $NscaCfg $
動作確認
/etc/hosts.denyで例外に指定されていないIPアドレスから接続があると接続が拒否されますが、そのときに下記のようなメールが通知されます。
不正アクセスの監視は、自動的に復帰することはないので、NagiosのWebコンソールから”Submit passive check result for this service”を使ってステータスを変更します。
***** Nagios ***** Notification Type: PROBLEM Service: TCPWrapper Host: localhost Address: 127.0.0.1 State: CRITICAL Date/Time: Sat Mar 21 11:27:14 JST 2009 Additional Info: Denied sshd-10.1.0.10.in-addr.arpa