2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

logcheckでログ監視!

logcheckは、随分古くから有るログ監視ツールだ。巷では最近、logsentryという名でも知られているみたいだ。Debian deb Packageには標準で用意されている。ここが ダウンロードサイト となる。
単純なシェルプログラムだが非常に便利なセキュリティツールだと思う。俺はこのツールを自鯖全てに入れてある。このツールの機能は、/var/log内のログはもちろんのこと、九龍で指定すればそのログを定期的にメール配送してくれるシェルスクリプトである。ほんと、簡単な機能だがなかなか便利な相棒である。今更だが、改めてここでlogcheckのインストール方法を説明する。


1.logcheckのインストール
1)ソースのゲット

[root@ns ~]# cd /usr/local/src/
[root@ns src]# wget http://jaist.dl.sourceforge.net/sourceforge/sentrytools/logcheck-1.1.1.tar.gz
–21:13:23– http://jaist.dl.sourceforge.net/sourceforge/sentrytools/logcheck-1.1.1.tar.gz
=> `logcheck-1.1.1.tar.gz’
Resolving jaist.dl.sourceforge.net… 150.65.7.130
Connecting to jaist.dl.sourceforge.net|150.65.7.130|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 30,267 (30K) [application/x-gzip]

100%[==================================================>] 30,267 –.–K/s

21:13:32 (1.04 MB/s) – `logcheck-1.1.1.tar.gz’ saved [30267/30267]

2)ソースの展開
[root@ns src]# tar zxvf logcheck-1.1.1.tar.gz

logcheck-1.1.1/
logcheck-1.1.1/src/
logcheck-1.1.1/src/logtail.c
logcheck-1.1.1/systems/
logcheck-1.1.1/systems/sun/
logcheck-1.1.1/systems/sun/logcheck.sh
logcheck-1.1.1/systems/sun/logcheck.hacking
logcheck-1.1.1/systems/sun/logcheck.ignore
logcheck-1.1.1/systems/sun/logcheck.violations
logcheck-1.1.1/systems/sun/logcheck.violations.ignore
logcheck-1.1.1/systems/sun/README
logcheck-1.1.1/systems/freebsd/
logcheck-1.1.1/systems/freebsd/logcheck.sh
logcheck-1.1.1/systems/freebsd/logcheck.hacking
logcheck-1.1.1/systems/freebsd/logcheck.ignore
logcheck-1.1.1/systems/freebsd/logcheck.violations
logcheck-1.1.1/systems/freebsd/logcheck.violations.ignore
logcheck-1.1.1/systems/freebsd/README
logcheck-1.1.1/systems/linux/
logcheck-1.1.1/systems/linux/logcheck.sh
logcheck-1.1.1/systems/linux/logcheck.hacking
logcheck-1.1.1/systems/linux/logcheck.ignore
logcheck-1.1.1/systems/linux/logcheck.violations
logcheck-1.1.1/systems/linux/logcheck.violations.ignore
logcheck-1.1.1/systems/linux/README.linux
logcheck-1.1.1/systems/linux/README.linux.IMPORTANT
logcheck-1.1.1/systems/generic/
logcheck-1.1.1/systems/generic/logcheck.hacking
logcheck-1.1.1/systems/generic/logcheck.ignore
logcheck-1.1.1/systems/generic/logcheck.sh
logcheck-1.1.1/systems/generic/logcheck.violations
logcheck-1.1.1/systems/generic/logcheck.violations.ignore
logcheck-1.1.1/systems/generic/README
logcheck-1.1.1/systems/hpux/
logcheck-1.1.1/systems/hpux/logcheck.hacking
logcheck-1.1.1/systems/hpux/logcheck.ignore
logcheck-1.1.1/systems/hpux/logcheck.sh
logcheck-1.1.1/systems/hpux/logcheck.violations
logcheck-1.1.1/systems/hpux/logcheck.violations.ignore
logcheck-1.1.1/systems/hpux/README.HPUX
logcheck-1.1.1/systems/digital/
logcheck-1.1.1/systems/digital/README
logcheck-1.1.1/systems/digital/logcheck.hacking
logcheck-1.1.1/systems/digital/logcheck.ignore
logcheck-1.1.1/systems/digital/logcheck.sh
logcheck-1.1.1/systems/digital/logcheck.violations
logcheck-1.1.1/systems/digital/logcheck.violations.ignore
logcheck-1.1.1/systems/bsdos/
logcheck-1.1.1/systems/bsdos/logcheck.hacking
logcheck-1.1.1/systems/bsdos/logcheck.ignore
logcheck-1.1.1/systems/bsdos/logcheck.sh
logcheck-1.1.1/systems/bsdos/README.bsdi
logcheck-1.1.1/systems/bsdos/logcheck.violations
logcheck-1.1.1/systems/bsdos/logcheck.violations.ignore
logcheck-1.1.1/systems/bsdos/logcheck.violations.ignoret
logcheck-1.1.1/CHANGES
logcheck-1.1.1/CREDITS
logcheck-1.1.1/INSTALL
logcheck-1.1.1/LICENSE
logcheck-1.1.1/Makefile
logcheck-1.1.1/README
logcheck-1.1.1/README.how.to.interpret
logcheck-1.1.1/README.keywords

