さぽろーぐ さぽろーぐ

ブロックリストに登録されて解除されるまで

FTPパスワードが奪われて何が起こったのか
シェア
多くのお客様が利用する共用サーバーがあっという間に迷惑(スパム)メール配信マシーンとなり、ブロックリストに登録されたお尋ね者となり、外部にメールを送信しようとしても、先方から締め出しを食らってしまう……。

ホスティング事業者にとっては「あるある経験」のひとつですが、その時期同じ仕様のサーバーが立て続けに被害に会い、対応は大わらわとなりました。

スパムメールデータベースからの登録を解除することに成功したものの、原因が残っていれば、またすぐに登録されてしまうのです。

金曜日~監視チームからの報告

正月休みが明けて間もない1月のある金曜日、当社内の24時間監視業務を委託しているチームより、「メールキュー数閾値超え」のアラートについて報告がありました。

メールキューというのは、メールを送信しようとしたけれども「一時的に先方のメールサーバーに接続ができない」などの理由で、処理待ちになっているものです。メールキューに残るとライフタイム(生存時間)内であれば、時間を置いて再送を試みる仕組みです。

外部配信用のメールキューが多く溜まったときの代表的な弊害は、メールソフト上では「送信済み」として扱われているのに、外部サーバーに届くのが遅くなることです。メールキューの大量滞留が原因で「送ったつもりのメールがまだ届かない」ということが起こります。

今回監視チームから届いた連絡は以下のようなものでした。

件名:メールキュー滞留アラート検知のご連絡 hardware_name 01/13
レンサバご担当者様

お疲れ様です。
運用技術○○です。

本日(01/13) 下記対象サーバにおきまして、
メールキュー滞留アラートを検知し、復旧対応を実施いたしました。

▼ 対象サーバ
hardware_name (***.***.***.***)

▼ 対象コンテナ
VEID XXX

▼ 検知時刻
19:01 ~ 19:26

▼ メールキュー最大滞留数
8332 (19:20検知)

滞留しているメールの大半は、
Fromが「***@****com」及び「***@****.co.jp」でした。

ログを確認したところ、下記phpファイルへのPOSTが多数見受けられましたので、
フローに従いファイルの移動にて対応しております。

