logsurfer で SYSLOG を監視する

  Linux

DFN-CERT: Logsurfer Homepage
logsurfer-1.5b.tar

LogSurfer / LogSurfer+ : Real-Time Log Monitoring
logsurfer+ なるものもあったが、どっちがいいのかよくわからんので、オリジナルで始めることにする。
“+” が区切り文字になって、PuTTY とかの Terminal でうまくコピペできんからいけすかん。 (´・д・`) ヤダ


インストール

cd /usr/local/src/
wget ftp://ftp.cert.dfn.de/pub/tools/audit/logsurfer/logsurfer-1.5b.tar
tar xvf logsurfer-1.5b.tar
cd logsurfer-1.5b/
./configure \
–prefix=/usr/local/logsurfer-1.5b \
–with-etcdir=/usr/local/logsurfer-1.5b/etc
make
mkdir -p \
/usr/local/logsurfer-1.5b/man/man1 \
/usr/local/logsurfer-1.5b/man/man4 \
/usr/local/logsurfer-1.5b/bin \
/usr/local/logsurfer-1.5b/etc
make install
cp contrib/start-mail/start-mail /usr/local/logsurfer-1.5b/bin/

動作検証

動くかテストしてみる。

cat << 'EOF' > /usr/local/logsurfer-1.5b/etc/logsurfer.conf
‘.*’ – – – 0 exec “/bin/echo $0”
EOF

/usr/local/logsurfer-1.5b/bin/logsurfer /var/log/messages
# /var/log/messages の内容が標準出力に表示されれば ok。

フィルタできるかテストしてみる。

cat << 'EOF' > /usr/local/logsurfer-1.5b/etc/logsurfer.conf
‘crond\(pam_unix\)\[[0-9]+\]: session (opened|closed) for user root’ – – – 0 ignore
‘.*’ – – – 0 exec “/bin/echo $0”
EOF

/usr/local/logsurfer-1.5b/bin/logsurfer /var/log/messages
# crond ログ以外の内容が標準出力に表示されれば ok。


実用編

全ての SYSLOG を /var/log/syslog に集める。

printf “# Log all syslog messages\n*.*\t\t\t\t\t\t\t/var/log/syslog\n” >> /etc/syslog.conf

放っておくとログが溢れるので、ログローテートの対象にする。

ed /etc/logrotate.d/syslog << EOF
%s/\/var\/log\/cron/\/var\/log\/cron \/var\/log\/syslog/
wq
EOF
-/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
+/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron /var/log/syslog {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

ログファイルを作成し、一般ユーザーが読めないようにパーミッションを設定する。

touch /var/log/syslog
chmod 600 /var/log/syslog

syslogd を再起動し、ログが溜まっているか確認する。

/etc/init.d/syslog restart
tail -f /var/log/syslog