2013年9月5日木曜日

メールサーバースパム被害

マジ散々な一週間だった...。

それは一件のユーザーからの問い合わせで発覚。
「送ったメールがなかなか先方に届かない」との問い合わせだった。

メールサーバー(ゲートウェイ)のモニターグラフを見て愕然。毎分700通ほどのメールが着信している。
しかも外部からスパムが大量に送りつけられているかと思いきや、内側から配信しようとしている状況だ。

すぐさまLAN内のサーバーで大量のメールを発信しているサーバーを特定しメールのログを確認。ログも膨大なサイズに肥大していて閲覧するのも辛いほど。

サーバーはSMTP-AUTHのみ接続を許可され、不正中継をしていないことは確認できたのでSMTPユーザーのセッションを洗い出してみる事に。
以下のコマンドで"smtp-auth"で接続したユーザーアカウントだけ抽出して回数順にソートして並べてみる。

# cat /var/log/maillog |grep -I smtp_auth |grep -I user |awk '{print $11}' |sort |uniq -c |sort -n

ログのローテーションから10時間ほど経っていたのだが、普通多くても数回程度のSMTP接続が、1つのユーザーアカウントだけ数分おきのインターバルで500回近く接続している。
そのアカウントに的を絞ってIPを調べてみると、市内のフレッツ光ユーザーなのに接続しているIPアドレスは全て"ロシア"、"ウクライナ"や"ベラルーシ"など旧ソ連諸国や東ヨーロッパからの接続。

緊急的に該当ユーザーアカウントのパスワードを変更しログを注視して見ているとそれ以降"smtp-auth"接続エラーで配信されることはなくなった。
問題なのはユーザーアカウントがどこで盗まれたのかなのだが、調査してもサーバーから漏れた痕跡はないし、それ以外のユーザーアカウントが利用されていないので、ユーザーのPCがフィッシング等にあった可能性が高いと判断している。

その後ゲートウェイ(スパム、ウイルスフィルタ)に詰まった4万数千のキューと、該当ユーザーが利用していたメールサーバー内に拒否されて配送待ちになっていた45万ほどのキューの処理...。

正直そんな大量なキューを分類し削除処理していては時間がかかりすぎるため、一旦詰まったキューのディレクトリ丸ごと切り離し、空のキューフォルダと差し替えて送信サーバーの復旧を計る。

問題なのはそこからで、分離したキューを掃除して正常なメールだけを再送しなければならないのだが、Postfixで運用しているメールゲートウェイはどうにかなりそうなものの、アカウントを盗られた該当サーバーはQmailは運用されていたためキューの管理が煩雑な上45万件という膨大なキュー...。

Postfixのキューは"incoming"ディレクトリで一元管理されているため意外と処理が楽なのだが、Qmailの場合queue以下に"info","local","mess","remote"(他にもいくつか)などのディレクトリに別れ、それぞれに情報が格納されているためディレクトリ間の情報がおかしくなるとqmailのログにこれまた大量のエラーが吐き出されるようになる。

壊れたqueueを修復してくれる"queue-fix"( http://www.netmeridian.com/e-huss/queue-fix.tar.gz )なるツールも存在したので試してみたのだけれど、逆にqmailのシステムがエラーコード65を吐いて出て全くメールの送信が出来なくなってしまったため、やむなくqueue以下のフォルダを全て削除&新規作成して復旧させた。

#  cd /var/qmail/
#  mv queue queue.orig
#  mkdir queue
#  chown qmailq:qmail queue ; chmod 750 queue
#  cd queue
#  mkdir mess
#  for i in `seq 0 22`; do mkdir mess/$i ; done
#  for d in info intd local remote todo ; do cp -r mess $d ; done
#  chmod -R 750 mess todo
#  chown -R qmailq:qmail mess todo
#  chmod -R 700 info intd local remote
#  chown -R qmailq:qmail intd
#  chown -R qmails:qmail info local remote
#  mkdir bounce pid lock
#  cp -a ../queue.orig/lock/* lock/
#  /etc/init.d/xinetd start
#  /etc/init.d/qmail start
#  chown qmailq:qmail pid lock
#  chown qmails:qmail bounce
#  chmod 700 bounce/ pid/
#  chmod 750 lock

今回のスパム送信者は数通の配信で接続先(IP)を変え、本文もランダムに変えるし送信者もでたらめなアドレスを生成させるといった手の込みようで、一定のキーワード検索では抽出が困難になるようなメールを生成していた。

Qmailはキュー管理用の様々なツール("qmail" "キュー" "削除"等でググってみた)を使ってみたけどあまりの時間のかかりように途中であきらめました。

色んな国から大量の接続を経由して配信しているって事はかなりのPCが踏み台にされてるんだろうなぁ...。一つのIPからだとたいした数のスパムを配信してないのでまったく気付かない人も多いと思う。orz

結局今回は丸3日ほど処理作業に振り回されました。なんだか段々手強くなっていくなぁ...。(T_T)
ホントいい加減にして欲しい。

0 件のコメント :

コメントを投稿