▼ 対象ファイルと移動先
———————————————————————–
/var/www/vhosts/****com /httpdocs/css/css.php
→ /home/XXX/status/20170113/****com _css_css.php へ移動

/var/www/vhosts/**** co.jp/httpdocs/mail/stats34.php
→ /home/XXXstatus/20170113/****.co.jp_mail_stats34.php へ移動
———————————————————————–

上記対応後、対象ドメインのメールキューを削除(qmail-remove)し、
メールキューの滞留が解消していることを確認しております。

以上です。
よろしくお願いいたします。

その日私は休みでした。金曜の午後、在勤していたスタッフでアラート検知直後に、上記のサーバー以外にも共用サーバーの複数台が同じIPアドレスからFTP経由で侵入されていることを確認しました。そしてFTPパスワードの変更、問題のあるファイルの退避、そのアドレスからのアクセス制限などを行いました。

月曜~「一部のアドレス宛にメールが送れない」

週明け、共用サーバーをご利用のお客様から、「特定の外部メールアドレスにメールを送るとエラーで返信が帰ってくる」と問い合わせが来ました。エラー文面をそのまま送ってもらうと、著名なスパムブロックリストの1つに登録されているというものでした。

ホスティングサービス内で、スパム大量送信事件が起こると、サポートではスパムデータベース(ブロックリストとかブラックリストとも言われます)への登録の有無を確認します。複数のデータベースを同時にチェックしてくれるサイトがあるので、そういったサイトにアクセスをしてIPアドレスの状況を確認します。

監視部隊から連絡のあった金曜日にも確認や、解除申請はしていたはずなのです。しかし月曜は「登録データベースが減っていない、いや増えてる……」という事態でした。

スパムデータベースの中には「最新のスパム検知日時」を表示しているものがあり、見てみると、ほんの数時間前であることがわかりました。

ウェブシェルの再訪、プロセスの起動

サーバーを確認すると、金曜日に退避したもの以外にも、ファイルがアップロードされていました。

ふとあるphpにウェブからアクセスをしたところ、「Password:」と表示され、パスワード入力欄と「Submit(送信)」ボタンだけのある、シンプルな見覚えのある画面になりました。それは前月の12月末に当サービスのエンジニアの五島さんに相談して指摘もらった、「ウェブシェル」とか「FilesMan」とか呼ばれるツールでした。

ウェブシェルはファイルを置いたり消したり、特定のスクリプトを動かしたり、サーバー内の確認できるパーミッションをチェックしたり、いろいろなことができるツールです。ウェブシェルのログイン画面自体はphpでしたが、このツール経由でperlのスクリプトが起動され、海外のあちこちのサーバーに接続しメールを送っていました。

サーバー内でpsコマンドを発行し、apacheユーザーが起動しているものを絞り込むと見慣れないプロセスがあり、そのプロセスIDを見てみると外部のサーバーにメール送ろうとしている様子がわかるのです。まずはウェブシェルをはじめとした多数のファイルの削除、プロセスの停止を行いました。

# ps auwwx | grep apache
apache    1170  0.3  0.0  37568  5272 ?        Ss   17:37   0:00 bash
root      3397  0.0  0.0   7220   828 pts/2    S+   17:41   0:00 grep apac
apache    5943  7.1  0.0  39168  7444 ?        Ss   16:58   3:01 bash
apache   12462  0.0  0.9 384744 114320 ?       S    Jan17   0:01 /usr/sbin/httpd
apache   28774  0.2  1.1 514092 148408 ?       S    17:30   0:01 /usr/sbin/httpd
apache   29536  0.3  1.2 526756 160660 ?       S    17:31   0:02 /usr/sbin/httpd
apache   29539  0.5  1.1 514168 147928 ?       S    17:31   0:03 /usr/sbin/httpd
apache   29540  0.4  1.1 514080 148052 ?       S    17:31   0:02 /usr/sbin/httpd
apache   29587  0.5  1.2 528664 161492 ?       S    17:31   0:03 /usr/sbin/httpd

# lsof -p  5943
略
perl    5943 apache  341u  IPv4 435645043       0t0       UDP *:49949
perl    5943 apache  343u  IPv4 435644474       0t0       UDP *:38490
perl    5943 apache  349u  IPv4 435644538       0t0       UDP *:34805
perl    5943 apache  350u  IPv4 435645652       0t0       TCP shared_server_hostname:40504->hostname_overseas_A:smtp (SYN_SENT)
perl    5943 apache  351u  IPv4 435645543       0t0       UDP *:48242
perl    5943 apache  352u  IPv4 435645544       0t0       TCP shared_server_hostname:50628->hostname_overseas_B:smtp (ESTABLISHED)
perl    5943 apache  353u  IPv4 435644517       0t0       UDP *:60841
perl    5943 apache  354u  IPv4 435645387       0t0       UDP *:33342
perl    5943 apache  367u  IPv4 435645553       0t0       UDP *:36177
:

shared_server_hostnameは当社サーバーのホスト名、hostname_overseas_Aとhostname_overseas_Bは海外のサーバーのホスト名が入ります。

上記は「bash」というプロセス名で不正プロセスが起動していた例ですが、「httpd」だったり「mail」だったり「exif」だったりいろいろありました。この期間同様の現象に多くであったのです。問題のプロセスはkillコマンドで終了させました。

サーバーにはファイル名が 「**.php」でオーナーが「apache」というファイルはたくさん置かれていました。その他にも

・「data.bin」という空ファイルがある
・本来は画像ファイルを置くために作る「/images/」というディレクトリの直下にも「c0nfig.php」「db.php」というようなファイルがある

というように、怪しいファイルがあったので退避していきました。

またディレクトリのパーミッションについても、お客様に確認するまでもなく変更されているとわかりました。それらは適正なパーミッションに変更しました。

また、そもそも古くからのホームページも多く、htmlしか置いていない構成のドキュメントディレクトリに「.php」ファイルが置かれているようなサイトも多くありました。そういったドメインではPHPが無効になるように調整をしました。

細かいことはさておき、主な作業としては

1.FTPパスワード変更(金曜対応済)とその件をお客様へ連絡
2.不正ファイル退避
3.不正プロセス停止
4.メールキュー削除

そして、月曜の帰り際に、「これで少しは落ち着くかな」と思って、

5.スパム解除申請

をしてから帰りました。

火曜~スパムデータベースに再登録

次の日、出勤して異常がないかサーバーにログインしてみました。

残念ながら怪しいプロセスはまたフレッシュな顔をして起動していました。ずっとプロセスを見ていて、「10分に1度、怪しい2つの同名のプロセスのうちの1つの起動時刻が変わっている」と気づきました。規則的なのでcronでのスケジュール設定を疑うとビンゴでした。

/tmpディレクトリ以下にファイルが置かれていて、そのファイルを10分置きに実行するように、apacheユーザーでcronが設定されていました。

そしてサーバーのIPアドレスについては、朝は登録がなかったのに昼ごろにはスパムデータベースに再登録されました。

cron削除、プロセスの終了、/tmpに置かれていたファイルの削除、スパムの解除(再)申請を行いました。cron削除で本件は収束しましたが、プロセスの再発が怖かったのでその後、数日は毎朝様子を見ることにしました。

海外IPアドレスからのFTPをブロックする

数えてみたら、この1、2か月の間に監視部隊から受信した同様の事象によりアラートメールは10件ありました。サポート側で見つけた不正利用もありました。つまり、実際にはこの手の事件がもっと発生していたことになります。

このご時勢、こんなに手作業があるのかというくらいの手動作業をやった記憶があります。複数顧客のIDが乗っ取られ、多くの共用サーバーが被害に遭い、退避漏れしていたphpファイルもあって、問題が解決したと思って忘れたころに、退避漏れファイルを利用されたケースもありました……。

古い共用プランでパスワードが弱い傾向があり、古くからのお客様契約が存在するサーバー群については、セキュリティ面でのアップデートも難しく、ご契約者様がコンテンツの更新をする回数も減ってゆきます。五島さん達に依頼して、海外からのFTPアクセスを禁止するように設定を追加してもらうことにしました。

【コラム1】メールキューはすべて迷惑メールが原因か

最近は「不正に気づくための情報のひとつ」としてメールキューをチェックすることも多いのですが、必ずしも「メールキュー=‘不正な’メッセージの残骸」というわけではありません。

10年以上前によく見られたのは、大手プロバイダーのメールサーバー宛にメールを送ろうとしている際に、「今は先方のサーバーに接続できない」という理由で接続待ちになっているケースです。

当時は特別配信数が多いメールサーバーでもないのに、頻繁に特定のプロバイダー宛のメールが溜まっていました。また、「メーリングリストに一斉にメールを配信した」というような正常な利用用途でメールキューが増加することもあります。

インターネット常時接続もあたりまえになると、回線も早くなり、それぞれのサーバーの処理能力もあがりました。それに伴い、大規模プロバイダーの混雑などで起こるメール配信待ちは減りました。一方で望まれないスパムメールを受信する数もグンと増え、不正・いたずら行為も多くなっています。

不正利用の残骸としてのメールキューにはどういったものがあるか、例を挙げます。

・メールフォームのCGIを悪用したメール送信
・Fromアドレスを偽装した上で、メールボックスがいっぱいになっているメールアドレスや自動応答の有効なメールアドレスに対してメール送信をし、その返信を送信させるような迷惑メール配信(バックスキャッター)
・パスワードアタックからメールパスワードを取得し、正規の送信認証の手続きを経て、メールを大量に外部に送るスパム送信

最後のものは頻繁に見かける事例です。当サービスでも少なくとも月に数回はメールパスワード漏洩によるメールキュー削除、メールパスワード変更の対応を行っています。

なお、メールキューはあくまでも「メッセージの残骸」ですから、ちょこちょこと不正を行われる場合、メールキューには残っていないこともあります。あくまでも参考データとなります。

【コラム2】スパム解除申請いろいろ

スパムデータベースは世界中に無数にあります。そのため、ブロックリスト登録・解除ポリシーについても組織によっていろいろです。

・自動で登録し自動で解除するから解除申請は不要
・要申請、申請後は機械的に即解除
・要申請、申請後は人が介在して解除
・お金を払ったら登録をいち早く解除
・1回目は無料で解除、一定日時以内に再登録されたら有償で解除

などなど。

ただ、有償で解除するとしているスパムデータベースが直接の原因で、メール配信が弾かれたという事例について私個人は経験がありません。都合のいい解釈かもしれませんが、そういったサービスの利用率はさほど多くはないのでしょう。

不正メール送付の問題がなくなったと思われた段階で、スパムデータベースへの登録の有無を確認し、無償で解除申請ができるサービスに対してのみ申請を行っています。

英語のサイトでコメントを入力させるものについて、どれだけまともに読んでもらっているのかは不明です。当社としては出来る限りこちらの対応に忠実にコメントを入れるようにしています。個人的にはテンプレートのようなものは用意せず、人にメールを書くつもりで少なくとも嘘は書かないようにしています。

今回の事例だとこんなメッセージを送ります。文法とかは難アリかもしれません。ご容赦のほど。

Some certain FTP credentials at ***.***.***.*** were leaked and unwanted users uploaded some program files including the so-called web shell to the system. We changed the passwords, removed the suspicious files, stopped some spamming processes, and deleted the mail queues left over. Please delist ***.***.***.*** from your list.

「***.***.***.***」というIPアドレスをリストから消してほしいという内容です。経緯も書いています。FTPのパスワード漏洩、ウェブシェルと呼ばれるプログラムがアップロードされていたこと、対策としてFTPパスワードを変え、ファイルを消し、スパム送信プロセスを止め、残存していたメールキューを消したという報告です。

細かく報告したくなるのは、こちらが完璧に再発を防げていない可能性もあるからこそ、現状について正直で人間らしい文面を送っておきたいという事前の言い訳なのかもしれません。

実際に上記のような申請文面を送った翌日、不正なプロセスが10分置きに立ちあがるcronが設定されていることに気づき、cron設定を消した旨を送信しなおすことになりました。アーメン。

ピックアップフレーズ
「登録データベースが減っていない、いや増えてる……」

原因を取り除かないとストレスは増える一方。

青影青影
本件、年末にもかかわらず、ひっきりなしに問い合わせが入ってきていた事を覚えています。

ひとつひとつ、つぶしていっても、つぎからつぎへとメールが送信できないと問い合わせがきて、そこで新たに、サーバーに不正なファイル置かれている事、当たり前のようにブラックリストに登録された事を確認する。

その都度、不正ファイルの退避・調整、キューの削除、複数のブラックリストへの削除申請を行う。

お客様からは「メールが送信できないと仕事にならない」と何度も連絡をいただき、収束するのをお待ちいただく、いつ火をふいてもおかしくない状況までいったと思います。

これを機に同じサーバーに同居しているお客様の影響を受けない仕様のサーバーへ移行したお客様もいました。これもまた、正しい選択だと思います。

終わる日はくるのだろうかと思っていましたが収束し、落ち着きを取り戻しました。この対応をメインで行った、本作者の賜物です。
シェア
赤影
赤影
生まれも育ちもこちらの事業部というサポートスタッフです。平素より筆ペンとGimpを愛用しています。
おすすめの記事