2006/12/18

Hobbitを設定

ポスト @ 0:04:53 | Software

HobbitサーバーのインストールHobbitクライアントのインストールが終わったら、いよいよ “なにを監視して” “どう報告するか” の設定である。

まず、監視対象の設定ファイルはinstalldir/server/etc/bb-hostsとinstalldir/server/etc/hobbit-clients.cfgの二つが中心となる。bb-hostsはクライアント外部(サーバー)から監視できるものの設定、hobbit-clients.cfgはクライアント内部(クライアント自身)から監視できるものの設定と理解すればよい。

設定項目はK-bloさんに公式サイトの翻訳があるのでそちらに譲り、ボクの設定を参考に掲載しておく。まずはbb-hostsである。bb-hostsはHobbitクライアントに依存しないので、Hobbitクライアントをインストールしていないマシンも監視できる。

installdir/server/etc/bb-hosts

group-compress <em>Internet</em> 72.14.253.147 www.google.com # noconn http://www.google.co.jp/ 203.216.227.176 www.yahoo.co.jp # noconn http://www.yahoo.co.jp/ group-compress <em>Gateways</em> 210.253.xxx.xxx xxx.pwd.ne.jp # http://www.pwd.ne.jp/ 61.117.xxx.xxx xxx.em-net.ne.jp # http://www.em-net.ne.jp/ 192.168.0.1 uniform # http://uniform/ group-compress <em>Servers</em> 192.168.0.100 oscar # bbd ftp ntp ssh http://oscar/ 192.168.0.104 zulu # ntp ssh http://www.rewse.jp/ https://www.rewse.jp/

一番上のInternetグループで外部サイトを監視している。ここに滅多に落ちなさそうなサイトをいくつか登録しておき、もしすべてのホストのhttpがエラーになったら自宅のネットワーク障害が疑える。noconnを設定してPing監視を行っていないのは、不正アタックと勘違いされかねないという理由と、www.google.comやwww.yahoo.comは複数のIPアドレスを持っていて正しくconn監視できないためだ。

Gatewaysグループではインターネットに出る間の主要ゲートウェイを登録している。まず、自宅のルーターであるuniform、そしてボクが利用しているISPのxxx.em-net.ne.jp、その上流のxxx.pwd.ne.jpを監視している。これによりネットワーク障害時にどこまで問題なく、どこから問題があるのかがある程度把握できるようになる。上流のゲートウェイがなにかはtracerouteを行えば分かる。

そして自分が管理しているサーバーをServersグループで設定している。oscarがHobbitサーバーであるので監視対象にbbdが設定されており、ほかにFTP / NTP / SSH / HTTP各サーバーが動作しているのでそれらを監視対象としている。zuluはNTP / SSH / HTTP / HTTPSサーバーが動作しているのでそれらを監視対象としている。NTPは “時刻を補正される側” もサービスとして動作していることは忘れずに。FTP / SSH / HTTPは死活監視とレスポンス時間の統計が取れる。HTTPSはそれに加えてSSL証明書の有効期限が監視できる。NTPは死活監視とオフセット値の統計が取れる。

次にhobbit-clients.cfgだ。Hobbitクライアントをインストールしたマシンのみhobbit-clients.cfgの設定で監視できる。

installdir/server/etc/hobbit-clients.cfg

