ぐぬぬ、postfixで踏み台にされたお話
メールサーバが踏み台にされました。一応ありきたりに設置方法を検索して設定したのですが、はじめてなのが仇になったのか、ログを見る限り踏み台にされています。そこで、困ったのが、踏み台にされたらやることです。今回学んだことをピックアップします。なんせ踏み台防止はあるけど、踏み台にされた時の対処となると、検索にヒットあんまししないんですもの...
1.postfixをとりあえず止める
慌てず騒がずメールサーバを止めます。サーバの再起動は不要です。もう慌ててしちゃったかもしれませんね。私がそうでした...再起動してもメールサーバは踏み台なので、アクセスできたらまた踏まれるだけです...またサーバの再起動は他のサービスに影響がでてしまうという2次災害を引き起こしているかもしれません...私は引き起こしました...node.jsが止まってた。
2.ログを確認する
ログを見れば、通常送受信しないであろうメアドが見れると思います。そうそれが踏み台にされたってこと。
3.ログの見方を学ぶ
そんなに時間はかかりません。ログの見方はここが参考になります。
で、「LOGIN」がメール処理開始のログ、「status=sent」が送信成功のログ...つまりスパムに加担してしまったって事、陳謝。
tail -10000 /var/log/maillog | grep "LOGIN"
tail -100 /var/log/maillog | grep "sent"
こんな感じで、ログを遡ってgrepかけると分る。
4.どのメールアカウントが踏み台にされているか調べる
スパムは必ずといっていい程、届かないメールを送信しまくっています。つまり、お宅から送信されたメールは届けられないよ、という親切な先輩方からのメールがそのアドレス宛に届いているはずです。私はhotmail先輩からメールが一杯届きました。
5.そのメルアカのパスワードを変更する
私の場合、緩いパスワードを設定していました...これを気に難解なパスワードに変えました。つっこまれる生き様をすると、神様は見ているんですね。パスワードの変更の仕方は、ここでは記述できません。エンジニアの設定の仕方で各々違うと思う
6.メールのキューを確認する
スパムは大量に送信を行うプログラムなので、僅かな時間でもキューが溜まっているはずです。そして、キューは実行待ちのメールなので、postfixを再開した瞬間に送信されてしまいます。なので、キューは削除が必要です。
mailq | head
mailq | tail
mailq | wc -l
上記の様に、キューを確認してみましょう。
7.キューの削除
以下が参考になります。私の場合は運用前でしたので、全削除をしました。
[Linux][postfix] postfix にてキューにたまったメールの削除方法
postsuper -d ALL
8.postfixを起動しましょう。
それではメールのキューが無いことを確認し、postfixを起動しましょう。
mailq | head
-> Mail queue is empty
/etc/init.d/postfix start
9.メールの送受信をテスト
最後に送受信テストです、踏み台にされたメールアカウントのパスワードが変わったので、テストします。他のアカウントもチェックして2重チェックできると尚良いですね。
10.メールサーバを立てたら運用期間を設ける
これはスパムに踏み台にされちゃうようなメールサーバなのか逆にスパムにチェックしてもらう方法ですね。こういうのは大事だと思いました。今回初めて個人的に設置しており実運用にいたってなかったのが幸いしました。設置して1ヶ月も経たないで起きた出来事でした。知り合いにはよく「そういう事はあるんだよ」と、聞かされていましたが、舐めていました。ゆとりある運用ならば、メールサーバは新設後2,3ヶ月は本稼働しない方がいいかもしれませんね。
11.事故を調査する
これはもうログの見方を覚えれば、ログから事故った時刻と、事故っていた時間が割り出せますね。原因の踏み台アカウントも特定できます。ほんとうにごめんなさいでした。
1. 大量にメールを送受信しているアカウントを発見する
tail -20000 /var/log/maillog | grep "sent"
2. そいつのログインアタック受けた形跡を見る例
tail -20000 /var/log/maillog | grep "LOGIN authentication failed"
まぁ、常にログインアタックは受けてるんですけどね。
3. 会社のケースだと参考にならないけどLOGINした形跡をみるコマンド例
tail -20000 /var/log/maillog | grep "Login: user="
これで乗っ取られて、いつログインしたかわかる。
うーん、あんましいい説明じゃないけど、意味が分かる人なら上記をこねくり回して探せると思う...
赤字や、コマンドオプションは適度に書き換えてね。ログも、被害大きいと別ファイルにローテートされてる場合があるからね!!