メールボックスを持つ数百人のローカルユーザーがいるLinuxボックスでPostfixを実行しています。
Postfixサービスへのすべての着信接続(SMTP)を監視する方法はありますか?つまり「Postfixサーバーに接続されたばかりのIPアドレスx.x.x.x」と「切断されたばかりのIPアドレスy.y.y.y」のライブストリーム?
すべての着信接続を監視して、同じIPアドレスがユーザーに複数のスパムを送信しようとしている、またはリレーしようとしている傾向を探すことができるようにします(オープンリレーではありません!)。
IPアドレスがリストされているすべての接続と切断をテキストファイルまたはsyslogにダンプするだけで十分です。それとも、別のより良い方法がありますか?
ありがとう!
postfixは、接続が着信すると各接続をログに記録し、ログ行は次のようになります。
Jul 8 16:25:15 swiss postfix/smtpd[11127]: connect from some.Host.or.other [192.0.2.1]
だからあなたはできる tail -F
ログファイル(私のシステムでは/var/log/mail.log
)、grep
を使用して必要な回線をフィルタリングし、ライブトラフィックを監視します。
上記のポスターは近いです。
tail
を使用すると、ファイルの最後の10行を確認できます。 -f
スイッチを使用すると、メールログファイルに追加された新しい行を表示できます。
cd /var/log
tail -f maillog
Ctrl+c 脱出する。
これはすでに/var/log/maillog
というファイルに書き込まれているので、特定の情報を抽出する場合を除いて、別のファイルを作成する理由がわかりません。
メールログだけを読みたい場合は、お気に入りのエディターを使用するか、次のようにします。
less maillog
を打つ Enter (return)キーを押すと、ファイルが一度に1行下に移動します。または、 Page Down 全画面移動のキー。
Hヒット q キーはあなたを逃れます。
私は次のことが役に立ちました:
tail -f maillog | grep connect
しかし、必要に応じて、切断または特定のIPをgrepできますか?
これにより、mail.logファイル内のすべてのIPの数がわかるため、迷惑なIPを特定できます。
grep connect /var/log/mail.log |grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | sort | uniq -c | sort
Ipsetを使用してブラックリストを作成し、ipテーブルに追加します
ブラックリストの作成:
ipset create <nameof blacklist> hash:ip (or net) -hashsize 4096
ipset add <nameof blacklist> <IP or network/nn>
ブラックリストと一致してドロップ:
iptables -I INPUT -m set --match-set <nameof blacklist> src -j DROP
iptables -I FORWARD -m set --match-set <nameof blacklist> src -j DROP
おそらくこれをスクリプト化して自動化することができます。