DEFAULT UP 1h LOAD 4.0 8.0 DISK * 80 95 MEMPHYS 100 101 MEMACT 80 90 MEMSWAP 10 50 DIR /var/antivir/quarantine yellow size<10240 DIR /var/antivir/quarantine red size<102400 LOG /var/log/messages red "%sshd.*more authentication failures" PROC crond PROC httpd 1 100 yellow PROC httpd 1 200 red PROC syslogd HOST=oscar FILE /bin/ls red md5=562975c89bba5d109b83b9f96c1908d6 FILE /bin/mv red md5=e0c9a2f6465203c5ff67460af341ef89 FILE /bin/cp red md5=d3a239dbbceb18b1f7772dc1bdc6e6e6 FILE /bin/rm red md5=af5103285c69382f9079fa5bc0a3d98f FILE /etc/ssh/sshd_config red md5=abbb5ca6c07f298e4cc8c0f3b9670d23 FILE /etc/vsftpd/vsftpd.conf red md5=df4e5c0c73f57be61b869ac30c3a8784 PORT LOCAL=%[.:]139$ STATE=LISTEN "TEXT=NetBIOS: 139" PORT LOCAL=%[.:]445$ STATE=LISTEN "TEXT=SMB: 445" PORT LOCAL=%[.:]3306$ STATE=LISTEN "TEXT=MySQL: 3306" PORT LOCAL=%[.:]3690$ STATE=LISTEN "TEXT=Subversion: 3690" PROC nfsd PROC mysqld 2 PROC smbd PROC svnserve HOST=zulu FILE /bin/ls red md5=2cbcb26cd071af9201d9138d38838158 FILE /bin/mv red md5=79942e54c5747fe35c4bb227d66f7962 FILE /bin/cp red md5=256ac1bfbeca33cd66ce679a79db77b2 FILE /bin/rm red md5=b3dec74de684140816b73f8774f9a412 FILE /etc/ssh/sshd_config red md5=85cbfd29a9bee81c04e120f14eb3fa35 FILE /etc/vsftpd/vsftpd.conf red md5=3ac7b29121fad89933c3c0ee56fa13d4

DEFAULT以下に記述したものは、すべてのHobbitクライアント(サーバー含む)に適用される。UPでuptimeが1時間内のものは注意(黄色いアイコン)を表示することにした。そもそもマシンがダウンしていたら警告(赤いアイコン)となる。LOADはロード・アベレージの設定だ。2Wayマシンなので、それの2倍である4.0に達したら注意、それの4倍に達したら警告とした。DISKはディスク使用率だ。すべてのディスクで使用率が80%に達したら注意、95%に達したら警告とした。

MEMPHYSはメモリーの仕様率だ。Linuxの場合、バッファとキャッシュにメモリーを利用するのでMEMPHYSが大きくても問題ない。100%で注意、101%(あり得ない)で警告とした。MEMACTはバッファとキャッシュをのぞいた値だ。使用率80%で注意、90%で警告とした。MEMSWAPはスワップの使用率で10%で注意、50%で警告とした。

DIRでディレクトリのメタ情報を監視できる。ボクは Avira AntiVir Personal Edition で検疫されたファイルは/var/antivir/quarantineに移動しているのだけど、たいていはクライアントである Apple Power Mac G5 のバックアップ・ファイルの中から見つけたフィッシング詐欺メールなので駆除も削除もせずにほっといているので、そのディレクトリが10MBを越えたら注意、100MBを越えたら警告を発し、そのタイミングで駆除なり削除なりすることにした。LOGでは/var/log/messagesを監視し、SSH時に連続3回以上パスワードを間違えられたときに記される more authentication failures を監視している。ファイルのメタ情報やMD5値を監視できるFILEもあり、これらを使えば簡単なホスト型IDS(侵入検知システム)としても利用できるわけだ。

PROCではプロセスの死活を監視できる。crondとsyslogdは「動いていると思ったら動いていなかった」という状態だと影響が大きいので監視対象にしている。また、httpdは「1未満または100以上で注意」「1未満または200以上で警告」という設定にすることで、HTTPサーバーの負荷を監視している。

HOSTでマシンごとの設定が行える。oscarではbb-hostsで設定できるもの以外に CIFS (SMB) / NFS / MySQL / Subversionサーバーが動作しているのでそれのポートとプロセスを監視している。なんのポートがなんのサービスだか忘れがちなので、TEXTでコメントを表示させており、MySQLはmysqld_safeとmysqldが動いているべきなので「2未満だと警告」という設定になっている。また、NFSはポートが不定なのでポート監視は行っていない。MD5値はマシンごとに異なるのでマシンごとに設定しており、IDSとしてls / mv / cp / rmコマンドとsshd_config / vsftpd.conf設定ファイルのMD5値を監視している。つまり、これらが不正なファイルに置き換えられたり書き換えられたりされた場合は警告が出る。

