あなたは、「WordPress(以下、WP)」をご存知だろうか?
WordPressとは、「PHP(Webサーバー上で動作するスクリプト言語)」と「MySQL(PHPを含む、様々なデータを格納するデータベース)」を基盤とした無料ブログ作成ツールを指す。風俗・ライト風俗体験ブロガーにWPユーザーを見掛ける事は少ないものの、ブログ収益のみで生計を立てる、いわゆるプロブロガーやアフィリエイターにとっては必須と言えるツールだ。
WPは容易なブログ開設を可能とし、記事の作成・公開はもちろんの事、豊富なプラグインにより各種機能を強化できる上、SEO対策(検索エンジンでの上位表示を目的とする施策)の面も優れている。導入の敷居は高いものの、無限大の可能性を秘めているブログツールなのだ。
実際の愛用者は既知だろうが、一度使い始めると(慣れると)手放せなくなるほど。かく言う俺もその1人であり、【EGweb】もWPを利用して運営を行っている。
ところが、S級クラスの利便性と機能性を持ち合わせる反面、WPの内部データは非常に複雑だ。WPが使用するデータベース(以下、DB)はスクリプト言語で構成されており、その編集には専門的な知識が必須となる(俺には無理)。
WPは繊細かつデリケート、下手に主要データを弄るとエラーを吐き出し、接続・閲覧不可状態に陥る事も珍しくない。
例えば、不正なアクセスにより、WPの内部データを改ざんされたとしたら…?
先月半ば、当ブログはとある国からのハッキング被害に遭い、DBに致命的なダメージを受けた。最終的には更新不能状態に追い込まれ、DBの削除とブログの再構築を余儀なくされたのだ。
この記事は、某国ハッカー VS ゲスブロガーの壮絶な闘い(一方的に壊し逃げされただけ)の全記録である。
悪夢の始まり
まずは、当ブログに発生した障害・不具合を時系列順に書き起こす。
2月半ば以降:WPの管理画面が異常に重くなる
先月半ば、いつものようにWPの管理画面にアクセスすると、何故か挙動が異様に遅く、各メニューを開くだけでも20秒近く掛かる事に気付く。
当ブログは約3年と5ヶ月の間(2012年9月23日から)運営を続けており、現在の記事数はおよそ1,600。各種プラグインも多くインストールしている為、元々の挙動もさほど軽くなく、管理画面およびメニューのレスポンスは9秒程度だった。
だが…さすがに20秒は遅すぎる。記事の作成・公開をしたり、管理やメンテナンスをするにはかなり厳しい速度だ。
とは言え、この時点では更新作業をかろうじて行える状態だった。
同月半ば以降:大量の迷惑メールを受信、サーバーがパンクする
俺が利用しているレンタルサーバー会社は「KAGOYA JAPAN(カゴヤ ジャパン:以下、カゴヤ)」、メールソフトは同サーバー内の「Active! mail」である。
基本的に、メールアドレスを作成・公開した時点で迷惑メールは避けられない。特に俺の場合は運営ブログの性質上、出会い系やライブチャット、エロ画像・動画サイトなどのWebサイトに頻繁にアクセスする為、何かしらのタイミングでメールアドレスが流出する事がある。
その結果、日々数十通の迷惑メールを受信するハメになったのだが、対策は講じており、これまでは特に支障は無かった。
ところが、WPの挙動が重くなるのとほぼ同時期に、大量の迷惑メールを異常なペースで受信し始めた。
送信者は「MAILER-DAEMON」、その受信頻度は60秒に軽く数百通を超える。
管理人の補足「MAILER-DAEMON」とは?
サーバー側の障害や通信エラー、宛先アドレスの間違い等が原因で送信メールが不達となった場合に、サーバーから送られて来る通知メールの事。
つまり、何者かがカゴヤの(俺の使用している)サーバーに侵入、何らかの不審なファイルを設置し、存在しないアドレスに大量のスパムメールを送信していると考えられる。
あまりの多さ故に処理が追い付かず、メールサーバーがパンク(受信メールが表示されない)という現象が頻発した。
その為、迷惑メール以外(ライター・店舗関係者・読者からのメール)の確認が困難となり、返信が大幅に遅延する事となった。
同月25日:画像・リンクの挿入、ウィジェットが制御不能に陥る
最も致命的な不具合はコレだ。
WPの豊富な機能の1つに、画像とリンクの挿入機能が挙げられる。
前者なら投稿の編集画面から「メディアを追加」ボタン、後者の場合は「link」ボタンを押すだけで、サーバーとDBから画像や過去記事などを読み込み、簡単に挿入することが出来る。
しかし、25日の夜、記事を編集中に画像を挿入しようとしたところ、(画像の)一覧を表示する「メディアライブラリ」が、読み込み中のまま表示されない不具合が発生した(ただし、リストビューは問題なく表示された)。
まさかと思いつつ、記事にリンクを挿入しようとすると…メディアライブラリと全く同じ不具合が起こっている事を発見。
更にウィジェットは配置変更が出来ず、同様の不具合(読み込み中)により保存すら不可能な状態。
管理人の補足「ウィジェット」とは?
WPにおける「ウィジェット」とは、特定の機能を実現する為のパーツを指す。
例えば当ブログのヘッダー・フッターエリア、両サイドバーなどの表示(デザイン)は、全てこのウィジェット機能で制御している。
ついでに、ダッシュボードの「Wordpress ニュース」と「Broken Link Checker(リンク切れの自動チェック&修正プラグイン:以下、BLC)」のウィジェットも、読み込み中のまま表示されないのだ。
●メディアライブラリ(グリッドビュー)が表示されない⇒手動でHTMLタグを記述するか、テキストのみの無機質な記事を更新しなければならない
●リンクを挿入できない⇒手動でHTMLタグを記述しなければならない
●ウィジェットを制御できない⇒ブログのデザイン変更や広告の差し替えなどが不可能
この状況は非常にマズイ。
同月同日:不具合の原因を探り、自力で解決を試みる
軽くメダパニ状態になりながら今回の事例を検索。同様の不具合に悩まされ、解決した人達の記事を参考にしつつ、以下の対処法を試してみた。
①「admin-ajax.php」の書き換え⇒改善せず
②「functions.php」内の空白・改行の有無をチェック⇒そもそもどの記述が該当箇所なのかが分からず
③「.htaccess(Webサーバーの動作をディレクトリ単位で制御するファイル)」の書き換え⇒コード修正によるエラーを恐れ、断念
④WPを最新版に更新⇒改善せず
⑤逆にWPを(正常に動作していたと思われる)旧バージョンにダウングレード⇒改善せず
⑥同バージョンのWPをダウンロードし、「wp-admin」ディレクトリを総入れ替え⇒改善せず
⑦使用中の「DigiPress(デジプレス)」テーマ、及び関連プラグインを最新版に更新⇒改善せず
⑧導入中の全プラグインを停止⇒改善せず(停止したプラグインを1つずつ有効化していき、原因を絞り込もうとしたが、そもそも改善せず)
結局、上記の対処法を試しても未改善のまま。
その後もあらゆる可能性を考え、6時間ほどトライ&エラーを繰り返したのだが、その労力が報われる事は無かった…。
同月26日:「カゴヤ」のサポートセンターにSOSを出す
WP自体の知識は持ち合わせているものの、DB絡みの不具合に関してはサッパリな俺。正直、もはや白旗を揚げたい気分だった。
しかし、ここで諦めるワケにはいかない。
そこで翌日の26日、藁にもすがる思いで「カゴヤ」のサポートセンターに問い合わせる事にした。
一部伏せるが、俺が送信した内容は以下の通りである。
平素より大変お世話になっております。貴社サーバーを利用させて頂いている江川と申します。
現在、下記のドメインで運用しているWordPressにて、「メディアライブラリ(グリッドビューのみ)」が表示されず、更に投稿の編集画面にて、「リンクの挿入/編集」も行えない(過去記事が表示されない)という不具合が起こっております。
●ドメイン
egweb.tv
デベロッパーツールのコンソールを確認しましたところ、各不具合のエラーは下記の通りです。
●エラー
・メディアライブラリ(グリッドビュー)
<エラー文>
・リンクの挿入/投稿
<エラー文>
当方の利用環境は下記の通りです。
●ブラウザ
Google Chrome Canary 64-bit
※通常のChrome・IEなど、他のブラウザでも確認しましたが、同様の不具合が見受けられました。
●プラグイン
プラグイン名:バージョン情報
-----
私としては、特にコアファイルに変更を加えた記憶はございません。
冒頭の現象は先日に突然起こりましたので、ブラウザやプラグイン側が原因ではないと考えております。
なお、当時(当該現象が発生した時)はWPの旧バージョン(4.3.3)にて運用を行っていましたので、それが原因かと思い、最新バージョンの4.4.2に更新しましたが解決しませんでした。
また、関連性があるかどうかは不明ですが、ダッシュボードにて、プラグインの「Broken Link Checker」、「WordPressニュース」のウィジェットが読み込み中のまま表示されない不具合も起こっています。
エラー文を読む限り、「admin-ajax.php」に何かしらの問題があるようなのですが、いかんせん私はPHPの知識に乏しく、解決策が全く分からない状態です。
自身で検索を行い、同様の不具合が起きている方による対処法も数多く試してみましたが、改善されないままでした。
当該現象の原因が貴社サーバー側にある場合、必要事項がありましたら開示いたしますので、対処法と解決策をご教示下されば非常に助かります。
お忙しい中恐縮ですが、何卒よろしくお願い申し上げます。
ちなみに、問い合わせ文の字数は約3,000字である。
何この無駄な熱意。
とにかく、俺は出来る限りの事はした。後はカゴヤからの回答を待つしかない。
致命的な障害が発生しているだけに、この時は初恋のコからの返信メールを楽しみにする中学生くらいの待ち遠しさだった。
同月27日:「カゴヤ」のサポートセンターから回答が届く
翌日、「カゴヤ」から待望の回答メールが送られて来た。
内容は以下の通りである。
江川 様
(中略)
お手数ですが、PHPのエラーログを出力できるように、.htaccessを設定し、エラー内容をご確認していただけますでしょうか。
.htaccessの記述例につきましては、下記サポートサイトをご参照いただけますでしょうか。
◇PHP のエラーログを出力する
<URL>
上記を設定後、表示されないという作業を行っていただき、下記コントロールパネルより、エラーログをご確認いただけますでしょうか。
◇コントロールパネル > システム > Webサイト > ログサービス > エラーログ
<URL>
または、WordPressの「デバッグモード」にてエラー内容を表示し内容をご確認いただけますでしょうか。
「デバッグモード」の設定方法につきましては、外部サイトではございますが、下記サイトの「デバックモードの使い方」などをご参照いただけますでしょうか。
◆デバッグモードの使い方
<URL>
上記をお試しいただき、ご不明な点などございましたら、ご連絡いただけますでしょうか。
お手数をおかけしますがよろしくお願いいたします。
要するに、「自分でエラー内容を確認して、それでも分からなかったらまたメールくれ」という事だ。
何その無茶ぶり。
前述したが、俺には最低限の知識しか無く、エラー内容を改善できるほどの技量は持ち合わせていない。
しかし、カゴヤがそう言っている以上、自分の力で何とか解決するほか無かった。
同月同日:WPを「デバッグモード」に設定、エラー内容を確認
「カゴヤ」によると、エラー内容を検証する手段は2つ。
「.htaccess」にPHPのエラーログを出力するコードを記述し、コントロールパネルからログを確認する方法。そして、WPを「デバッグモード(以下の記事を参照)」に設定し、エラー内容を表示する方法である。
CheckWordPress初心者におすすめ!デバッグモードの使い方
前者は致命的なエラーを恐れ、却下(むしろ修正するのが怖い)。
その為、後者のデバッグモードを選択した。
実際にデバッグモードを起動すると、ブラウザの上部にエラー文が表示されたのだが…その数があまりにも多すぎた。
基本的にはエラー文をそのまま検索し、1つずつ解消していくのが適切な対処法だ。しかし、全てのエラーを解消するにはどれ程の時間が必要なのか…見当も付かない。
精神的に消耗した俺は、この日は
同月28日:「希望」の光が、「絶望」の闇に変わる時
翌朝10時30分、「カゴヤ」から1通のメールが届いていた。
希望の光を求めて開いたこのメールが、皮肉にも俺をどん底へ突き落とす事となる。
江川 様
(中略)
本日2月28日、ご利用ウェブサーバーから、大量の不審なメール送信が行われていることを発見しました。
ウクライナのIPアドレス 178.137.16.17 から、ご利用のWordPress 管理画面へログインされています。
<ドメイン名>
<ドメイン名>
<ドメイン名>
いずれのWordPressも改ざんされていると思われます。
<ファイル名>
<ファイル名>
の二つのファイルについては、海外からのPOSTアクセスが非常に多いため、当社で削除しました。
二次被害を防ぐため、やむを得ず、<ディレクトリ名>にアクセス制限を行いました。
サーバー上のデータは、データベースも含め一旦削除し、安全が確認できているバックアップデータを用い、再構築ください。
対応が完了後に、コントロールパネルからアクセス制限を解除ください。
アクセス制限については
<URL>
にて、ご案内しています。
ご不明な点がございましたら、いつでもカゴヤ・ジャパン サポートセンターまでお問い合わせください。
それでは今後ともどうぞよろしくお願いいたします。
根本的な原因は、ウクライナからWPの管理画面にログイン(パスワードをハック)された事だったのだ。衝撃を受けながらも、まずは迅速に超強力なパスワードへ変更する。
そして、不具合を解消する為にはDBを完全に削除し、再構築しなければならないらしい。
ただし、当ブログの再構築には多大なリスクを伴う。
まず第一に、俺はこのブログの収益だけで食っている。もし復旧に失敗して【EGweb】が死んだら、その日から生活すら出来なくなる。複数のメディアを持っているならまだしも、俺の場合はたった1つ…それを殺した時のダメージは計り知れない。
次に、このブログを失えば所属ライターや読者との繋がりが途絶え、同時に広告媒体としての価値も消える。ビジネスパートナーだった店舗関係者からは、確実に縁を切られる事になる。
そして最後に、俺は危機感が無さ過ぎた。セキュリティ意識の高いメディア運営者は、今回のような不測の事態に備え、定期的にサーバー上のファイルとDBのバックアップを取るものだ。
しかし、俺は独自にバックアップを確保していなかったのだ。
(もし、このブログを復旧できなかったら…)
それは、“死刑宣告”に等しい。
俺はすぐにカゴヤに電話を掛け、バックアップを保有していない旨を伝えると、以下の答えが返って来た。
「バックアップサービスを利用されていない場合は、バックアップはお取りしていません。弊社では改ざんされたデータの特定が難しい為、該当データベースを削除し、再構築をして頂くしかありません」
長い付き合い(2014年8月1日から契約)なのに冷たいぜ…カゴヤさんよ…。
カゴヤから強制的にアクセス制限を掛けられた当ブログは、この日から一時的に接続・閲覧が不可能となった。
実は同社のコントロールパネルから(アクセス制限を)解除できるのだが(無論、再構築をしない限り障害は直らない)、冷静さを欠いた俺は、この状態を『ブログが完全に死んだ』と思い込み、絶望に打ちひしがれたのだ。
同日夕刻:着の身着のまま、親友宅のマンションへ
もはや1人では精神崩壊を避けられなかった俺は、お台場にある親友のマンションへ駆け込む事を決意。
彼に事情を伝えた後、着の身着のまま荷物をまとめ、
突然の訪問を快く受け入れてくれた親友には、感謝してもし切れない(ちなみに、彼の仕事の詳細は伏せるが、俺とはある意味同業者と言える)。
発狂しそうになるのを必死に抑えつつ、約1時間40分ほど電車に揺られ、お台場海浜公園駅に到着。
このエリアは海が近く、空気が美味い。深呼吸して、まずは気持ちを落ち着かせる。
周囲を見渡すとカップルや家族連れの姿が多く、その光景はまさに平和の一言。
今の俺の状況を考えると、決して心が休まる事は無い。しかし(当然だが)、周りの人々はそんな事は関係なく、思い思いに過ごしている。
世界が、灰色のフィルターを通して見えているかのようだった。
そして親友の住むマンションに到着。ここでようやく安堵感を覚えた。
緊急時に頼れる誰かが居るという事は、本当に心強い。
【EGweb】復旧対策本部を設置、開戦の刻
親友の部屋に入り、挨拶を交わし、すぐにノートPCを開くも、様々な考え事が脳内を駆け巡る。
実はこの時、俺が抱えている問題はブログの再構築だけではなかった。
所属ライターからの納品原稿も溜まっている為、可能な限り早急に公開しなければならない。その中には、状況次第で無価値となる原稿も存在する。何より、ライターと店舗関係者からの信用を失ってしまう。
また、これは個人的な事情なのだが、3月17日に引っ越しも控えていた。物件は既に決まり、審査も無事に通過したものの、旧居の粗大ゴミを捨て、荷造りを終わらせ、掃除を済ませ、大家の立ち会いの下で引き払う必要がある。
更に拠点とする引越し先の新居には、生活をする為の環境を整えなければならない…。
「八方塞がり」とは正にこの事である。
もはや現実逃避レベルだが、1つずつ問題を解決していくしか道は無い。
事態を非常に重く見た俺は、親友の部屋に「ハイパーゲスブログ復旧対策
ここを拠点とし、昼夜を問わず復旧作業を行う事を決意した。
そして今、ウクライナハッカー VS ゲスブロガーの闘いの火蓋が切られた。
同日夜:唯一のバックアップを用いた復旧作戦、始動
多少冷静さを取り戻した俺は、まず状況を整理する事にした。
現状、不具合を解消する為にはブログの再構築が必須。だが、その為のバックアップは確保していない。
不幸中の幸いと言うべきか、サーバー上のファイルとDBはまだ存在している。
ところが、それらは既にハッカーに改ざんされ、しかもどのファイルを書き換えられたのかが分からない。そんなデータを使用しても、無事に復旧する保証はどこにも無い…。
しかし、それ以外にバックアップは存在しない。ならば、手持ちの駒を使うしか選択肢は無い。
人生は、スリルがあるほど面白い。これは、決して負けられない“ギャンブル”なのだ。
サーバー上に残されたデータを利用するしか無いとは言え、さすがにこのドメイン(egweb.tv)直下の全データをいきなり入れ替えるのは怖すぎる(そもそも、改ざんされたデータが正常に動く確証も無い)。
その為、まずは新たにテストドメインを取得。同ドメインに唯一のバックアップを移行し、動作の有無を確認する事とした(本来はサーバ仮想化を行ったり、ローカル環境を作成した上での試験運用が望ましいのだが、
腹を括った俺は、以下の記事を参考にしながら復旧作戦を立てた。
Check
・WordPress→WordPress ドメイン変更を伴うサーバ移行手順
・【完全版】これでもう迷わない!WordPressのブログをサーバー移転(引越し)する詳しい手順・方法を解説します。【ロリポップからSIXCOREへ】
・WordPressサイトのサーバ移転の方法
【EGweb】復旧作戦の概要
手順1【EGweb】のDBから、「wp_options」以外のSQLデータをエクスポート
参考記事によると、「wp_options」テーブルにはWPの設定情報が格納されている為、上書きはNGとの事。逆に言えば、同テーブルをそのまま移行すると不具合が生じる可能性があるのだ。
ちなみに、俺は同テーブルを移行した事が無い為、実際にどうなるのかは分からない。
手順2サーバーから「uploads(アップロード画像)」フォルダ、「plugins」フォルダ、その他の主要フォルダ・ファイルをダウンロード
確保した「wp-content/uploads」フォルダは移行先に上書きするだけでOK。各種プラグインは、可能なら再インストールを推奨との事。
手順3各ウィジェットの記述内容、及び「Dynamic Widgets(ウィジェット制御プラグイン)」の設定をメモ帳に保管
ウィジェットの設定情報は「options」テーブルに格納されているのだが、
手順4テストドメイン用の新DBを追加
特記事項なし。
手順5同ドメインにWordpressを新規インストール
特記事項なし。
手順6同ドメインの「wp-config.php」を書き換え
WPをインストールしたDB名・DBユーザー名・DBパスワードを入力するだけだ。
手順7同ドメイン用のDBから「wp_options」以外のSQLデータを削除
理由は手順1と同様。
手順8同ドメイン用のDBにバックアップしたSQLデータ(wp_options以外)をインポート
理由は手順1と同様。
手順9確保した「uploads」フォルダを、テストドメインの同フォルダに上書き
理由は手順2と同様。
手順10DigiPressの「MAGJAM(マグジャム)」と関連プラグインを新規購入、ライセンス認証及びテーマ詳細の設定
本来、DigiPressテーマのアダルト系サイトへの使用は規約違反の上、仮に発覚した場合はライセンスを抹消される(テーマの認証・アップデートが不可能になる)為、絶対に真似をしないで欲しい。
今回の復旧を機に、以前から目を付けていた無料テーマ「Hueman」への変更を検討したのだが、ウィジェットが両サイドバーしか利用できず(PC表示のみ確認済み)、かつDigiPress専用のHTMLタグ・ショートコードを無数に使用していた為、新テーマの適用は困難と判断。「MAGJAM」の継続使用を強行した。
手順11各種プラグインの移行、または再インストールと設定
理由は手順2と同様。
手順12メモ帳を基に各ウィジェットを復元、及び「Dynamic Widgets」の設定
特記事項なし。
手順13ダミー【EGweb】(テストドメイン)の動作状況を確認
ここでWPが正常に動かなければ、全てが終わる。
手順14正常に動作したら、手順4~13を本番環境(egweb.tv)にて行う
なお、その際は事前に「egweb.tv」ディレクトリ直下の全データを削除する必要がある。
手順15【EGweb】復活!!
本作戦の最終目的はコレだ。
無論、上記は「改ざんされたバックアップが使える(動く)」事を前提とした作戦である。
そして、負けられない闘いが始まった。
2/29深夜~3/1夕刻:テストドメイン構築作戦を決行(練習)
以下より、各手順の成否を書き起こす。
ダミー【EGweb】構築作戦:結果報告
手順1【EGweb】のDBから、「wp_options」以外のSQLデータをエクスポート
難なく成功。
手順2サーバーから「uploads」フォルダ、「plugins」フォルダ、その他の主要フォルダ・ファイルをダウンロード
難なく成功。
手順3各ウィジェットの記述内容、及び「Dynamic Widgets」の設定をメモ帳に保管
数時間を要したが、各ウィジェット情報の保管に成功。
手順4テストドメイン用の新DBを追加
難なく成功。
手順5同ドメインにWordpressを新規インストール
難なく成功。
手順6同ドメインの「wp-config.php」を書き換え
難なく成功。
手順7同ドメイン用のDBから「wp_options」以外のSQLデータを削除
難なく成功。
手順8同ドメイン用のDBにバックアップのSQLデータ(wp_options以外)をインポート
難なく成功。
正常な動作と各記事の復旧を確認。
手順9確保した「uploads」フォルダを、テストドメインの同フォルダに上書き
難なく成功。
「メディアライブラリ」の正常な動作(グリッドビューの表示)を確認。
手順10DigiPressの「MAGJAM」と関連プラグインを新規購入、ライセンス認証及びテーマ詳細の設定
難なく成功。
手順11各種プラグインの移行、及び再インストールと設定
数時間を要したが、難なく成功。
手順12メモ帳を基に各ウィジェットを復元、及び「Dynamic Widgets」の設定
数時間を要したが、難なく成功。
各ウィジェットの正常な動作(配置変更可・保存可)を確認。
手順13ダミー【EGweb】(テストドメイン)の動作状況を確認
メディアライブラリ・リンクの挿入・ウィジェット機能、及びダッシュボードの「Wordpress ニュース」とBLCウィジェットを始め、ダミー【EGweb】の正常な動作を確認。
ダミー【EGweb】構築作戦は、無事に成功した。
ちなみに、心配性の俺は、テストドメインの構築作業(練習)を3回繰り返した。
結果、メディアライブラリ・リンクの挿入・ウィジェット機能の復活はもちろんだが、ブログの最重要コンテンツである記事データを改ざんされていなかった事は本当に良かった。
もし当該データを破壊され、所属ライターや読者と共に書き溜めてきた記事が消滅していたらと考えると…想像するだけでもゾッとする。
本作戦により、「現状のバックアップが正常に動作する」という確証を得られた事は非常に大きい。
しかし、安心するのはまだ早い。本番環境で失敗すれば、全てが水泡に帰すからだ。
ここから、俺の“本当の闘い”が始まる…。
3/1夜~3/3夕刻:【EGweb】復旧作戦を決行(本番)
以下より、各手順の成否を書き起こす。
【EGweb】復旧作戦:結果報告
手順1「egweb.tv」ディレクトリ直下の全データを削除
コレが最も精神的に来る作業だった。
ダミー【EGweb】の構築により、「バックアップが正常に動く」という確証を得られたものの、一時的とは言え、当ブログのデータを抹消しなければならないからだ。
だが、この手順を踏まなければ復旧すら叶わない。
覚悟を決めた俺は、FTPクライアント「FileZilla(ファイルジラ)」を起動し、対象のディレクトリを選択、「削除」のボタンを押した。
俺のブログが真っ白だよママン…。
女々しいのだが、削除処理の進行中はずっと画面を見つめていた。
しかし、感傷に浸っている暇は無い。ブログにアクセス出来ない状態が長引くと、SEO上悪影響(主に検索順位の下落)を及ぼす。
ここからは、時間との勝負だ。
手順2本番ドメイン(egweb.tv)用の新DBを追加
難なく成功。
手順3同ドメインにWordpressを新規インストール
難なく成功。
手順4同ドメインの「wp-config.php」を書き換え
難なく成功。
手順5同ドメイン用のDBから「wp_options」以外のSQLデータを削除
難なく成功。
手順6同ドメイン用のDBにバックアップのSQLデータ(wp_options以外)をインポート
ここで、WPの管理画面にログイン出来ない致命的な問題が発生、パニクる。
顔面蒼白のまま対処法を検索し、何とかログインに成功するも、寿命が1週間縮んだ。
予期せぬトラブルに見舞われたが…
正常な動作と各記事の復旧を確認。
手順7各種プラグインの移行、及び再インストールと設定
パニクった影響で作業の順番を間違えるも、何とか成功。
手順8同ドメインにDigiPressの「MAGJAM」、及び関連プラグインを認証、テーマ詳細の設定
同上。なお、「MAGJAM」適用直後に同テーマのライセンス抹消を確認。滑り込みで認証に成功した。
手順9確保した「uploads」フォルダを、テストドメインの同フォルダに上書き
同上。何とか成功。
「メディアライブラリ」の正常な動作(グリッドビューの表示)を確認。
手順10メモ帳を基に各ウィジェットを復元、及び「Dynamic Widgets」の設定
同上。やはり数時間を要したが、何とか成功。
各ウィジェットの正常な動作(配置変更可・保存可)を確認。
手順11【EGweb】(本番ドメイン)の動作状況を確認
メディアライブラリ・リンクの挿入・ウィジェット機能、及びダッシュボードの「Wordpress ニュース」とBLCウィジェットを始め、【EGweb】の正常な動作を確認。
手順12
ハイパーゲスブログ、執念の復活。
結論
テストドメイン(練習)とは一体なんだったのか。
とりあえず、これだけは言える。
やったよママン…!俺はやり遂げたよ…!!まだ生きてていいんだね…!!!
本当に…本当に長い5日間だった。
【EGweb】の再構築(本番)は1日以内に終わらせる予定だったのだが、その過程で予想外のトラブルが起こり、パニックに陥った結果、約2日半を費やした。道中は2時間ほどの仮眠を挟んだものの、ほぼ不眠不休で復旧作業を行う事が出来た(ただし、大量の迷惑メールの受信は改善されず。この件は再度カゴヤに問い合わせる予定だ)。
「火事場の馬鹿力」という言葉があるように、人間、極限状態に追い込まれた時はリミッターが外れ、本来の力以上のパワーを発揮するのかもしれない…(じゃあいつも発揮しろよと)。
今回の事件の引き金は、WPのログインパスワードを簡易的なものに設定していた事だ。つまり、全ての原因は俺の危機管理能力の欠如にある。
だが、その点を考慮しても、やはり個人的にウクライナハッカーは許せなかった。
復旧作業を終えた俺は、満身創痍で「CrazyBone(狂骨:ログイン履歴を保存するプラグイン)」の画面を開いてみた。
すると…
ログイン失敗ざまぁwwwww バーカバーカアーホアーホwwwwwww 大人しくPCの前でオナニーでもしてろやウクライナピザ野郎wwwwwwwwww
怨恨のあまり小学生以下の悪口を書いてしまったが、それだけ今回の復旧作業が茨の道だった事を汲み取って頂ければ幸いだ。
こうして、ウクライナハッカー VS ゲスブロガーの闘いは、ようやくその幕を下ろしたのである…。
ハッキング事件後に行った4つのセキュリティ対策
今回の一件により、俺はハッキングの恐ろしさを
そして、WP関連(サーバー・DBを含む)セキュリティの大幅な強化を実施、“鉄の要塞(自称)”を作り上げた。
以下より、事件後に俺が行ったセキュリティ対策を書き記す。
パスワード編:WP・サーバー・DBを超強力なパスワードに変更
前述の通り、本事件を引き起こした最大の原因は、WPの管理画面を簡易的なパスワードにしていた結果、その脆弱性を突かれ、ウクライナからの「ブルートフォースアタック(可能な組み合わせを全て試す、総当たり攻撃)」により侵入を許した事である。
ハッキングが判明した直後、俺はWPやサーバー、DBなどを超強力なパスワードに変更した。
あなたは、(俺が言うのもなんだが)よく利用するサービスを簡単な(または覚えやすい)パスワードにしていないだろうか?
もしパスワードをハックされ、不正に使用されたのが銀行のキャッシュカードだったら?クレジットカードだったとしたら?
該当する人は、真っ先に各パスワードの強化を推奨したい。
パーミッション編:「.htaccess」を「606」、「wp-config.php」を「400」に設定
参考記事によると、近年、「.htaccess」ファイルを書き換えられる事例が多発しているらしく、パーミッション(アクセス権)を「606」に設定。
また、「wp-config.php」はWPを利用する上で最も重要なファイルかつ、セキュリティレベルも厳しくする必要があるとの事。その為、当該ファイルのパーミッションは「400」に設定した。
なお、詳細は以下の記事を参照して欲しい。
CheckWordPressの理想的なパーミッション設定は?権限を見直してセキュリティ強化しよう
ファイル編:「install.php」を始め、不要ファイルを削除
WPの新規インストール時には、正常な動作に不要な(削除しても支障が無い)ファイルが多数存在する。そのようなファイルを残しているとセキュリティ上悪影響を及ぼし、サーバーの容量も増加する為、削除する事を推奨したい。
CheckWordPressの不要なファイルを全て削除する
特に「wp-admin/install.php」はインストール時に使用するファイルなのだが、インストール後にアクセスすると、何の警告も無く再インストールを強要される恐ろしいシロモノだ。
そんなファイルがサーバー上にあるだけでも精神衛生的によろしくない。その為、即刻削除。
CheckWordPressをインストールした後に注意すべき1つのこと
削除をする際には、万が一に備え、事前に各ファイルのバックアップを取っておこう。
バックアップ編:蘇生を可能とする、最優先に確保すべきデータ
記事中でも述べたが、俺はこれまでバックアップを取っていなかった。
しかし、今回のような緊急事態に直面した場合は、バックアップの有無がブログの生死を左右するのだ。
俺は事件後、「カゴヤ」のバックアップサービス(サーバーファイルのみ)の利用を開始。
更にバックアップ管理プラグイン「WP-DBManager」をインストール。各種設定を行い、サーバーファイル・DBのバックアップを定期的に確保する事とした。
プラグインWP-DBManager
解説記事
・WP-DBManagerプラグインの使い方
・WP-DBManagerでデータ保存。設定方法と使い方、日本語化
・WP-DBManager 日本語版
番外編:当ブログが導入したセキュリティ対策用プラグイン
その1Akismet
WP新規インストール時に最初から導入されている、スパムコメント対策プラグイン。
解説記事Akismetを有効化してスパムコメントを防ぐ設定とAPIキーの取得方法
その2Crazy Bone (狂骨)
管理画面への不正なアクセスログを記録するプラグイン。ウクライナからのログイン履歴は、同プラグインにより判明した。
解説記事
・WordPressへの不正アクセスログを記録して見せてくれるプラグイン Crazy Bone
・Crazy Bone - WordPress管理画面のログイン履歴を記録・閲覧できるプラグイン - ネタワン
その3Limit Login Attempts
管理画面のログイン試行回数を制限し、複数回失敗すると一定時間ロック。不正ログイン対策プラグイン。
解説記事
・Limit Login Attempts - ログイン画面のログイン試行回数を制限できるWordPressプラグイン
・Limit Login Attemptsの日本語化をしてみた
その4Stealth Login Page
ログイン画面に「第二認証コード」を追加できる、不正ログイン対策プラグイン。当ブログの復旧後、フォロワーの「アフィ林檎(@miraiweb24)」さんから教えて頂いた。
解説記事
・Stealth Login Page – WordPressログイン画面を隠すプラグイン
・Stealth Login Page - ログイン画面に2つ目のパスワードを追加できるWordPressプラグイン
その5SiteGuard WP Plugin
ログインページURLの変更、画像認証の導入、ログインロックなどの機能を備えた総合セキュリティ対策プラグイン。国産の為、管理画面も最初から日本語表示となっている。
解説記事
・SiteGuard WP Plugin(開発元サイト)
・今年も猛威をふるうWordPress攻撃。初心者ならまずプラグインでセキュリティ対策『SiteGuard WP Plugin』
・最新セキュリティー対策プラグイン SiteGuard WP Plugin WordPress 2016年
上記セキュリティ対策の中には、WP新規インストール時に元に戻る項目(パーミッション設定、不要ファイルの復元など)もある為、その際には再度入念なチェックを推奨する。
謝辞
【EGweb】がハッキング被害に遭い、執念の復活を遂げるにあたり、お世話になった方々への感謝を述べると同時に、多大なる迷惑をお掛けした所属ライター様・店舗関係者様・読者様に、この場を借りて謝罪をさせて頂きます。
親友へ
精神崩壊寸前だった俺を、快く受け入れてくれてありがとう。
酷く落ち込んでいた時、「大丈夫だよ!」と明るく励ましてくれてありがとう。
復旧作業を終えた後に居酒屋で飲んだビールは本当に美味しかった。
これからも迷惑を掛ける事になりますが、よろしくお願いします。
フォロワー様へ
当ブログが死亡した日、Twitterのフォロワーの方々から多数の激励の言葉を頂きました。
@egatake18x
— 助兵衛@出会い系プレーヤー (@sukebei_ura) 2016年2月26日
あ、ご丁寧に報告ありがとうございます!
早く治ると良いですね(´・ω・`)……
@egatake18x なんとそんな事に!
— じゃんぽけ (@jpsusu) 2016年2月28日
なるべく早く復旧される事を祈っています
@jj0925tiger @egatake18x 正直驚きを隠せません。今後、EGwebがどうなってしまうのか心配です。
— リフレのすすめ公式アカウント (@refre_maniac) 2016年2月28日
@egatake18x 神棚で「#江川さんのプログが生きかえるように」と祈りました。でじこ、ぷちこ、招き猫などが江川さんのブログを救ってくれます。 pic.twitter.com/CAtBxRThJX
— 走一@デブ専/ぽちゃ専/出会い系/アフィ (@souiti_affiliat) 2016年2月28日
@egatake18x 江川さんなら出来ます!必ず復活します!諦めないでください!#ズボンかわいい
— よつお (@yotsuokanri1) 2016年2月28日
@egatake18x 完全に出遅れました(´ω`)
掛ける言葉が…
— まるひ工業٩(ˊロˋ*)و (@RB1_ODYSSEY959) 2016年2月28日
@egatake18x 頑張って下さい!
— JJ (@jj0925tiger) 2016年2月28日
@egatake18x 復活しましたね(//∀//)
明日ゆっくり見ますおやすみなさいましー
— ネオパンダーソン@インフラ屋 (@neottea) 2016年2月28日
@egatake18x それは泣けますよね(´;ω;`)リカバリー折れずに頑張ってくださいとしか言えないですヾ(。>﹏<。)ノ゙✧*。
— アルパカ (@alpaca_2007) 2016年2月28日
@egatake18x 無事復活したようで良かったですね。でも、被害は大きかったのかな?明日はわが身です。恐ろしい。。。
— チナスキー (@fuzokudia) 2016年3月1日
江川さん…本当にお疲れ様です、本当に体だけは労ってください。 https://t.co/5AHnpeAVaA
— ホンダ (@shacho_dai) 2016年3月1日
僕は、本当に幸せ者です。
フォロワーの皆様は、当ブログを通じて出会った掛け替えのない財産です。
今の僕にとって一番大切なモノは、お金でもなく、権力でもなく、知名度でもありません。
このブログを運営しているからこそ繋がれた方々との縁です。
お陰様で、無事にゲスブログを復旧する事が出来ました。
今後もご迷惑をお掛けしてしまう事となりますが、色々と勉強させて頂きます。
本当にありがとうございました。
掲載不可をご希望の場合はDMを下さい。その際は迅速に削除いたします。
所属ライター様へ
原稿の受領メール、公開時期の大幅な遅延など、多大なるご迷惑をお掛けしてしまいました。
全ては、私の対応力不足と危機管理能力の欠如が原因です。もはや謝罪の言葉すら出てきません。
今後、原稿受領メールについては即日または翌日中にお送り致します。
未掲載の原稿に関しては、納品に対して編集が追い付いていないのが現状です。
個人的な事情で申し訳ありませんが、引っ越しも控えている為、旧居を引き払う今月19日までは公開時期を未定とさせて頂きます。
普段から対応が遅い上、今回の一件で失った信用が計り知れない事は重々承知しています。
しかし、それでもまだ力を貸して頂けるのなら、今後とも当ブログに寄稿して下されば非常に嬉しい限りです。
店舗関係者様へ
この度は多大なるご迷惑をお掛けしてしまった事、誠に申し訳ありませんでした。
なお、全責任は私にあり、所属ライターに落ち度は一切ございません。
既にご依頼を頂いている店舗様に関しましては、最優先で原稿の編集を行いますが、入稿時期は未定となる事をお許し下さい。
また、現状は3月19日まで、新たなご依頼をお受けする事が出来ません。
今一度、深くお詫びを申し上げます。
読者様へ
2月の半ば以降から更新頻度が激減し、大変申し訳ありません。
当ブログ事態は復旧したものの、現状は3月19日まで更新が滞る事となります。
可能な限り時間を見付けて記事を公開していきますので、今後ともご愛読をよろしくお願い致します。
最後に
【EGweb】ハッキング事件の全てを克明に記した。
ハッカー達はシステムの穴を見付け、容赦なく襲い掛かる。そして一度侵入され、WPの内部データを改ざんされたら、その特定は困難を極める。
最悪の事態を避ける為にも、万全なセキュリティ対策を行い、常にバックアップを確保しておこう。
そうすれば、例え破壊されても復旧する事が出来る。
当記事は、『危機意識の低下が招いた悪夢』という反面教師として捉えて頂ければ幸いである。
フォロワーの方も言っていたが、「明日は我が身」なのだ。
あなたは、「自分だけは大丈夫」などと考えてはいないだろうか?その様な慢心があるのなら、今すぐに捨てた方が賢明だ。
こちらに過失がある場合、サーバー会社は積極的に動いてくれない。
結局のところ、自分のブログは自分で守るしかないのだ。
WPに限らず、より一層セキュリティ意識を高めよう。
コメントする(承認制です)