こんにちは、タキです。
2002年からフリーランスでWEB制作を仕事にしています。
その中でWordpressがお気に入りで、もう10年以上も使っているのですが、
ごくたまに、大規模に海外からアタックされる時があります。
僕のほうではしばらくなかったのですが、先日久々にサーバー業者さんから、
的なメールがきていて愕然としました。
まさに、忘れた頃にやってくるというやつです。
ということで、僕の事例を元に、Wordpressがサーバーアタックされた時の復元方法についてまとめました。
(Wordpressや基本的なインターネットの知識については省いています)
目次
今回の症状
- WordPressディレクトリ内に複数のphpファイルが設置される
- WordPressに含まれるファイルを一部書き換えられる(サーバー業者から判明ファイル一覧あり)
- データベースは無事
- 設置や改ざんされたファイルの稼働がサーバーに負荷を与え、サーバー業者側でWEBサーバーの表示を停止
- サイトは通常通り閲覧できていたので、表示停止とサーバー業者のメールで気づく
僕の基本的なバックアップ体制
基本的に僕は「All in one WP Migration」というプラグインで、少なくとも毎月バックアップをとっています。
ボタンひとつでバックアップファイルをはき出してくれて、そのファイルを使えば、復元も簡単にできます。
ネットでも「Wordpress バックアップ」「Wordpress 復元」などで検索すると、これらのプラグインがでてくるかと思います。
プラグインでは復旧できない(してはいけない)場合がある
といいつつ、実は上記のプラグインなどの一発復元では、解決しない場合があります。
まず、Wordpressにアタックされる場合の流れとしては、こんな感じのものが多いです。
- WordPressの脆弱性を突かれて、謎のプログラムファイルがたくさん設置される
- このプログラムファイル(Wordpressの場合はphpファイルが多いです)が稼働しまくることで、サーバーに負荷をかける
- 同じサーバにある他のサイトにも迷惑がかかるので、レンタルサーバー業者にそのアカウントのファイルを閲覧停止・非表示にされる
- 通知がきてビックリ
なぜプラグインでの一発復元がNGか
なぜ一発復元がNGかというと、プラグインでボタンひとつでバックアップ・復元ができるものは、
Wordpressに関わるすべてのファイルをバックアップする仕組みのものがほとんどだからです。
つまり、バックアップファイルは、Wordpressファイル・データベース・アップロードした画像ファイルなどが、丸っとひとつにまとまっている仕組みになります。
ということは、もしアタックを受けた後に、気づかずバックアップをとっていた場合、
先に書いたような、アタックで設置された謎のプログラムも一緒にまとまっていることになります。
これをバックアップファイルとしてボタンひとつでサーバー上に展開すると、当然、アタックを受けたあとの状態がそのまま復元されてしまいます。
しかもほとんどの場合、謎のプログラムはそれなりに数多く置かれることが多く、どこのディレクトリにいつ置かれたかをひとつひとつ調べるのはかなり大変です。
また、Wordpressに含まれていたphpファイルを上書きしている場合もあるので、もはや探しきれないと思います。
今回対応した手順
ではどう解決したか、というのを僕の場合を例に、ご紹介します。
大まかな手順は以下です。
- 必要なファイルをFTPでバックアップ
- WEBサーバー上のファイルをすべて削除
- サーバー業者により復旧
- WordPressを新規インストール
- テーマを復元
- データベースを繋ぎなおす
- 「アップロードディレクトリ」をアップ
必要なファイルをFTPでバックアップ
アップロードディレクトリ
WordPressの「アップロードディレクトリ」は、主に管理画面からアップしたり、プラグインが使っていた画像やファイルの置き場です。
このディレクトリを丸ごとダウンロードしておきます。
とはいえ、たまにこのディレクトリにも謎のプログラムが置かれている可能性もあるので、このディレクトリ配下は中身を目視で確認しました。
ただ、基本的には画像などの素材ファイルばかりのはずなので、phpなどのプログラムファイルがあれば、怪しいと思って良いかと思います。
テーマディレクトリ
配下にある、テーマディレクトリをバックアップします。
僕は初期に残していたバックアップがありましたが、無ければダウンロードします。
ここも改ざんがないかチェック。
テーマディレクトリ内はそれほどたくさんのファイルは無いので、慎重に調べます。
ただ、もしここのファイルが改ざんされてしまっている場合は、当然ダウンロードはNGです。
せっかくサーバー上をクリーンに戻しても、改ざんされたファイルをアップすると、また同じ症状になってしまう可能性が高いためです。
その場合は、残念ながらテーマの一括復元は諦めるしかないです。
怪しいファイルの例
- 英字を羅列した、見覚えのない名前のphpファイル
- ひとつだけファイルサイズ(データサイズ)がものすごく大きい
- ひとつだけ見覚えのない拡張子がついている(.suspectedなど)
- ひとつだけ更新日時が他のファイルと違う
このあたりは疑って調べてみるのが良いかと思います。
データベースの接続情報
今回、サーバー業者のメールで、データベースは削除は不要ということだったので、データベース内のデータはそのまま使えそうです。
WEBサーバー上のファイルを一度キレイにしたらまた使うので、接続情報を確認しておきます。
データベース接続情報
・DBホスト(サーバー管理画面に書いてあります)
・データベース名
・データベースユーザー名
・データベースパスワード
メールデータ
ドメインディレクトリごと削除するので、メールアドレスもいったん消えてしまいます。
ドメイン名でのメールアドレスを使っている場合は、メールソフトで直前のメールまで受信しておくなどして、残しておきましょう。
※なおmacユーザーで、thunderbirdなど「IMAP」方式でメールを見ている人は
サーバー上のメールをメールソフトが表示しているだけですので、メールアドレスが消えるとメールの本体も消えることになるので、
thunderbirdで表示されていたメールも消えてしまいます。
残したいメールは「ローカルフォルダ」に残すなど、PCに残すよう対策しておきましょう。
WEBサーバー上のファイルをすべて削除
どこにどんなプログラムが設置されたかや、どのファイルが改ざんされたかを調べきれないので、いったんWEBサーバー上のファイルをすべて削除します。
僕も何度か経験ありますが、基本的にはそうしないと、サーバー業者が非表示を解除してくれません。
ということで、FTPとサーバー管理画面を使って、WEBサーバー上にあるファイルをすべて消します。
サーバー業者により復旧
状況にもよりますが、設置や改ざんされた該当ファイルを消して報告すると、半日〜1日で復旧してくれることが多いです。
エックスサーバーは、ファイル削除後、半日かからず対応してくれました。
該当ファイル以外もすべて削除が必要でしたが、それだけセキュリティに慎重なのだと受け止めて、いったんキレイに削除するのが良いかと思います。
WordPressを新規インストール
キレイになったサーバーに、新たにWordpressを設置します。
これまでと同じディレクトリにインストールしますが、このとき注意が必要なのが、「データベースを新規に作る」ことです。
エックスサーバーやhetemlなどメジャーなレンタルサーバーでは、
データベースはサーバーが別になっていて、そのまま残っていることがほとんどです。
「そのデータベースは残したまま」、上書きしないように別のデータベースを作り、そこにインストールします。
テーマを復元
バックアップファイルがあれば、それを使います。
サーバー業者からのメールなどで、アタックが起きた時期が分かれば、それ以前のバックアップファイルを使う必要があります。
この場合、先述のボタンひとつでバックアップ/復元できるプラグインで作ったバックアップでも大丈夫です。
アタック時期が分からない、もしくはそれに近い時期のバックアップしかない場合は、使わないほうが良いかと思います。
また、バックアップファイルがなければ、先のテーマディレクトリを下記へアップし、テーマを適用します。
wp-content/themes/
ちなみに、アタックが起きたと推定されるタイミングからは、2〜3ヶ月以上前のものを使った方がよいかと思います。
1か月前とかだと、すでにアタックされてファイルが置かれてしまっていた、ということもありえるためです。
データベースを繋ぎなおす
テンプレートを復元できたら、あとは記事などを最新データに戻すため、
設置したWordpressをもともと使っていたデータベースにつなぎ替えるだけです。
手順は以下です。
WordPressのデータベースをつなぎ替える手順
- FTPでwp-configをダウンロード
- もともと使っていたデータベースの情報に書き換える
- FTPでwp-configを上書きアップロード
これで、記事などデータベースに格納されていたデータも、最新のものが反映されました。
「アップロードディレクトリ」をアップ
とはいえ、きっと新しい記事の画像などが抜けているかと思いますので、最初にバックアップしていた「アップロードディレクトリ」をアップします。
これで画像などのファイルも最新のものがアップされ、サイトに表示されるかと思います。
まとめ
ひととおり復旧の手順を説明しましたが、結局は毎回症状も違えば、残っているファイルも違います。
ということで当たり前ですが、やはり定期的にきっちりとバックアップをとっておくことが大事ですね。
テーマディレクトリやデータベースを手動でバックアップするのでもかまいませんが、
アップロードディレクトリなどはつい忘れがちですので、注意が必要です。
忘れると、復旧したものの、記事内には画像抜けのマークだらけで、途方に暮れることになります。。
オススメは「All in one WP Migration」です。
本当にボタンひとつでバックアップ・復元ができるので、気持ち的にも負担が少ないです。