はじめに
皆さん、"Duplicator"というWordPressプラグインをご存知でしょうか?。
このDuplocatorとは、WordPressのサイトを丸ごとコピー出来るプラグインです。
私もWordPressで複数のサイトを運営していますが、2018年の春に作ったばかりの別のサイトも実はDuplocatorを使ってこのサイトをコピーして作りました。
何故、サイトを丸ごとコピーする必要があるのか?という話ですが、現在自分が使っているWordPressのテーマ"Affinger4"の設定がとても大変だからなのでした。
AffingerはSEOにも非常に強く、何よりカスタマイズ性が高いのが特徴で、アフリエイトサイトから日記ブログ、企業系のウェブサイトなど、カスタマイズ次第でどんなウェブサイトでも作れる柔軟性とカスタマイズ性に優れたテーマです。
カスタマイズ性に優れたテーマであるが故に設定にもある程度の慣れと時間が掛かるのも悩みどころでもあるのですが、出来ない事を探すほうが難しいほどとても便利なテーマだけに、立ち上げたばかりのサイトを構築するのにとても時間が掛かるのです。
最初はバカ正直にサイトを立ち上げる度にイチから設定をしていたのですけど、最近ではもっと簡単な方法でサイトを立ち上げる(コピーする)方法は無いものか?と探していた時に出会ったのがDuplicatorでした。
こいつを使えば、現在運用中のサイトを丸ごとコピーしてしまって記事データや画像ファイルなどを削除して、そこからサイトの中身(タイトルとか)を新しいものに変更すると、とても早く新サイトを構築出来るのです。
しかしながら2018年9月の初め、このDuplicatorのプラグインに「緊急性の高いセキュリティー上の問題(脆弱性)が確認された.....」とのメールがXサーバーから届きました。
「ん!?、Duplicator?、あ、オレも使ってるな.....」
と認識はしたものの、実はその時点でもう遅かったのですけどね。
案内が来る前に該当のプラグインのアップデートを実行していれば問題無かったようですけど、実は2週間ほど放置していたんです。
結局その2週間何もしなかったが為に、あんな大変な事になるとは.....です。
今回はそのウィルス感染の発覚から復旧に至るまでの備忘録を残しておきたいと思います。
経緯1:トロイの木馬の感染をセキュリティーソフトで認知
まず最初に危機感を覚えたのが、自分の所有するサイトの中でもできたてホヤホヤで一番新しい趣味の ”ロードバイクの特化型サイト” でした。
ブラウザに自分のサイトを表示しようとした瞬間、まずセキュリティソフトが警告を出しました。
「トロイの木馬を検知しました!」
ちなみにセキュリティソフトはeSETです。
eSETはスロバキアのコンピュータ及びインターネット用のセキュリティーソフト関連製品の開発、販売を行うソフトウェア企業です。
日本の総代理店はCANONです。
私自身もこのeSETの存在を取引先のジム機器メーカーの営業マンから聞いて始めて知った次第なのですが、これが使い始めてみるとなかなかのスグレモノ。
前の職場では無料ソフトのAvastを使っていましたが、アバストは動作が重くて当時(2010年頃)の業務用低スペックPCではアバストがセキュリティプログラムの更新作業に入ると、立ち上げていた他の業務ソフトが一斉にフリーズするなど、イライラが止まりませんでした。
eSETは動作がとても軽く且つ、セキュリティーが強固なことで有名です。
今回もこのESETに助けられました。
ブラウザに表示された事でウィルスを検知するという事は、つまりサーバーがやられているという事か?と思い、別のサイトもチェックしてみました。
その後、そのサイトはドメインを指定して入力しても全く表示されなくなってしまいました。
config.phpファイルに異常でもあるのかな?。
WordPress.comの画面に切り替わり「言語を選択して下さい」との表示。
そのまま新しいWordPressを該当のドメインにインストールさせようとします。
インストールはサーバーのコントロールパネルからやるから勘弁.....と思い、そのままブラウザは閉じました。
Xサーバーのコントロルパネルからイジってみる
ブクマしている該当サイトのダッシュボードから入ろうとするも、ダッシュボードにすら入れません。
ちなみに、同じサーバーアカウントの別のサイトでも検出されてしまいました。
ブラウザ上でウィルスの警告をポップアップで出してクリックさせる詐欺的なウィルス警告も流行っていますけれども、今回は自分のPCのブラウザ上ではなくブラウザで表示した内容に対してPCにインストールしているウィルスソフトが反応したので「これはヤバい!」となった訳です。
しかも、自分のサイトをPCで閲覧していた知人からも「おい!サイトを開いた瞬間、セキュリティーソフトが.....」と緊急の電話が朝イチで入りました。
これはもうドメインごと天に召されてしまったのか.......。
Xサーバーのサポートに連絡を入れました。
問題のバージョンは【Duplicatorバージョン1.2.40以前)
今回問題となったバージョンはDuplicator Ver1.2.40以前のものでした。
Xサーバさんからは
「第三者に任意のコードを実行される、サイトに任意のファイルが埋め込まれる恐れがあります」
とのメールが届きます。
まずは、ユーザー(私)の承諾を得て、サーバーアカウント内を調査するとの事。
その間、サーバーアカウント内の全てサイトにアクセス制限を掛ける.....と。
まぁ、これは仕方ないですね。
あぁ......PVが......。
PVよりも復旧を優先させなければならないのは分かっているんですが、何分ショックを隠し切れません。
Xサーバーサポートとのやり取り
1,サーバーアカウント内を調べてもらう
まず、自分のアカウントのサーバー領域を調べてもらいました。
調べるのは
1、不正なファイルが埋め込まれているのか?
2,サーバーアカウントに不正なアクセスがあったのか?
この2点を調べるとのこと。
2についてはグローバルIPで調べるのでしょうか?
自分以外の人間がアクセスしていればすぐに分かりますが、結果「今のところ不正なアクセスは1件も無かった」との事で、まずは一安心。
問題は1ですが、やはり不正なファイルが確認されたとの事でした。
Xサーバー側は「トロイの木馬」と名指しでウィルス名を晒す事はありませんでしたが、何故自分がウィルスは「トロイの木馬である」と判断出来たか?というと、それもeSETさんがいい仕事してくれたからだったのでした。
セキュリティーソフトマジで神です!。
その後、サポートさんと何度かやり取りをします。
結局、Xサーバーのサポートに指示されたのは、
サーバーアカウント内の全消去
です.......
マジですか!?........
マジなようです。
FTPサーバーからファイルダウンロード
WordPressも例外ではなくプログラム自体がいくつものファイルで構成されている訳ですが、トロイに感染しているとはいえ全てのファイルがやられている訳ではありません。
まず行ったことは全てのサイトの全てのWebファイルを調査し、ウィルスに侵されてるファイルを根こそぎ消去して駆除する。
そのためにFFFTPを使用してサーバーにアクセスして、全てのファイルを一旦PCににダウンロードします。
ウィルスに侵されているファイル自体をPCににダウンロードするのにも勇気が要ります。
ウィルスをダウンロードしているのと同じことですから....笑。
WordPress全6サイト分の必要なファイル(Public.html直下のWordPressファイル以外の必要なファイル)をダウンロードします。
WordPressファイルは自動インストール出来るのでダウンロードしてウィルスチェックする意味はありません。かえってアカウント全削除後にクリーンインストールしたほうが気持ち的にスッキリします。
プラグインについては、設定が面倒なプラグイン、例えばAmazonJSとかTinyMCEAdvancedとかMW-WP-FORMとかは、ウィルスチェックのあとに異常がなければFTPでそのままアップロードしたいところですのでプラグインも一通りダウンロードして調べる事にしました(サーバー側からはプラグインもインストールし直して欲しい....と言われてましたが)。⇒ウィルスに汚染されてなければ大丈夫っしょ!。
まぁ、全6サイト分ですから、全てダウンロードするのに正味2日間ほど掛かりました。2日間と言っても、たまにPCを見に行くとエラーでダウンロードが止まっているときがあるので、全作業工程で正味2日間掛かってしまった....という感じです。
自営業ですが、さすがに仕事もあるのでPC前に座りっぱなしという訳にも行かず、ちょくちょく見に行きくこと2日間。地獄の日々でした......。
これで、手元に全サイトの全Webファイルが揃いました。その中に、もちろんやつ(トロイくん)もいます。
デスクトップに作業フォルダを作り、その中にドメインごとにファイルを構築。
ダウンロードしたファイル
config.php
config.phpは一旦ダウンロードして内容をメモしておきます。
スクショを撮ってペイントに貼り付けし、保存しておくのが望ましいかと。
config.phpの情報は、FTPとMySQLデータベースを紐付けるために絶対に必要です。
これをメモしておかないと、復旧後にサイトを元通りにすることが出来なくなります。
ドメイン直下のPublic.htmlを開き、config.phpを探す
config.phpの内容をスクショしておく
- データベース名
- データベースのユーザー名
- データベースのパスワード
- MYSQLのホスト名
- データベースのテーブルを作成する際のデータベースの文字セット
- データベースの照合順序
- 認証用ユニークキー(8桁)
以上の項目を忘れずにメモしました。
補足
補足ですが、FTPサーバーには、WordPressのプログラムとプラグイン、テーマファイル、アップロードした画像や動画ファイル、ログインに必要な情報のファイルなどが収納されています
プラグインについては先述の通り、設定が面倒なものについてはウィルスチェックをしたのち、特に問題がなければそのままFTPにアップロードしてもいいかと思います。
一方のMySQL(データベース)はその文字の通りデータベースなのですが、取り扱う情報はサイトの設定内容やUPした記事、ユーザー情報など。
アフィリサイトを運営しているものとしては、記事は資産に値するので、画像と記事は絶対に死守したい!。まぁ、画像データは手元にあるんですが、記事ごとに画像を探して挿入なんて作業を今さらやりやくないというのが本音です。
今回の作業は、あくまでもFTPサーバーのアカウントを削除(初期化)する作業になるのでMySQLはもちろん無傷です。
uploadsから画像ファイルをダウンロード
public.html ⇒ wp-content ⇒ uploads と開くと、中に2016~2018などというファイルが年代ごとにまとめてあります。
当然ながら2018年に立ち上げたサイトなら2018の一つしかありません、もしも2016なんかがあったらある意味ミステリーですけどね。
まぁ、画像ファイルですので、画像を多様するようなボリュームの大きいサイトほど時間が掛かるのは明白です。
私は一つのサイトが4年前からやっている商売用のブログなので、画像ファイルがえらい数ありました。記事も400記事ほど。これは強敵でした....。
テーマファイルは手元にあるのでダウンロードしませんでした。
ウィルスチェック
必要なファイルが揃ったら、PC内でウィルスチェックをしました。
まず最初にピンポイントでデスクトップに作成したFTPからダウンロードした問題のある(と思われる)ファイル郡をチェック。
まぁ、出るわ出るわトロイちゃん....。
全6サイトで20ファイルほどがトロイの木馬に侵食されていました。
その問題のファイルを全削除。
もちろん、そのファイルが重要なプラグインのデータだろうが画層ファイルだろうがお構いなしです。
残ったほうが後々大変です。
その後、念の為にチェック領域を広げPC内のHDD全てスキャンを掛けましたが、その後がウィルスは見つかりませんでした。
PCは汚染されなくて一安心でした。
サーバーアカウント・ドメイン全削除
一番やりたくなかった作業....。
サーバーアカウントを削除します。
なんか、サイト全てを削除するようで(実際はそうなんだけど)切なかったです。
その後すぐに復旧するつもりなんですけどね。
一応、建て前ということで.....。
ここまで既に作業開始から3日ほど経過しています。
アクセス制限が掛かっているので、Google Anaryticsで見てみると、各サイト散々たるPVです。
一番問題のあったロードバイクのサイトは403エラーが返って来ますので、当然ながらブラウザに表示される事すら叶居ません。
もちろん、PVはゼロです。
ドメインを全て初期化して、FFFTPを使用して全てのサイトの全てのファイルを削除しました。
トロイめ!どうだ!思い知ったか!!
と、心の中で静かに叫びました.....。
その後、Xサーバーに連絡を入れてサーバーのドメイン直下をすべて初期化(削除)したとご報告。
この連絡から数日でサーバーのアクセス制限を解除するとのお話。
アクセス制限解除
連絡から約1日でアクセス制限は回解除になりました。
でも、ここからが大変です。
ここから壮大な復旧作業が待っています。
ドメイン設定
まずはドメイン設定から。
自身の所持しているドメインを登録していきます。
ドメインを設定しないことにはWordPressをインストール出来ません。
自動インストール
ドメインの設定後は各ドメインにWordPressを自動インストールしました。
これで、数日ぶりに管理パネルにアクセス出来るようになりました、が、もちろんまだ復旧していないのでサイトは立ち上げ初期の状態です。
そのまま親テーマと子テーマをインストール。
My SQLの紐付け
テーマのインストール後、まず最初にやることは、例の wp-config.phpファイル の設定変更。
新たにインストールしたWordPressと以前作成していたデータベースとを紐付けします。
「ドメイン直下のPublic.htmlを開き、config.phpを探す」で撮ったスクリーンショット同様に内容を更新します。
このとき、ファイル名が
「wp-config-sample.php」だった場合、
「sample」を消して
「wp-config.php」に変更します。
ファイル名を変更すると不具合が出そうで怖いですが、消去するだけですので問題ありません。
サンプルは所詮サンプルですから。
この作業をする事で、以前作成していたサイトのデータが保存してあるMy SQLと紐付けされました。
サイトを開くと記事が表示されていると思われます。
画像ファイルのアップロード
復旧前にダウンロードしておいた画像ファイルをアップロードします。
これをしないと、データベースが紐づけされても画像データが無いので、サイトが復旧したことにはなりません。
FFFTPを使用してローカルからサーバーへ画像ファイルをアップロードします。
フォルダの階層が大きすぎるとエラーになりやすいので、エラーが頻繁に出る場合は多少手間がかかりますが階層を掘り下げて小さいファイル分けてアップロードします。
例)
「2018」のファイルを丸ごとアップロードではなく、
「2018」のフォルダを掘り下げて「01」「02」「03」.......と月単位でアップロードします。
プラグインの設定
プラグインの設定です。
ローカルにダウンロードしておいたデータをスキャンしてウィルスチェックがOKAならば、プラグインもそのままファイルごとアップロードで良いと思います。
でも、「Google XML sitemaps」とか、基本インストールするだけのような細かい設定の要らないプラグインならクリーンインストールのほうが安全で不具合のリスクも少ないと思います。
修正作業
ここまでやれば、サイトがほぼ以前のように表示されていると思います。
しかしながら、トロイの木馬にやられたあとの復旧は100%という訳にはいきません。
画像ファイルが欠損していたり、アップロードしたプラグインが動かなかったりという事が頻繁に起こりますので、全てのサイトのプラグインの動作チェックと全記事に目を通して記事の修正をしなければなりません。
画像ファイルが欠損していると、記事とのつじつまが合わなくなったりという可能世代です。
例えば、「下の画像のように......」と書いてありながら画像が無かったりなど。
ユーザービリティーの低下を招きかねませんので注意が必要です。
まとめ
トロイの木馬感染後に、Xサーバーからサーバアカウント全削除を言い渡された時の対処法を書いてみました。
復旧の間のアクセス制限期間中は、アクセス数激減またはアクセス数ゼロという、アフィリエイトブログにとっては死活問題となる修羅場も乗り越えなくてはなりません。
しかしながら、多少の手間は掛かりますが全てのサイトを失うわけではないので、せっかくここまで育てたサイトを失う事無く短期勝負で少しでも早く復旧させたいものです。
また、今回の事例をもとに、プラグインやテーマなどの更新情報などは毎日チェックしたほうが良さそうですね。
WordPressに関しては、複数サイトを持っていたとしても、使用するプラグインをどのサイトでも統一すれば、更新の通知が来たら全サイトを開いて個々に更新作業をすれば良いので手間は掛からないと思いますし安心です。
また、お金は掛かりますが、サーバーアカウントを複数に分けるという対処法もありますね。
10サイトあるのなら、5サイトづつ分けるとか。5サイトダウンしても別の5サイ何事もなかったようにトは稼ぎ続けてくれます。
そうすることで、最低限のリスク回避が出来るようにもなります。
トロイの木馬を始めとするウィルスの脅威から、自分が天塩にかけて育てているサイトを何としてでも守りましょう。
皆様のお役に立てられば幸いです。
それでは。