[root@ns src]# chown -R root.root logcheck-1.1.1

3)logtailのコンパイル&リンク
[root@ns src]# cd logcheck-1.1.1
[root@ns logcheck-1.1.1]# make linux

make install SYSTYPE=linux
make[1]: Entering directory `/usr/local/src/logcheck-1.1.1′
Making linux
cc -O -o ./src/logtail ./src/logtail.c
./src/logtail.c: In function `main’:
./src/logtail.c:51: warning: return type of ‘main’ is not `int’
Creating temp directory /usr/local/etc/tmp
Setting temp directory permissions
chmod 700 /usr/local/etc/tmp
Copying files
cp ./systems/linux/logcheck.hacking /usr/local/etc
cp ./systems/linux/logcheck.violations /usr/local/etc
cp ./systems/linux/logcheck.violations.ignore /usr/local/etc
cp ./systems/linux/logcheck.ignore /usr/local/etc
cp ./systems/linux/logcheck.sh /usr/local/etc
cp ./src/logtail /usr/local/bin
Setting permissions
chmod 700 /usr/local/etc/logcheck.sh
chmod 700 /usr/local/bin/logtail
chmod 600 /usr/local/etc/logcheck.violations.ignore
chmod 600 /usr/local/etc/logcheck.violations
chmod 600 /usr/local/etc/logcheck.hacking
chmod 600 /usr/local/etc/logcheck.ignore
Done. Don’t forget to set your crontab.
make[1]: Leaving directory `/usr/local/src/logcheck-1.1.1′


2.設定
1)logcheck.shの編集

俺の場合、secureとmaillogの両方のログのみmail配送したかったので、以下のようにした。
[root@ns logcheck-1.1.1]# vi /usr/local/etc/logcheck.sh
省略
# Linux Red Hat Version 3.x, 4.x
#$LOGTAIL /var/log/messages > $TMPDIR/check.$$
$LOGTAIL /var/log/secure >> $TMPDIR/check.$$
$LOGTAIL /var/log/maillog >> $TMPDIR/check.$$

#$LOGTAIL /var/log/havp/havp.log >> $TMPDIR/check.$$
省略

2)定期的に実行させる設定
■ 一時間に一度実行させたい設定
[root@ns logcheck-1.1.1]# cd /etc/cron.d
[root@ns cron.d]# vi logcheck

# /etc/cron.d/logcheck: crontab entries for the logcheck.sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
2 * * * * root if [ -x /usr/local/etc/logcheck.sh ]; then nice -n10 /usr/local/etc/logcheck
.sh; fi
# EOF

■ 一日に一回実行させたい設定
もしくは、実行スパンが長くて良いならcron.dailyにぶっこむ。

[root@ns logcheck-1.1.1]# cd /etc/cron.daily
[root@ns cron.daily]#vi logcheck

#!/bin/sh
/usr/local/etc/logcheck.sh

注:Debianの場合は、赤字の部分が、
su -s /bin/bash -c “/usr/sbin/logcheck” logcheck
となるので気をつけること。

[root@ns cron.daily]#chmod 755 logcheck


3.単に実行するだけなら

[root@ns logcheck-1.1.1] /usr/local/etc/logcheck.sh


4.サーバにunixmailコマンドが無いときの代替え設定

以下、基本的にはsendmailを使ってメール配信する。濃い青部分の如く訂正する。
[root@ns logcheck-1.1.1] vi /usr/local/etc/logcheck.sh
省略
# Linux, FreeBSD, BSDI, Sun, etc.
#MAIL=mail
MAIL=sendmail
省略
umask 077
rm -f $TMPDIR/check.$$ $TMPDIR/checkoutput.$$ $TMPDIR/checkreport.$$
if [ -f $TMPDIR/check.$$ -o -f $TMPDIR/checkoutput.$$ -o -f $TMPDIR/checkreport.$$ ]; then
echo “Log files exist in $TMPDIR directory that cannot be removed. This
may be an attempt to spoof the log checker.” \
| $MAIL -t “$HOSTNAME $DATE ACTIVE SYSTEM ATTACK!” $SYSADMIN
exit 1
fi
省略
# If there are results, mail them to sysadmin

if [ “$ATTACK” -eq 1 ]; then
cat $TMPDIR/checkreport.$$ | $MAIL -t “$HOSTNAME $DATE ACTIVE SYSTEM ATTACK!” $SYSADMIN
elif [ “$FOUND” -eq 1 ]; then
cat $TMPDIR/checkreport.$$ | $MAIL -t “$HOSTNAME $DATE system check” $SYSADMIN
fi
省略

以上

コメント