<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>複眼中心</title>
<link>http://rewse.jp/fukugan/index.php</link>
<pubDate>Mon, 18 Dec 2006 00:04:53 </pubDate>
<description>
複眼中心 - RSS 2.0 (Really Simple Syndication).
</description>
<item>
<title>Hobbitを設定</title>
<link>http://rewse.jp/fukugan/article.php?id=845</link>
<pubDate>Mon, 18 Dec 2006 00:04:53 +09:00</pubDate>
<description>
Hobbit Monitor
K-blo: Hobbit


HobbitサーバーのインストールとHobbitクライアントのインストールが終わったら、いよいよ &amp;ldquo;なにを監視して&amp;rdquo; &amp;ldquo;どう報告す...</description>
<content:encoded>
<![CDATA[<ul>
<li><a href="http://hobbitmon.sourceforge.net/">Hobbit Monitor</a></li>
<li><a href="http://www.umasugi.com/~h070017/hobbit/">K-blo: Hobbit</a></li>
</ul>

<p><a href="http://www.rewse.jp/fukugan/article.php?id=839">Hobbitサーバーのインストール</a>と<a href="http://www.rewse.jp/fukugan/article.php?id=840">Hobbitクライアントのインストール</a>が終わったら、いよいよ &ldquo;なにを監視して&rdquo; &ldquo;どう報告するか&rdquo; の設定である。</p>

<p>まず、監視対象の設定ファイルは<var>installdir/</var>server/etc/bb-hostsと<var>installdir/</var>server/etc/hobbit-clients.cfgの二つが中心となる。bb-hostsはクライアント外部（サーバー）から監視できるものの設定、hobbit-clients.cfgはクライアント内部（クライアント自身）から監視できるものの設定と理解すればよい。</p>
<!--more-->
<p>設定項目はK-bloさんに公式サイトの翻訳があるのでそちらに譲り、ボクの設定を参考に掲載しておく。まずはbb-hostsである。bb-hostsはHobbitクライアントに依存しないので、Hobbitクライアントをインストールしていないマシンも監視できる。</p>

<div class="file">
<p class="title"><var>installdir/</var>server/etc/bb-hosts</p>
<p class="body">group-compress &lt;em&gt;Internet&lt;/em&gt;
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 &lt;em&gt;Gateways&lt;/em&gt;
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 &lt;em&gt;Servers&lt;/em&gt;
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/</p>
</div>

<p>一番上のInternetグループで外部サイトを監視している。ここに滅多に落ちなさそうなサイトをいくつか登録しておき、もしすべてのホストのhttpがエラーになったら自宅のネットワーク障害が疑える。noconnを設定してPing監視を行っていないのは、不正アタックと勘違いされかねないという理由と、www.google.comやwww.yahoo.comは複数のIPアドレスを持っていて正しくconn監視できないためだ。</p>

<p>Gatewaysグループではインターネットに出る間の主要ゲートウェイを登録している。まず、自宅のルーターであるuniform、そしてボクが利用しているISPのxxx.em-net.ne.jp、その上流のxxx.pwd.ne.jpを監視している。これによりネットワーク障害時にどこまで問題なく、どこから問題があるのかがある程度把握できるようになる。上流のゲートウェイがなにかはtracerouteを行えば分かる。</p>

<p>そして自分が管理しているサーバーをServersグループで設定している。oscarがHobbitサーバーであるので監視対象にbbdが設定されており、ほかにFTP / NTP / SSH / HTTP各サーバーが動作しているのでそれらを監視対象としている。zuluはNTP / SSH / HTTP / HTTPSサーバーが動作しているのでそれらを監視対象としている。NTPは &ldquo;時刻を補正される側&rdquo; もサービスとして動作していることは忘れずに。FTP / SSH / HTTPは死活監視とレスポンス時間の統計が取れる。HTTPSはそれに加えてSSL証明書の有効期限が監視できる。NTPは死活監視とオフセット値の統計が取れる。</p>

<p>次にhobbit-clients.cfgだ。Hobbitクライアントをインストールしたマシンのみhobbit-clients.cfgの設定で監視できる。</p>

<div class="file">
<p class="title"><var>installdir/</var>server/etc/hobbit-clients.cfg</p>
<p class="body">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</p>
</div>

<p>DEFAULT以下に記述したものは、すべてのHobbitクライアント（サーバー含む）に適用される。UPでuptimeが1時間内のものは注意（黄色いアイコン）を表示することにした。そもそもマシンがダウンしていたら警告（赤いアイコン）となる。LOADはロード・アベレージの設定だ。2Wayマシンなので、それの2倍である4.0に達したら注意、それの4倍に達したら警告とした。DISKはディスク使用率だ。すべてのディスクで使用率が80%に達したら注意、95%に達したら警告とした。</p>

<p>MEMPHYSはメモリーの仕様率だ。Linuxの場合、バッファとキャッシュにメモリーを利用するのでMEMPHYSが大きくても問題ない。100%で注意、101%（あり得ない）で警告とした。MEMACTはバッファとキャッシュをのぞいた値だ。使用率80%で注意、90%で警告とした。MEMSWAPはスワップの使用率で10%で注意、50%で警告とした。</p>

<p>DIRでディレクトリのメタ情報を監視できる。ボクは <a href="http://www.free-av.com/">Avira AntiVir Personal Edition</a> で検疫されたファイルは/var/antivir/quarantineに移動しているのだけど、たいていはクライアントである <a href="http://images.apple.com/jp/datasheet/desktop/pdfs/Power_Mac_G5-9031.pdf">Apple Power Mac G5</a> のバックアップ・ファイルの中から見つけたフィッシング詐欺メールなので駆除も削除もせずにほっといているので、そのディレクトリが10MBを越えたら注意、100MBを越えたら警告を発し、そのタイミングで駆除なり削除なりすることにした。LOGでは/var/log/messagesを監視し、SSH時に連続3回以上パスワードを間違えられたときに記される <code>more authentication failures</code> を監視している。ファイルのメタ情報やMD5値を監視できるFILEもあり、これらを使えば簡単なホスト型IDS（侵入検知システム）としても利用できるわけだ。</p>

<p>PROCではプロセスの死活を監視できる。crondとsyslogdは「動いていると思ったら動いていなかった」という状態だと影響が大きいので監視対象にしている。また、httpdは「1未満または100以上で注意」「1未満または200以上で警告」という設定にすることで、HTTPサーバーの負荷を監視している。</p>

<p>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値を監視している。つまり、これらが不正なファイルに置き換えられたり書き換えられたりされた場合は警告が出る。</p>

<p>DIR / FILE / LOGを使用する場合は<var>installdir/</var>server/etc/client-local.cfgの設定も必要だ。ここに設定したファイルの情報をHobbitクライアントはサーバーに送信する。</p>

<div class="file">
<p class="title"><var>installdir/</var>server/etc/client-local.cfg</p>
<p class="body">[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</p>
</div>

<p>file:の末尾に:md5をつけるとMD5値も送信されるようになる。また、ignoreで送信しない行を設定でき、oscarはSyslogサーバーとして動作しており、ルーターである <a href="http://www.planex.co.jp/product/broadlanner/brl04fmx.shtml">Planex BRL-04FMX</a> からのログも混ざっているため、brl04fmxを含む行は送信しないようにした。[linux]ではLinuxマシンでのデフォルト設定となり、ホスト名での記述がないLinuxマシンはこの設定を使用する。</p>

<p>なお、デフォルトでは/var/log/messagesや/etc/ssh/sshd_config、/etc/vsftpd/vsftpd.confはrootユーザーしか読めないので、権限を変更する必要がある。</p>

<p class="screen"># 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</p>

<p>以上で &ldquo;なにを監視するか&rdquo; の設定は完了した。次は &ldquo;どう報告するか&rdquo; だ。これは<var>installdir/</var>server/etc/hobbit-alerts.cfgで設定する。</p>

<div class="file">
<p class="title"><var>installdir/</var>server/etc/hobbit-alerts.cfg</p>
<p class="body">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</p>
</div>

<p>障害を検知したときの動作は &ldquo;メールを送信する&rdquo; か&ldquo;スクリプトを実行する&rdquo;かである。ボクは今のところメール告知のみにとどめている。なお、これらはグループというのも設定でき、hobbit-clients.cfgで監視対象をグループ化して「Web系のなにかに問題が発生したら誰々にメール」などとも簡単に設定できる。</p>

<p>ボクの場合、メール告知方法は日常生活に合わせて四通り記述している。平日の朝、平日の20時から24時、土曜日と日曜日の10時から24時は注意も警告も発生次第メールで受け取る。一方、平日の10時から20時は警告のみメールで受け取る。つまり、会社にいるときはやきもきするだけなので、注意は無視して放っておくというわけだ。警告が届いた場合は仕事のほうを放って……（以下略）。また、自然治癒することも十分あり得るので、復旧した場合にも告知するようにRECOVEREDをつけておき、外出中でも「自然治癒した。ほっ」と安心できるようにし、10分以内に回復したものはメールすら送らないようにDURATIONを設定した。さらに、デフォルトでは30分に1回の再告知されるので、これを2時間に1回に変更した。</p>]]>
</content:encoded>
</item>
</channel>
</rss>