WordPressがハッキングされてサーバーが凍結?! 復旧方法とその後の対策について…【ワードプレス復旧・WP・ハッキング】
FBの方ではご連絡させていただいたので、ご存知の方も多いかもしれませんが、先日この「いとうノート」がハッキングの被害を受けました。厳密にはこのサイトだけではなく、私が契約していたサーバー内のサイト全てが被害にあったので、トータルで10件ほどのサイトが一時的に閲覧できなくなるという状態となりました。
ネットを駆使し試行錯誤の末、なんとか復旧したのでことなきを得たのですが(ネットの力って本当にすごい…)、また同じ被害にあったときにスムーズに対応できるように備忘録をかねて、今回の経緯と復旧方法についてこの記事でまとめておきます。
悲しいことではありますが、同様の被害を受けてここにたどり着く方もいると思うので、手順は詳細にまとめていきます。ちょっと小難しいように聞こえますが、単語に慣れていないだけで手順は思っているよりも簡単です。落ち着いて作業をしてください。
なお今回は手順の内容を詳細に書いたため、かなりボリューミーな記事となりました。ことの詳細だけ知りたい方は経緯と復旧手順の概要、まとめだけ読んでいただければと思います^^;
目次
サーバーがハッキングされた経緯について
ある日、私のもとに契約しているエックスサーバーから以下のようなタイトルのメールが入りました。
【重要】Xserver お客様のサーバーアカウントにおける不正な
このときは外出中だったため「エックスサーバーからなんかメールが来たな、アップデートかな?」くらいの感覚で、詳細な内容を確認しませんでした。今思うとタイトルからして。めっちゃやばい雰囲気が伝わってくるのですが…笑。まさか自分のサイトがサイバー攻撃されるなんてみじんも思っていないので、下手するとそのまま読まずにスルーしちゃうくらいの感覚だったと思います。
そして帰宅後、ちょっと酔っ払いながらメールを軽くチェックし、タイトルのヤバさ気づきます。
ちなみにメールの内容はこんな感じ。
お客様のサーバーアカウントにおいて、
サーバーに対する負荷が著しく高い状況を確認いたしました。この度の負荷上昇に際してプロセスの稼働状況を確認しましたところ、
不正なプロセスが多数稼働しておりました。これを受け、当サポートにてセキュリティ調査を行いましたところ、
お客様がご利用のプログラムにセキュリティ上致命的なバグ(脆弱性)が存在し、
当該脆弱性を第三者に悪用されてしまった可能性が非常に高い状況でございました。緊急措置として下記制限を実施しております。
▼サポートにて実施した制限内容
——————————————————-
・当該サーバーアカウントに対する緊急的なWebアクセス制限を実施
※上記処理に伴い、Webアクセスを行うと403エラーとなる状況です。
——————————————————-
スパムメールの大量送信やフィッシングサイトの開設などの
『不正アクセス』によるさらなる被害の発生を防ぐため、
上記対応を実施しましたことを何卒ご了承くださいますようお願いいたします。
「マジか…、これはくそヤベーな(真顔)」
↑ 0.5秒くらいで一気に酔いが冷めました。
改めて「いとうノート」を見てみると確かに「403エラー」に。他のサイトも当然ですが全て同じ状態。さすがに焦りました。このサイトもなんだかんだ言いながらアクセス数も順調に伸びていて「これからこんな記事書きたいなー」とか「こういう企画をやってみよう」とか、色々と考えていたところだったのでショックは大きかったです。これまで積み重ねてきたものが一瞬にして音を立てて崩れていく…、まさにそんな感覚でした。
しかし、そうは言ってもなってしまったものは仕方ないですし、最初から作り直すなら今度はもっとすごいサイトを作ろうと決意し、これからどう動いたら良いのかをネットで調べることに。すると、自分と同様の被害が頻発していることが判明したので、対応策が何かありそうだとわかったところで、その日は就寝しました。
それにしても、一瞬にして酔いが冷めるということはあるんですね。
ほろ酔い気分だったのにメールを読み終わったら一気に酔いが冷めてて驚きました笑。
ただ、やっぱりエックスサーバーは高機能サーバーなだけあって、対応がめちゃくちゃ迅速ですね。今回私のサイトが復旧できたのはエックスサーバーの対応が早かったというのもあると思います。特にワードプレスとの相性も抜群なので、ワードプレスを運営するのであれば、サーバーはエックスサーバー一択だと思います。
ワードプレスサイト復旧の手順について
今回、私が行った復旧対応の手順をまとめると以下の通りです。
① エックスサーバーのパスワード変更
② WPのバックアップ
③ 全ドメインの初期化
④ エックスサーバーに報告、ドメインを再度追加
⑤ WPを再インストール
⑥ 新しいWPに過去のデータを入れ直す
⑦ セキュリティーを強化
※ 「WP?何それ?」という方は、こちらの補足記事「WPとはなんぞ? 無料ブログとは違うのだろうか?」を読んでみてください。
手順を書いただけなので、おそらく多くの方がさっぱりわからないと思います(私も最初の段階では全く意味がわからなかった笑)、そのため、想像しやすいように私の勝手なイメージを例にして説明します。
これから行う復旧作業は「家の改築作業に伴う引越し」だと思っていただけるとわかりやすいです。シロアリに侵食された家を、見た目そのままに新しく建て替えるといったイメージです。
手順② WPのバックアップのイメージ図
サーバーを「土地」、サイトのプログラムを「家」、これまで投稿やアップしてきた記事や画像を「家具」とイメージしてください。
「家」の中にある「家具」を一時的に別の場所に保管して(②)、「家」を壊し更地にした上で、汚染された「土地」を浄化(③)、その浄化した「土地」に壊した家とまったく同じ「家」を作り(⑤)、「家具」を同じように配置する(⑥)。そして、最終的に変な輩がまた入ってこないように強力な鍵を家につける(⑦)。
なんとなくイメージできましたかね?
中にあるものを取り出して、一度全部バラし、新しく同じものを建て替えて、中身を入れる。そう、まるで伊勢神宮の式年遷宮を彷彿とさせる格式の高い手順をおこないます笑。
伊勢神宮の正殿
私もあまりこういうのは詳しくありませんが、復旧作業をしている中でこういったイメージを持ったので、共有させていただきました。イメージを持ちながらやると理解が早くなりますからね。
次から手順の詳細について説明していきます。
※詳細を読む必要がない方は長いので最後のまとめを読んでください。
ワードプレス復旧手順の詳細
では、一つずつ手順を説明していきます。
① エックスサーバーのパスワード変更
これは⑦が終わった後でも良いかもしれませんが、私は一番最初にやりました。復旧作業というよりもセキュリティの話です。
今回私が被害を受けたのは同一のサーバー内にあるサイトのみでした。別で契約しているサーバー(こちらもエックスサーバー)にあるサイトは全く問題がなかったので、このサーバーだけ攻撃されたのだと思っています。問題があれば、別サーバーも停止されますからね。サーバーに侵入されたのかはわかりませんが、一応念のためこの作業を行いました。
エックスサーバーであればアカウントの部分にあるパスワード変更から変更できます。
パスワードを生成する際にはこちらのルフトツールがお勧めです。
最強のパスワードが作成できます。
② WPのバックアップ
ここからが本格的な復旧作業になります。
家にある家具を一時的に避難させるという作業ですね。
エックスサーバーと契約している場合、WPのバックアップ方法は2種類あります。1つはサーバーパネルにあるアカウント部のバックアップというところからサイトデータのバックアップをする方法。
上記の赤枠部分をクリックしてドメインごとにバックアップを取っていけば良いかと思います。
一応これでバックアップは完了なのですが、ネットで検索すると、エックスサーバーはこのダウンロードのバックアップの方法ではなく、もう1つの方法を推奨しているようでした。他の方の復旧作業ブログでもこれから紹介する方法のバックアップを使って復旧させている方が多かったので、私もそれに習ってやります。
もう1つのバックアップ方法というのは、FTPソフトを利用したバックアップです。
「FTP?何それ?」みたいな感じになると思います(私もそうでした)。
要するにこれはPCとサーバーの情報を転送するソフトのことです(先の例えで言うのであれば「引越し業者」とでも考えてください)。エックスサーバーと契約している方は上述したようにバックアップという項目があり、そこからパソコンに直接バックアップデータをダウンロードできるので問題ないのですが、バックアップが直接ダウンロードできないサーバーだったりしたらこういったFTPソフトを使って、ファイルを転送する必要があるようです。
とにかく、このFTPソフトはバックアップだけでなく、⑥の手順 でデータをアップロードする際に使うのでインストールしておきましょう。ちなみに私はMacを使っていますので、Mac対応されている「FileZilla」というFTPソフトをダウンロードしました。
最初は使い方がわからないと思いますが「FileZilla 使い方」で検索すると色々とわかりやすいサイトが出てきますので、参考にしながら操作してみてください。
私はFileZillaの使い方はこのサイトを参考にしました。
ヒーローズジャーニー FileZillaの使い方【Macユーザー必見!】
では、FileZillaを使って自分のサーバーにログインしたものとして説明を続けていきます。
ログインがうまくいくと、右のほうにエックスサーバーで管理しているドメイン名のついたファイルが見つかるかと思います。
例えば私であれば下図の赤枠で囲ったitoakira.comというドメインフォルダがあります。これがこの「いとうノート」のサイトデータです。フォルダをクリックして必要なデータをバックアップします。
今回必要とするデータは、このドメインフォルダ内にある「wp-config.php」と「uplords」です。
1つ目の方法でエックスサーバーから全データのバックアップはダウンロードしてありますので、私はFileZillaでは上記2つのデータのみバックアップをとりました。心配な方は全データのバックアップをとっても良いかと思います。
どちらにせよ、使うデータは「wp-config.php」と「uplords」のデータだけです。
※今回はハッキングによる不正アクセスを受けています。もしかするとテーマやプラグインに変なプログラムが埋め込まれたという可能性も否定できません。そのため極力最低限のデータだけしか残さないで復旧させるという意味もあり上記のデータのみ使います。
最低限必要なデータである「wp-config.php」(記事データを含むサイトの鍵)と「uplords」(画像)この2つだけあればサイトの体裁は整えることができるかと思います。
さて「wp-config.php」と「uplords」が、どのようなデータなのか。これは一応、念のために知っておきましょう。
「wp-config.php」は記事データを取り出す鍵だと思ってください。サーバー内にあるMySQL データベース(記事情報が保管されている場所)への接続情報が「wp-config.php」に記載されています。この後の手順である③でドメインの初期化を行いますが、この記事データが入っているMySQL データベースは初期化されません。しかし、初期化はされないのですがデータを取り出す際(⑥の手順)に鍵が必要となります。その鍵が「wp-config.php」になります。「wp-config.php」は③の初期化によりデータがなくなってしまうので、ここでバックアップを取るということです。
データがあっても鍵がなければ取り出せないですからね。
「uplords」は主にサイトにアップしていた画像データです。MySQLデータベースは記事情報は入っていますがアップした画像は入っていないので、ここでバックアップをとって⑥の手順でアップロードします。
※ FileZillaの場合画像の保存時のデータ名が「かな文字」の場合、バックアップがエラーになることがあります(私はそうでした。)つまり「花 .jpg」という画像ではエラーになり、「flower .jpg」というデータは正常にバックアップできるということです。このサイトの画像も1/3くらいが「かな文字」で登録していたので、アップロードした際に消えてました。一応、補足情報です。
では、バックアップをとりましょう。
この2つのデータの場所ですが以下にあります。
・「wp-config.php」
ドメインフォルダ(私の場合は itoakira.com )> public_php > wp-config.php
・「uploads」
ドメインフォルダ> public_php > wp-content > uploads
上記からデータを探し、右から左にドラッグしてダウンロードしてください。
※初期設定ですと左側のローカルエリアの場所がなかなかわかりづらいかと思います。私はローカルエリアをデスクトップに変更しました。変更の方法はFileZillaでエックスサーバーにログインする際に、サイトマネージャの詳細をクリックし規定のローカルディレクトリのところを自分のPCのデスクトップに設定すると、左側のローカルエリアがデスクトップなります。わからない方は参考にしてください(私はここらへんが全然わからなかったのでたどり着くまでに時間がかかった 汗)。
以上で、②バックアップの作業は終了です。
③ 全ドメインの初期化
エックスサーバーにあるドメインを全て初期化します。
やる内容はめちゃくちゃ簡単ですが「初期化」という単語が不安を煽ります笑。
ただ、先にも挙げた通りMySQL データベースにある記事データは初期化されないので安心してください。初期化されるのはあくまでバックアップをとった部分だけです。
エックスサーバーのサーバーパネルに入り、ドメイン設定をクリックします。
すると一番上のドメイン以外は削除という項目があると思うので、削除してください。
すべて削除したら、一番上のドメインの初期化というボタンをクリックしてください。すると以下のような画面になるかと思います。
真ん中のウェブ領域・設定の初期化を選択肢、右下にある確認ボタンを押して確定させてください。
これで③ 全ドメインの初期化は完了です。
④ エックスサーバーに報告、ドメインを再度追加
③が終わったら、エックスサーバーにメールを入れましょう。
これは凍結されているサーバーを解除してもらうためです。
私の場合は先ほど送られてきたメールに返信で
サーバーアカウント上に設置されたファイルを全ての削除をしましたので制限解除をお願いいたします。
と記載して送信しました。
平日の昼間に送って、3時間後くらいには凍結解除のメールをいただきました。仕事が早い!
どうでもいい話ですが、このサーバー凍結関連のエックスサーバーのメール対応はかなり丁寧で評判が良いようです。私は凍結解除のメールしか送ってませんが、先に挙げた凍結の際のメールに凍結解除に向けてどのように対応したら良いかという指示が記載されていました(最初は読んでも全く意味不明でしたが笑)。少々コストがかかると言われるエックスサーバーではありますが、こういう緊急時の対応がしっかりしているという部分で選んで良かったなと思ってます。
話が逸れてすみません。
サーバーの凍結が解除されたら、今度は先ほど消していったドメインを再度追加していきます。
先ほど初期化したドメイン設定のページから、ドメイン設定の追加のタブを押し消していったドメインを追加していきます。
この作業で④ エックスサーバーに報告、ドメインを再度追加の作業は完了です。
⑤WPを再インストール
ここの作業に関しては過去に経験があるはずなので難しくはないかと思います。
サーバーパネル>ホームページ>自動インストール
で、WPを再度インストールしていきます。
注意点としてはWPインストール時に設定する、データベースの部分。ここを「作成済のデータベースを使用する」にチェックを入れてダウンロードするのが楽のようです。私はこれを知らず「自動でデータベースを生成する」を選択して全く新しいWPを作ってしまったので、作業工程が少し多くなってしまいました。
ちなみに私は「自動でデータベースを使用する」で復旧作業をしたので、そちらの説明をさせていただきます。
「作成済みのデータベースを使用する」を選択された方はこちら「ぽころぐ」さんのサイトで説明されてますので確認してみましょう。
ぽころぐ エックスサーバー凍結解除復旧方法とワードプレスインストール手順。ブログ再構築までの流れ
とりあえずここまでが⑤WPを再インストールの作業になります。
⑥新しいWPに過去のデータを入れ直す
さて、では「自動でデータベースを使用する」を選んだ方はこちらで説明します。
何をするかというと、新しくインストールしたWPにFTPソフトを使って先にバックアップしていた記事データや画像を手動でアップロードしていきます。
まず、最初にデスクトップにフォルダを作ってください。名前はなんでもいいですが「バックアップデータ」とでもしておきましょう。そしてその「バックアップデータ」のフォルダに先ほどバックアップした「wp-config.php」を入れてください。これは次の工程でデータが上書きされることを防ぐためです。
次にFileZillaを立ち上げてください。
右側には今インポートしたばかりのサイトのフォルダがあります(ドメイン名が一緒だと思うので、見た目は先ほどと何も変わってません)。そこから先ほどバックアップを取ったように「wp-config.php」を右から左にドラッグし、デスクトップにダウンロードしてください。
現在、デスクトップには先ほどバックアップした「wp-config.php」(これを元configと呼びます)が入った「バックアップデータ」というフォルダと、今ダウンロードした新しいサイトの「wp-config.php」(これを新configと呼びます)があると思います。まずは元configを開いてください(本当は両方開けるのがベストですが、同じ名称のデータなので片方ずつ開きます)。
ちょっとスクロールすると
// ** MySQL 設定 – この情報はホスティング先から入手してください。 ** //
という項目があるかと思います。
その下に「WordPress のためのデータベース名」、「データベースのユーザー名」、「データベースのパスワード」が書かれていると思います。これら3つをコピーしてテキストにでも貼り付けてください。
次に新configを開きます。
同じように「WordPress のためのデータベース名」、「データベースのユーザー名」、「データベースのパスワード」が書かれていると思うので、それらを元configのものに書き換えて(コピペでOK)ください。
新configの「WordPress のためのデータベース名」、「データベースのユーザー名」、「データベースのパスワード」が元configと全く同じ状態になっていればOKです。
そして書き換えた新configをFileZillaを使ってサーバーにアップしていきます。
FileZillaを開き、書き換えた新configを右から左にドラッグしてアップして、サーバーにあるwp-config.phpを上書きします。(もちろんドメインフォルダにそのままドラッグしてぶち込むのではなく、ドメインフォルダ > public_php までクリックし、wp-config.phpがある場所にドラッグして上書きしてください)
これで記事データが新しいWPに引き継がれました。
同じように、バックアップしていた「uplords」も新しいWPのサーバーに転送しましょう。「uplords」は「wp-config.php」とは異なり書き換えなどありません。新しいWPにはまだ画像データなどはありませんので「uplords」というフォルダ自体存在していません。FileZillaのドメインフォルダ> public_php > wp-content まで行き、「upgrade」の下にドラッグすれば完了です。
これで「⑥ 新しいWPに過去のデータを入れ直す」が完了しました。
この作業が終わったら、WPの管理画面にログインしてみましょう。記事データが入った管理画面に入ることができます。直せるとわかってはいましたが、記事データがちゃんと残っているのを目で見て確認できるとなんだか安心します笑。
アップロードしたのは画像データと記事データだけですので、管理画面に入って細かい設定(例えばもともと使っていたテーマの設定やプラグインの再インストールなど)を行ってください。私の場合はテーマは有料で購入したものでしたので、購入した際にダウンロードしたものを再度インストールし、設定し直しました。
なお、先にも挙げましたがFileZillaでバックアップを取った際にかな文字で保存された画像データはエラーとなってしまったので、新たにアップし直し、記事に入れ直す作業を行いました(これが結構めんどくさかったですね、おそらく一番時間がかかりました)。
この細かい調整作業が終われば、完全復旧の状態です。お疲れ様でした。
⑦セキュリティーを強化
すみません、思ってたよりもめちゃくちゃ長くなってしまったので次回の記事でセキュリティーに関する記事を書かせていただきます…^^;
まとめ & 今回のサーバーハッキング被害にあった原因の推測
サイト復旧後、おそらくこれが原因ではなかろうかという部分がだんだんわかってきました。
今回、このようなハッキングの被害にあった原因はWPやプラグインのバージョンを更新していなかったことだと思われます(あくまで推測ではありますが)。このサイトのように頻繁に記事を更新しているサイトはプラグインも含めバージョンのアップデート作業を行っていたのですが、数年前に作ったまま放置していたサイトは当時のままで、バージョンの更新作業を一切行っていませんでした。
WPはオープンソースです。そのため脆弱性も発見されやすくハッカー被害を受けやすいと言えます。脆弱性が発見された場合、ある程度早い段階でバージョンをアップデートするように更新通知がくるのですが、放置していたサイトに関しては、一切手をつけておらず(もはやログインのパスも覚えてないレベル笑)脆弱性が露見された古いバージョンであったため、そこからつけ込まれて侵入されたのだと思います。エックスサーバーからのメールを見ると、5年前くらいに作ったサイトがもっとも多く侵入された形跡がありましたからね。
一応、今回の作業でこれまで放置していたサイトは復旧せずに全て削除しておきましたので、同じような形で侵入されることはないかと思います。また、こまめなアップデートとセキュリティに関しても今回の事件をきっかけに見直すようになりました。ここら辺に関しては次回のテーマとして扱いたいと思います。
(2017年11月追記。その後セキュリティーの記事を書きました)
それにしても、今回は本当に勉強になりました。セキュリティだけでなくサーバーやWPの構成についても少しではありますが理解が深まったのは良い経験でした。ただ、もう二度と同じ目には会いたくないです…笑。
WPでサイトを運営している方はセキュリティーの強化をすることを強くお勧めします。
あー、マジで疲れたー!!!
追記 今回同じような被害に遭われて、この記事を読んでいる方へ
復旧作業お疲れ様です。
以下、私が今回復旧作業をする上で熟読したサイトを紹介しておきます。
ぽころぐ エックスサーバー凍結解除復旧方法とワードプレスインストール手順。ブログ再構築までの流れ
元営業マンゆうぽんの未来を切り開くブログ サーバーが凍結された原因と凍結解除までの流れ
上記のサイトを参考にして復旧作業を行いましたので、当たり前ではありますが手順や内容は私が紹介した内容とだいたい同じです笑。ただ読みやすさだったり、解説の仕方がちょっと違うので今回の私の記事を読んでわからない場合には、上記のサイトも読むことをお勧めします。
難しくて慣れない単語や用語が並んでいてよくわからないことも多いと思いますが、手順自体はそこまで難易度は高くありません。何度も読んで手順を確認しながら作業をするようにしてください。
復旧作業頑張ってください!