Logwatch 5.0 に関するインストールメモ

Create:2003/03/17, update:2004/01/07

 

Logwatch を使用する目的

swatch での監視は、syslog に出力されるログを監視し管理者が指定したパターンが現れたときにメール等での通知を行うツールでした。しかし、管理者が指定したパターンが不十分であったり、スキルが不足しており本来監視対象としなければいけない物を見逃してしまう可能性がありました。また、swatch での監視は即時性があり障害対応を行うには、非常に有用なツールですが、いかんせんメール内容は、その該当行のまま表示されるため、ログを見慣れていないと折角の通知でも対応を誤ってしまう可能性がありました。

これに対し Logwatch は、cron コマンドを利用し毎朝(デフォルトは、04:02)に実行され、syslog の内容から各セキュリティに関する情報を自動的に収集し管理者にメールで通知する機能を持ちます。

本家 : Logwatch(英語です)
参考 : サーバのログ監視ツールを使いこなそう@IT)
参考 : Logwatchでログを簡単にチェックしよう

収集する情報の中には、以下の物があります。(全部では、ないです)

qpop による外部参照ユーザ
sendmail/qmail による不正中継 (第三者中継の調査)
パスワード不一致
root ユーザとなったユーザ一覧、また回数
samba によるアクセス
外部サービスの総アクセス時間
ディスク使用情報

Logwatch をインストールする

  1. このソフトは、RedHat系で動かすことを前提としているようですので、下記の作業内容については当方では責任を負いかねます。ただ、悪さを発見するソフトなので多少の不具合でも目をつぶれるというひとには、絶対にお勧めします。
  2. ※ Logwatch 4.3.2 の記事は、こちらを参照のこと。

    ※ Logwatch は、Perl 5.6以上のバージョンで使用することを目的としてます。

  3. まずはインストールをしようね♪
  4. % wget ftp://ftp.kaybee.org/pub/linux/logwatch-5.0.tar.gz
    % gzip -cd logwatch-5.0.tar.gz | tar xf -
    % cd logwatch-5.0
    % su
    # mkdir /etc/log.d
    # cp -rp scripts/ /etc/log.d
    # cp -rp conf/ /etc/log.d
    # cp -rp lib/ /etc/log.d
    # ln -s /etc/log.d/scripts/logwatch.pl /etc/cron.daily/
    
  5. /etc/log.d/conf/logwatch.conf ファイルを編集し、ログ収集する定義情報を変更します。下記は、最低限行っていた方がよいと思われる項目です。
  6. LogDir = /var/log   ← ログ出力先を指定します
    Detail = Med        ← ログ収集結果のレベルを指定します(これ位が、いいかも)
    MailTo = root       ← ログ収集結果を通知するユーザを指定します
    Archives = Yes      ← アーカイブログを参照するか指定します(ローテイトされているタイミングを考慮し)
    mailer = /bin/mail  ← メールコマンドを指定します
    HostLimit = No      ← 転送されたログを対象にするかを指定します
    

Logwatch の実行時間

  1. /etc/crontab に指定された 下記の赤文字部分が実行時間(毎日 04:02 に実行)となります。具体的な処理は、 /etc/cron.daily 配下にある実行属性のプログラムが対象となります。
  2. # cat /etc/crontab
    
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    
    # run-parts
    03,18,33,48 * * * * root run-parts /etc/cron.quarter-hourly
    04,34 * * * * root run-parts /etc/cron.half-hourly
    01 * * * * root run-parts /etc/cron.hourly
    05 0,6,12,18 * * * root run-parts /etc/cron.quarter-daily
    02 4 * * * root run-parts /etc/cron.daily
    22 4 * * 0 root run-parts /etc/cron.weekly
    42 4 1 * * root run-parts /etc/cron.monthly
    

Logwatch の仮テスト方法

  1. 実行時間(毎日 04:02 に実行)まで待っているのは、時間の無駄なのと設定した内容がどの様に通知されるのかを、仮にテストしてみます。ちなみに、仮実行するには、root ユーザになる必要があります。
  2. じっこー
  3. # /etc/cron.daily/logwatch.pl 
    
  4. メール届きました?

