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
省略
以上
コメント