DIR / FILE / LOGを使用する場合はinstalldir/server/etc/client-local.cfgの設定も必要だ。ここに設定したファイルの情報をHobbitクライアントはサーバーに送信する。

installdir/server/etc/client-local.cfg

[oscar] dir:/var/antivir/quarantine file:/bin/ls:md5 file:/bin/mv:md5 file:/bin/cp:md5 file:/bin/rm:md5 file:/etc/ssh/sshd_config:md5 file:/etc/vsftpd/vsftpd.conf:md5 log:/var/log/messages:10240 ignore brl04fmx [linux] dir:/var/antivir/quarantine file:/bin/ls:md5 file:/bin/mv:md5 file:/bin/cp:md5 file:/bin/rm:md5 file:/etc/ssh/sshd_config:md5 log:/var/log/messages:10240 ignore MARK

file:の末尾に:md5をつけるとMD5値も送信されるようになる。また、ignoreで送信しない行を設定でき、oscarはSyslogサーバーとして動作しており、ルーターである Planex BRL-04FMX からのログも混ざっているため、brl04fmxを含む行は送信しないようにした。[linux]ではLinuxマシンでのデフォルト設定となり、ホスト名での記述がないLinuxマシンはこの設定を使用する。

なお、デフォルトでは/var/log/messagesや/etc/ssh/sshd_config、/etc/vsftpd/vsftpd.confはrootユーザーしか読めないので、権限を変更する必要がある。

# chgrp hobbit /var/log/messages* # chmod g+r /var/log/messages* # chgrp hobbit /etc/ssh/sshd_config # chmod g+r /etc/ssh/sshd_config # chgrp hobbit /etc/vsftpd/vsftpd.conf # chmod g+r /etc/vsftpd/vsftpd.conf

以上で “なにを監視するか” の設定は完了した。次は “どう報告するか” だ。これはinstalldir/server/etc/hobbit-alerts.cfgで設定する。

installdir/server/etc/hobbit-alerts.cfg

HOST=uniform,oscar,zulu MAIL xxx@rewse.jp DURATION>10 RECOVERED REPEAT=2h TIME=W:0800:1000 MAIL xxx@rewse.jp DURATION>10 RECOVERED REPEAT=2h COLOR=red TIME=W:1000:2000 MAIL xxx@rewse.jp DURATION>10 RECOVERED REPEAT=2h TIME=60:1000:2000 MAIL xxx@rewse.jp DURATION>10 RECOVERED REPEAT=2h TIME=*:2000:2400

障害を検知したときの動作は “メールを送信する” か“スクリプトを実行する”かである。ボクは今のところメール告知のみにとどめている。なお、これらはグループというのも設定でき、hobbit-clients.cfgで監視対象をグループ化して「Web系のなにかに問題が発生したら誰々にメール」などとも簡単に設定できる。

ボクの場合、メール告知方法は日常生活に合わせて四通り記述している。平日の朝、平日の20時から24時、土曜日と日曜日の10時から24時は注意も警告も発生次第メールで受け取る。一方、平日の10時から20時は警告のみメールで受け取る。つまり、会社にいるときはやきもきするだけなので、注意は無視して放っておくというわけだ。警告が届いた場合は仕事のほうを放って……(以下略)。また、自然治癒することも十分あり得るので、復旧した場合にも告知するようにRECOVEREDをつけておき、外出中でも「自然治癒した。ほっ」と安心できるようにし、10分以内に回復したものはメールすら送らないようにDURATIONを設定した。さらに、デフォルトでは30分に1回の再告知されるので、これを2時間に1回に変更した。

Trackback

No Trackbacks

Track from Your Website

http://rewse.jp/fukugan/trackback/tb.php?id=845

Comment

No Comments

Post Your Comment


(Smile) (Wink) (Laugh) (Foot in mouth) (Frown) (Gasp) (Cool) (Tongue)

*は入力必須です。E-Mailは公開されません。