WordPressをマルウェア感染から復旧させるためにした全てのこと
2017年の11月のある日、僕が運営しているとあるWordPressのブログが「マルウェア」に感染し、その後そのサーバーで動かしている全てのサイトにまで波及してサーバーが凍結される事件に見舞われました。
【ご連絡】
サーバーが盛大に攻撃されまして、今僕のメインサイトなど全てが403エラーで見れない状態になっています。サーバーを移し替えて復旧しなきゃいけないので多分相当時間がかかるかと。原因が一切分からないし、土日だからエックスサーバーが電話対応してないしで大ピンチです…— Tim @nomadicwood (@nomadicwood) 2017年11月19日
「マルウェアって一体なに?」という方もいらっしゃると思いますが、これはWordPressでブログを運営している人全てに起こりうることです。
今回はこの事件を受けて僕がサイトを復旧させるまでに行った手順、そして再発防止のためにできる対策について書いていました。
他人事だとは思わずにぜひ最後まで読んでいただけると幸いです。
Contents
【緊急事態】WordPressブログが403エラーで閲覧不可能に
エックスサーバーから突然のメール通知
お客様の上記サーバーアカウントにおいて、
サーバー用メール送信ソフトウェア(Sendmail)を用いた
日本国外のメールアドレスに対する大量のメール送信処理を確認いたしました。 当サポートにてセキュリティ調査を行いましたところ、
お客様がご利用のプログラムにセキュリティ上致命的なバグ(脆弱性)が存在し、
当該脆弱性を第三者に悪用されてしまった可能性が非常に高い状況でございました。 ▼サポートにて実施した制限内容
——————————————————-
・当該サーバーアカウントに対する緊急的なWebアクセス制限を実 施
※上記処理に伴い、Webアクセスを行うと403エラーとなる状況です。
——————————————————-
突如、僕宛にエックスサーバーからこのような旨のメールが届きました。
自分のサイトにアクセスして管理画面にログインしてみようと試みるも全て403エラーで返ってきてしまいます。
これはなかなかにヤバそうな状況。
ですが夜も遅かったのでとりあえず明日なんとかしようと思って床につきました。
その後、同じサーバーで動かしている他のサイトもやられ、サーバー自体凍結
しかし、翌日になってみるとまたもやエックスサーバーからメールが。
昨日にもご連絡差し上げておりますが、
お客様の上記サーバーアカウントにおいて、
サーバー用メール送信ソフトウェア(Sendmail)を用いた
日本国外のメールアドレスに対する大量のメール送信処理を確認いたしました。
昨日までは見れなかったのは1つのサイトだけだったのですが、今度はそのサーバー上で動かしている全てのサイトが見れなくなりました。(このサイトも含め)
一体何が起きているのか…
WordPressで運営していたブログがマルウェアに感染した模様
ブログが全てやられてしまったなんて死活問題。
とりあえず状況を確認するために検索エンジンでいろいろと調べてみたところ、同じ経験をされた方を発見し、どうも「マルウェア」に感染したっぽいことが分かりしました。
マルウェア (malware) とは、不正かつ有害に動作させる意図で作成された悪意のあるソフトウェアや悪質なコードの総称で、コンピュータウイルスやワームなどがある。
出典:Wikipedia
要するにサイトがウィルスに感染して、その後そのサイトから飛び火して他のサイト群へも広がってしまったというわけです。
そして、その感染したサーバーが「日本国外のメールアドレスに対する大量のメール送信処理」を行っていた、つまり僕のサーバーを乗っ取ってスパムメールを送りまくっていたので、エックスサーバーが止めに入ったと。
大変なことになりました。
マルウェアに感染した原因
▼不正アクセスの根本原因
————————————————————
(1)お客様が運用中のプログラムにおいてセキュリティ上問題のある
致命的なバグ(脆弱性)が存在し、第三者に脆弱性を利用された。→該当プログラムが「どんなコマンドでも実行可能」である場合、
該当プログラムを経由して不正なコマンドの実行や、
不正なファイルの設置が行えてしまいます。(2)お客様のサーバーアカウントに関するFTP情報が流出し、
第三者に不正にFTP接続をされた。→FTP操作自体によるファイル改ざんはもとより、
任意のプログラムを設置することでどんなコマンドでも実行できてしまいます。
————————————————————
エックスサーバーからのメールの中には今回の事象が起きた原因についても書いてありました。
原因としては上のように
- WordPressの中に致命的なバグがあった
- FTPの情報が流出してしまった
の2点が考えられると。
しかし、
お客様のサーバーアカウントにおいては不審なFTPアクセスが見
られないことから、
消去法的なご案内となりますが、お客様が運用中のプログラムに脆弱性が存在し、
該当脆弱性を悪用されてしまった可能性が高いものと思われます。
とあったので、やはり僕が運営しているWordPressブログのどこかにセキュリティホールがあり、そこから侵入されたと考えられます。(エックスサーバーはデフォルトの状態だとアクセスログが1日しか残らないので詳しい侵入経路は分かりませんでした)
WordPressをマルウェア感染から復旧させるためにした全てのこと
とりあえずエックスサーバーからの指示を熟読
復旧へ向けたエックスサーバーからの指示は次の5点。
- [1] ご利用のPCにてセキュリティチェックを行ってください。
- [2] サーバーアカウント上に設置されたファイルを全て削除してくださ
い。 - [3] [2]をご対応いただきましたら、
サポートまでお知らせください。 - [4] FTPソフトによるデータアップロードなど、ホームページ再開のための作業を行ってください。
- [5] 該当ドメインにて設置されていたプログラムにおいて、脆弱性の調査を必ず行ってください。
分からない単語もありましたが、Google先生の力を借りてとにかくいろいろと調べまくりました。
セキュリティソフトをPCに入れる
まずは「そもそもあなたのPCは大丈夫なの?」ということでセキュリティチェックをしなさいというお達しです。
僕はMacを使っているのですが、セキュリティソフトは確か前にPCを切り替えた時からいれていません。
今考えるとかなり舐めていたなと…
これを期に、1年間2980円で使えるNortonのセキュリティソフトを入れました。
⇒ Norton
バックアップを確認
エックスサーバー曰く、とりあえず感染したサーバー内の全てのデータを消し、その後それに紐づくドメインも初期化して、契約したばっかりのような完全にまっさらな状態に戻してくれとのことでした。
サーバーとドメインを初期の状態に戻すとなると必要になるのはバックアップ。
僕は普段から”BackWPUp”というプラグインでバックアップを取っていましたので、幸いローカルの環境にまだマルウェアに汚染される前のファイルがありました。
⇒ BackWPUpの使い方と設定方法|WordPressのバックアップに
WordPressでバックアップを取るときには「サーバー上のデータ」と「データベース上のデータ」の2つが必要になります。
- サーバー上のデータ:画像、テーマ、プラグインなどのファイル(ファイルサイズが大きい)
- データベース上のデータ:記事、カテゴリ、コメント、管理画面などの設定(ファイルサイズが小さい)
サブドメインやサブディレクトリまで全てこれらのバックアップがしっかりとれているのかを確認。
エックスサーバーからはサーバー内に
- 「初期ドメイン名」のフォルダ
- (オプション独自SSLを利用している)「ドメイン名」
のフォルダ - 「ssl」フォルダ
だけ残るようにしてくれとのことだったので、FTPソフトを使って余計なデータを全て消しました。
バックアップをしっかりとっていないとこの時点でサイトの画像などが全て消えます。
くれぐれも全部しっかりバックアップがとれているのか確認してからやって下さい。
※バックアップを日頃からとっていないという方はこのページの下へ
サーバーとドメインを切り離す
お次はドメインの削除です。
ドメインの削除をするにはサーバーの管理画面に入ります。(以下エックスサーバーの場合)
サーバーとドメインの紐付けを解除するので、これをするとデータベース上のデータが全部消えます。
データベースのバックアップがしっかりとれているのかもしっかり確認しましょう。
※消す時は自己責任でお願いします
全てのドメインを削除すると最後に削除できないドメインが残ります。
このドメインはサーバー自体のドメインなので、「削除」ではなく「初期化」を行いました。
これでとりあえずサーバー内はまっさらな状態に戻ります。
エックスサーバーに連絡して凍結を解除してもらう
ドメインとの紐付けを解除し、サーバーの中を契約したばっかりにように空っぽにしたのでエックスサーバーにメールを送って凍結の解除を依頼しました。
お世話になります。
メール内の
「[2] サーバーアカウント上に設置されたファイルを全て削除してください。」
について対応が完了しました。お手数ですが、ご確認をいただき制限解除の手続きを進めて頂けますと幸いです。
よろしくお願いします。
その後1日経ってサーバー凍結が解除されました。
初期化したところにバックアップしたデータをいれていく
サーバー凍結が解除されたので次はここにまた新しくサイトを立てていきます。
基本的なやり方はサイトをサーバーから別のサーバーに移動させる時と一緒です。
- サーバーとドメインを改めて紐付け
- バックアップで取っておいたデータベースのデータを新しいドメインに入れる
- バックアップで取っておいたサーバー上のファイルをFTPを使って新しいドメインに入れる
- この時点でサイトの復旧はできるので管理画面に入ったりしてデザインの崩れや不具合がないか確認する
もしも”BackWPUp”でバックアップを取っていたのであれば「BackWPUp 復旧」などで検索エンジンで調べればやり方がたくさん出てきますので調べてみてください。
原因の特定を試みる
こちらに関してはアクセスログが残っていなく、侵入経路が不明だったので詳しくは分かりませんでした。
しかし、とあるプラグインが怪しいなと一応目星がついています。(このページの下でご説明しています)
もしもバックアップをとっていなかったら
とまあここまではバックアップを仮にとっていたらの話。
もしもバックアップ(ファイルバックアップとデータベースバックアップ)を取っていなかったら、もうプロにお願いしてマルウェアを除去してもらうしかないんじゃないかと思います。
バックアップを取れていなかったら、今サーバー上にあるマルウェアに感染してしまったファイルを元にして復旧を試みるしかありません。
- マルウェアに感染したファイルを一回全部取り出し、安全な環境でマルウェアを全て除去する
- サーバーの中を空にしてドメインを初期化した後に、サーバー会社に連絡して凍結を解除してもらう
- マルウェアを除去した安全なファイルをサーバーの中に入れ直して復旧完了
手順としてはこんなところになるのでしょうが、これは素人がやるのはほぼ不可能です。
マルウェアを検知するためのソフトとかあるのですが、エンジニアでもなければそんなもの持っていないと思います。
こうなったらもう「マルウェア 復旧」とかで検索エンジンで調べた時に出てくるサイトにお問い合わせしてお願いするか、ランサーズやクラウドワークスなどを使って復旧してくれる人を探すしかないです。
ちなみに相場としては1つのサイトを復旧するのに2~3万かかります。
なかなか痛い出費です…
復旧後に行うべきこと
サイトのデザイン・プラグイン類の設定
復旧ができてサイトが表示されるようになったら、一応デザインとかプラグイン類とか全部確認しておきましょう。
全部しっかりバックアップが取れていて、それをそっくりそのまま新しくした環境に入れられればいいのですが、転送量が多いので抜け漏れがあるかもしれません。
独自ドメインメールの再設定
それからサーバーの独自メールアドレス(僕だったらmail@nomadicwood.com)を使っていた場合はドメインを初期化しちゃったので再設定が必要になります。
⇒ エックスサーバーのメールをGmailに転送して受信・送信する方法
こちらの記事で独自ドメインメールの作り方、さらにそれをGmailで受信する方法についてご紹介していますので、よろしければご参考下さい。
知りあいのつてを辿り、エンジニアの方に手伝っていただいた
サイトのマルウェア感染から復旧しました。
今回直して下さったエンジニアの方が書いて下さった記事です。
WordPressでブログを運営している以上は狙われる可能性大ですのでみなさんもお気をつけを…https://t.co/jNBErqKQtO— Tim @nomadicwood (@nomadicwood) 2017年11月29日
とまあ、ここまであたかも自力でやってきたかのようですが、
- 「もしもバックアップがしっかりとりきれていないままドメイン初期化しちゃったらどうしよう…」
- 「この手順のとこよくわからないけどこれでいいのか?」
など不安なことがありすぎたので、知りあいのつてを辿り、エンジニアの方をご紹介いただきました。
こちらが今回の件を受けてそのエンジニアの方が書いてくださった記事です。
⇒ マルウェアとは何か〜WordPressに設置されていたマルウェアを解析してみた結果、恐ろしいソフトがでてきた〜
このファイルにアクセスしさえすれば、すきなphpファイルをuploadできるようなので、実質サーバに対してはなんでもできる。
と書かれていますが、こうした一通りの説明を受けて、改めてとんでもないものに感染したんだなと実感。
お仕事が忙しい中、渋谷のカフェにきていただいて長時間付き合っていただき、本当にご迷惑をおかけしました…(あとでしっかりお礼させていただきました)
サイトパワーは弱くなった?
僕のブログは約1週間ほどに渡って全く見ることができなかったのですが、そうなってくると気になるのがドメインパワーに及ぼす影響について。
前後のアナリティクスのデータがこちらです。
見ての通り、感染した11月のある地点ではアクセスが0になりました。
しかし、その後2月まで10記事ぐらいしか更新してませんが、サイトのアクセス数は普通に上がっています。
当サイト”NOMADIC WOOD”に関してはあんまり影響なかったのかな?って感じですが、運営している他のサイトを見てみるとやっぱりアクセスの水準が下がってしまったものも。
せっかく育てたサイトなのに、復旧に遅れたせいでかなりもったいないことをしました。
マルウェア感染への対策
バックアップをしっかり取る
エンジニアの方にお伺いしたところ、今回のような悪意のある攻撃を完全に防ぐことは不可能とのことでした。
こちらが取れる対策が有限なのに対して、ウィルスのパターンは無限にあるからです。
よって、大事なのは日頃からしっかりバックアップをとっておくこと。
これさえあれば何があってもやり直せます。
バックアップを取るには”BackWPUp“というプラグインがオススメです。
⇒ BackWPUpの使い方と設定方法|WordPressのバックアップに
WordPress、テーマ、プラグインは常に最新にする
上でもご説明した通り、今回の件はマルウェアの侵入経路がわからなかったのですが、僕的には”Adsense Manager“というプラグインが怪しいなと思っています。
⇒ AdSense Managerで記事の好きな位置にアドセンス広告を設置する
このプラグイン、アドセンスをブログに貼るのに非常に重宝するプラグインなのですが、なんと5年前から更新されてない。(2018年2月時点)
無料で使わせてもらっているのであまり大きな声では言えませんが、「ドッグイヤー(犬の早さで年を取る)」と言われるインターネットの業界で、5年もアップデートがされてないプラグインを使うなんて不安ったらありゃしません。
もしもまだ”AdSense Manager”を使われているようなら”QUADS”とか他のプラグインに変更しましょう。
⇒ AdSense Integration WP QUADSの設定方法と使い方
プラグインだけでなく、WordPressのバージョンやテーマも同じです。
常に最新のものになるようにこまめにアップデートしましょう。
その他
その他のセキュリティ関連のことについては以下の記事で紹介しています。
⇒ 最低これだけは!WordPressのセキュリティを強化・向上する6つの対策
とりあえず全部やっておきましょう。
まとめ:いつ自分の身にふりかかるかわかならい
ということで今回は「WordPressをマルウェア感染から復旧させるためにした全てのこと」ということで僕が行った復旧の方法をご紹介しました。
マルウェアへの感染だなんてなかなかレアなケースだとは思います。
少なくとも僕の界隈でやられたのは僕だけです。
しかし、アクセスが集まってきてブログの知名度が上がってくると、その分悪意のある第三者から狙われる可能性が高くなります。
「最近むちゃくちゃブログ運営好調だったのにウィルスにやられて死んだ…」となったら本気で凹みますので、WordPressでブログを運営している人はバックアップだけは絶対にやっておきましょう。
⇒ BackWPUpの使い方と設定方法|WordPressのバックアップに