Postfixログ解析ツールpflogsummを導入する

2018年5月2日

普段ハニーポットの運用をメインに行っているのですが,このブログのように少し脱線してWebサーバやメールサーバの運用も趣味の範囲で行っています.ハニーポットだけでなくこれらの運用を行う際にも,セキュリティを学んでいる身として極力セキュリティには気を使っているつもりです.

メールサーバに関しても,そう簡単に踏み台として利用されては困ります.そこで踏み台とならない設定だけでなくメールサーバのログを分析し,毎日のSummaryを出力してくれるpflogsummというツールを導入します.

このツールを導入することで,どの宛先への通信が多いのか,不正アクセスの兆候はないかといったことをチェックすることができます.

pflogsummとは

pflogsummとは非常にシンプルな設計のPerlスクリプトです.日々蓄積されるメールサーバ(Postfix)のログを集計・分析し,そのSummaryを出力することができます.

pflogsummを利用することで,

  • どの宛先へのメールが多いのか
  • バウンスメールの有無
  • 不正アクセスの兆候
  • 時間別のトラフィック
  • サイズの大きいメールの宛先

などのチェックを行うことができます.

pflogsummの導入

pflogsummのインストールと実行スクリプト作成

# yum install postfix-pflogsumm
# vim pflogsumm-report.sh
#!/bin/bash

yesterday=$(date "+%Y%m%d" -d "1 day ago")
MAILLOG=`mktemp`
for log in `ls /var/log/maillog-*|sort`
do
    cat $log >> $MAILLOG
done
cat /var/log/maillog >> $MAILLOG
REPORT=`mktemp`

# Option
# -d <today | yesterday> : today, yesterday log analysis.
# --problems_first : Warning display.
# --verbose_msg_detail : More detail display.
# --mailq : Quit after execution.
# -h 10 : Host and Domain top 10.
# -u 10 : User top 10.

pflogsumm --problems_first --verbose_msg_detail --mailq -h 10 -u 10 -d yesterday $MAILLOG > $REPORT
cat $REPORT | mail -s "[Dailylog] Postfix log summaries on the ${yesterday} in `uname -n`" 任意のメールアドレス
rm -f $MAILLOG $REPORT

exit 0

# chmod 744 pflogsumm-report.sh

pflogsummの動作確認とcronへの登録

# ./pflogsumm-report.sh

上記のコマンドを実行し,以下のようなメールが届くことを確認します.

正しくメールが届くことが確認できたら,毎日自動実行されるようにcronに登録を行い,分析結果をメールするように設定します.

# vim /etc/crontab
0 1 * * * root bash /root/pflogsumm-report.sh    ←【追記】

# systemctl restart crond

pflogsummの使い方

pflogsummの書式

pflogsummコマンドの書式は以下のとおりです.

書式:pflogsumm (オプション) (メールログ)

(オプション)にはいつのログ分析を行うのかといったことや,ホストやユーザ,ドメインの出力数を指定することができます.(メールログ)には分析対象のメールログが保存されているディレクトリを指定します.

pflogsummのオプション

pflogsummには色々なオプションがありますが,上記のシェルスクリプトで使用しているオプションについて簡単にまとめます.

Option Description
-d <today | yesterday> 今日もしくは昨日のレポートを出力
–problems_first 問題のあるレポート(bounces, defers, warningsなど)を通常のレポートの前に出力
–verbose_msg_detail message deferral detailの集計において,bounce, rejectの原因の同一性までも細かく出力
–mailq コマンドの最後にmailqコマンドを表示
-h ホスト,ドメイン名の集計をTOPに限定.0なら限定しない
-u ユーザの集計をTOPに限定.0なら限定しない

おわりに

これでpflogsummの導入は以上になります.
pflogsummはかなり前から存在しているツールとなっており,正直今更感がすごいです^^;(笑)しかし個人でサーバの運用・保守を行っているとさすがに毎日すべてのサービスのログをチェックすることは不可能です.そこでこのような自動解析ツールを用いてログ分析を自動化することで,効率的にサーバの監視を行うことができます.

出来る限り自動化できる部分は自動化し,浮いた時間をハニーポットのログ分析やサイバー攻撃手法の検証に当てられたらいいですね^^

参考文献

https://linux.die.net/man/1/pflogsumm
https://centossrv.com/postfix-pflogsumm.shtml
https://ex1.m-yabe.com/archives/2640