不具合点が出た! ギャァ

  1. Qube3j に導入されている Perl のバージョンは、5.005_03 のため色々な不具合が発覚します。下記仮テストを行って見ると判るのですが、Perl 5.6から導入された our変数(perlのourに関すること)が悪さをし、各 Perl スクリプトでエラーが発生します。これは、先にも書いたとおり Qube3J で動かすことを前提としていないために発生するので、こういう場合は Perl ですので自分で直してみましょう。
  2. ※ ちなみに下記のエラーは「/etc/log.d/scripts/services/sudo」ファイル

    Use of reserved word "our" is deprecated at sudo line 21.
    Global symbol "$Debug" requires explicit package name at sudo line 21.
    Global symbol "$Detail" requires explicit package name at sudo line 21.
    Global symbol "%byUser" requires explicit package name at sudo line 21.
    BEGIN not safe after errors--compilation aborted at sudo line 26.
    
  3. まずは、"lib/Logwatch.pm"を修正しましょ。
  4. # diff old/lib/Logwatch.pm new/lib/Logwatch.pm
    83,86c83,86
    < our @ISA = qw{Exporter};
    < our @EXPORT;
    < our @EXPORT_OK;
    < our %EXPORT_TAGS = (sort => [qw(CountOrder TotalCountOrder SortIP)],
    ---
    > my @ISA = qw{Exporter};
    > my @EXPORT;
    > my @EXPORT_OK;
    > my %EXPORT_TAGS = (sort => [qw(CountOrder TotalCountOrder SortIP)],
    
  5. つぎに、"scripts/services/sudo"を修正しましょ。
  6. # diff old/scripts/services/sudo new/scripts/services/sudo
    21c21
    < our ($Debug, $Detail, %byUser);
    ---
    > my ($Debug, $Detail, %byUser);
    
  7. 再度実行しましょ♪

不具合点の確認

  1. な訳で、細かな所がエラーになるだすー。なので下記のファイルを全部「perl -c xxx」とやってエラーが出ないことを確認しましょ。修正方法は、個別に書けないので自力で行ってくださいな。(って、作者に公開していいか聞いてみよかな)
  2. # ls /etc/log.d/scripts/services
    
    ./ ftpd-messages* named* rt314* syslogd*
    ../ ftpd-xferlog* pam* samba* tac_acc*
    afpd* identd* pam_pwdb* secure* up2date*
    arpwatch* in.qpopper* pam_unix* sendmail* vpopmail*
    automount* init* pluto* smartd* zz-disk_space*
    autorpm* ipop3d* portsentry* sshd* zz-fortune*
    cron* kernel* proftpd-messages* sshd2*
    dhcpd* modprobe* qmail* stunnel*
    exim* mountd* raid* sudo*
    
  3. 修正する場合、エラー内容と対処が判らない場合は、ここのサイトが良いです「perl5.005 の邦訳

悪いことしているやつのログ

メールの実行結果は、セキュリティの関係上ちょっと見せられませんが、ちょっと一部だけ。

これ Logwatch を導入した3日目位に報告された内容ですが、第三者による中継をしようとした sendmail のログ結果を収集し報告されたメールなんです。第三者中継は禁止してあるので対した問題ではありませんが、日ごろから下記の様なのを監視しているだけも良いことだと思います。しかし頭にきます。

Relaying denied:
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to dross@comset.net: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to drouse@comcast.net: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to drs@frankwu.com: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to drummer@accesstoledo.com: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to ds@cyberhotline.com: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to eastridg@hutchtel.net: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to eb@airbridge.net: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to eb@notestation.com: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to ebay@curleyco.com: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to ebay@trianglecables.com: 6 Times(s)
   From 66-2-78-1-oc-03.cvx.algx.net [66.2.78.1] to ebony@notions-marketing.com: 6 Times(s)

実際のログ(/var/log/message)を参照してみましょ。いろんな悪さしてますねー

Mar 17 22:42:36 ns sendmail[21736]: h2HDgY321736: ruleset=check_rcpt, arg1=, relay=66-2-78-1-oc-03.cvx.algx.net [66.2.78.1], reject=550 5.7.1 ... Relaying denied. Please check your mail first.
Mar 17 22:42:37 ns sendmail[21736]: h2HDgY321736: ruleset=check_rcpt, arg1=, relay=66-2-78-1-oc-03.cvx.algx.net [66.2.78.1], reject=550 5.7.1 ... Relaying denied. Please check your mail first.
Mar 17 22:42:38 ns sendmail[21736]: h2HDgY321736: ruleset=check_rcpt, arg1=, relay=66-2-78-1-oc-03.cvx.algx.net [66.2.78.1], reject=550 5.7.1 ... Relaying denied. Please check your mail first.

でもって IP から、whois のデータベースを参照して、相手がどんなのかもみておきます。頻度が激しいようでしたら、相手の上位管理者に警告文を出しましょう。(IPドメインサーチ検索

OrgName: Internet Allegiance, Inc. 
OrgID: IALG 
Address: 1950 Stemmons Freeway Suite 3026 
City: Dallas 
StateProv: TX 
PostalCode: 75207 
Country: US 

NetRange: 66.2.0.0 - 66.3.255.255 
CIDR: 66.2.0.0/15 
NetName: IALG-ALGX-5 
NetHandle: NET-66-2-0-0-1 
Parent: NET-66-0-0-0-0 
NetType: Direct Allocation 
NameServer: NS1.ALGX.NET 
NameServer: NS2.ALGX.NET 
Comment: ADDRESSES WITHIN THIS BLOCK ARE NON-PORTABLE 
RegDate: 2000-08-23 
Updated: 2001-03-28 

TechHandle: II21-ARIN 
TechName: Internet Allegiance, Inc. 
TechPhone: +1-800-459-8496 
TechEmail: Data-NOCC@allegiancetelecom.com

# ARIN WHOIS database, last updated 2003-03-17 20:00 
# Enter ? for additional hints on searching ARIN's WHOIS database. 
[..戻る..]