この記事は「Vektor WordPress Solutions Advent Calendar 2021」の12月19日の記事で…そして「Shifter Advent Calendar 2021」の12月19日の記事というちょっとずるい事してごめんなさい。この記事を読むことで、改竄にあった場合にどういう手順で復帰するのかと、そもそも改竄されない手法の参考になると思います。
はい、みなさんこんにちは。WordPressテーマ Lightning及びベクトルプロダクト制作監督のいしかわでございます。
前回の、佐々木さんによる「全面リニューアルしました!Lightning 公式サイトの歩き方」&「WordPress (Shifter) + HubSpot の活用法」の記事に引き続き、LightningとShifterで作るサイトの紹介を…と思っていたのですが、最近Lightningのユーザーさんが立て続けに改竄にあいまして、どうやら知り合いでもお客さんのサイトが改竄されて…という話も聞いて、ここ最近大規模で発生しているようなので、改竄された場合の対応についてと、改竄されない方法について紹介していきたいと思います。
はじめに
本記事はあくまで「本職じゃない人でも頑張れば対応できそうなレベル」の内容で「概ね復旧できればとりあえずOK」な人向けの記事になります。
専門的観点から見ると厳密にはもっと細かく調査したり細かく対策が必要になりますので予めご了承願います。
あと「絶対に」と書きましたが釣りです。通常のWordPressとしては「絶対」ですがそのあたりは最後までご覧ください。
- 1. 対応方法紹介の前に
- 1.1. バックアップを設定しましょう
- 1.1.1. 最低限の定期バックアップ
- 1.1.2. サイト新規納品時など
- 1.1.3. バックアップデータを外部サーバーに自動転送
- 2. どういうハッキングをされるのか?
- 3. 復旧手順
- 3.1. バックアップがある場合
- 3.1.1. 一旦バックアップデータを全部ローカルにダウンロード
- 3.1.2. ローカル環境でまずはバックアップデータから復旧テスト
- 3.1.3. 復旧先のWordPressの設定&インポート
- 3.1.4. パスワード変更&不要な管理権限ユーザーの削除
- 3.2. バックアップがない場合
- 3.2.1. 既存の wp-content ディレクトリをダウンロード
- 3.2.2. wp-config.php ファイルをダウンロード
- 3.2.3. wp-content/uploads/ 内の不審ファイル確認・削除
- 3.2.4. WordPressのファイルの入れ替え
- 3.2.5. wp-config.php ファイルのアップロード
- 3.2.6. データベースの状態の確認
- 3.2.7. パスワード変更&不要な管理権限ユーザーの削除
- 3.2.8. テーマ・プラグインの再インストール
- 3.2.9. wp-content/uploads/ フォルダのアップ
- 3.2.10. データベースのパスワードの変更
- 4. 経過観察
- 5. 改竄されないために
- 5.1. とりあえずスキャン
- 5.2. 管理画面BASIC認証の設定
- 5.3. 2段階認証の設定
- 6. 絶対に改竄されないために
- 7. さいごに
対応方法紹介の前に
バックアップを設定しましょう
まずハッキングを含めて不測の事態は起こるものです。バックアップを必ず設定しましょう。
数年前と比べれば素人でも遥かに楽にバックアップは設定できます。というかバックアップ無しでWordPress運用するのやめましょう。
最低限の定期バックアップ
サイト新規納品時など
バックアップデータを外部サーバーに自動転送
どういうハッキングをされるのか?
さて、本題です。ここ10年ちょっとWordPress専門で仕事をしていますが、自分が遭遇したり知り合いが遭遇したケースは「サーバー内のファイルが書き換えられて、アクセスすると他のサイトにリダイレクトされる」というケースです。
サーバーのファイルを見てみると概ね以下の症状になります
- WordPressをインストールした各ディレクトリのindex.phpなど、phpファイルの文頭に怪しげなコードを書き込まれている
- wp-content/uploads/ の中には通常画像ファイルなどばかりのはずが、見に覚えのないファイルを大量に置かれる
- 通常の投稿内にいろいろ投稿される(このケースは近年は自分や周りでは遭遇していない)
これらのファイルは全部キレイに駆除しない限り、該当部分を削除したり、該当ファイルを削除しても残っているファイルから再度改竄してくるので面倒です。
復旧手順
バックアップがある場合
一旦バックアップデータを全部ローカルにダウンロード
バックアップ先が同一サーバーにしかない場合、FTPなどでサーバーに接続して一旦ローカルにすべて落としてきましょう。
ローカル環境でまずはバックアップデータから復旧テスト
まずは自分のPC内でバックアップファイルから復元してみましょう。
ローカル環境の構築についてわからない場合は下記参照ください。
復旧先のWordPressの設定&インポート
一度改竄されたものは完全に取り除く事は難しいです。
改竄されたファイルを検出するプラグインなどもあるのですが、100%完璧ではないので、既存のファイルを削除して新規にWordPressをインストールしなおした方が良いです。
インストール済みのWordPressディレクトリはすべて削除して、データベースも新しく作り直して新規のWordPressを用意した上で、ローカルに復元したファイルから All in One WP Migration などで引っ越ししましょう。
ちなみにこの時「サイトの容量が多くて有料版のプラグインを買わないとインポートできないんです」とか思っちゃった場合は、諦めて有料版を買うか、それが嫌な場合は適当に自力で頑張ってください。多分有料版買った方が楽です。
パスワード変更&不要な管理権限ユーザーの削除
管理権限のパスワードは必ず変更し、使用されていない管理権限ユーザーの削除や、管理権限の必要のないユーザーの権限の見直しをしましょう。
バックアップがない場合
既存の wp-content ディレクトリをダウンロード
ハッキングされてはいますが wp-content ディレクトリのデータを FTP などでご利用のPCにダウンロードしておきます。
画像はバックアップとってないならそこにしか元データが無いし、インストールしているテーマやプラグインの確認のためも兼ねて落としましょう。
wp-config.php ファイルをダウンロード
WordPressファイルのファイルは基本的に一旦削除&上書きする事になるので、既存のデータベースの情報の記載のある wp-config.php は一旦自分のPCに保存しておきましょう。
wp-content/uploads/ 内の不審ファイル確認・削除
ダウンロードした uploads ディレクトリの中に不審なファイルがないか確認しましょう。
ディレクトリ内の日付のフォルダ内は通常画像ファイルなどの置き場なので、プログラムファイルは存在しないはずなのに、.php の拡張子のファイルが置かれたりします。
また、拡張子の無い怪しげなファイル名のファイルも大量に置かれたりしますので削除します。
WordPressのファイルの入れ替え
とりあえず一旦WordPressをインストールしたディレクトリを空にして、WordPressのファイルを新たにアップロードしなおします。
wp-config.php ファイルのアップロード
とりあえず以前のwp-config.phpのファイルを確認して、改竄がなければアップロード、
あるようならデータベースの情報だけ 新規のWordPressファイルの wp-config-sample.php に該当部分を書き写して、wp-config.phpに名前を変更してアップロード。
これで管理画面には入れるようになるはず。
データベースの状態の確認
近年は個人的には遭遇していないのですが、データベースの中身を書き換えられるタイプもあります。
これまでの復旧作業をしたのに他のサイトに飛ばされてしまう場合は、WordPressのURL情報などが書き換えられている可能性が高いです。
とりあえずご利用のレンタルサーバーなどからデータベースの管理画面に入って wp_options テーブルの siteurl を確認・書き換え程度ならわかりやすいのですが…
投稿データの中にjavascriptなど埋め込まれている場合などは…
sqlデータを落としてきて頑張ってスキャンして…
となって専門の技術者でないと多分お手上げです。
パスワード変更&不要な管理権限ユーザーの削除
管理権限のパスワードは必ず変更し、使用されていない管理権限ユーザーの削除や、管理権限の必要のないユーザーの権限の見直しをしましょう。
テーマ・プラグインの再インストール
以前入れていたテーマやプラグインをバックアップからではなく新規にインストールし直してください。
※ここで一旦バックアップをとっても良いかも
wp-content/uploads/ フォルダのアップ
予めローカルで怪しいファイルの削除を確認した上で画像ファイルなどをアップしなおします。
データベースのパスワードの変更
データベースのパスワードを変更し、wp-config.phpに書いてあるデータベースのパスワードもあわせて変更して再度サーバーにアップロード
経過観察
以上の手順で復旧はできると思いますが、データベース内に悪意のある改竄をされていたり、画像ファイルなどに偽装されてプログラムが仕込まれている可能性もあり、後日再発する可能性もありますので、復旧してもしばらくはこまめに経過観察しましょう。
改竄されないために
とりあえずスキャン
復旧はしたものの、そもそも復旧したデータが既に改竄されている可能性もあります。
WordFenceというプラグインで一応ハッキングされているかどうかスキャンはできますので念の為試してみてください。
今までの手順で復旧した場合の対応以上の改竄はおそらく検出されないとは思いますが…気休め程度に。
管理画面BASIC認証の設定
管理画面にBASIC認証かけるだけで改竄リスクは大幅に抑えられると思います。
はじめてBASIC認証を設定する前に知っておくべきこと
WordPressの管理画面のセキュリティ対策にBASIC認証を設定しよう
2段階認証の設定
単純なログインURLの変更や画像認証はないよりはマシですが突破される可能性が結構ありますので、2段階認証を設定しましょう。先に紹介した WordFence にも2段階認証の機能があるようですが、他にも2段階認証のプラグインはいろいろありますので、調べてみてください。
WordFence と併せてこのあたりは近日別途ブログにしようと思います。
絶対に改竄されないために
ここまで書くだけでも大変ですし、実際対応も物凄く時間ががかります。対応自体が改竄内容によっては復旧に高度な技術が必要だったり、そもそも復旧不可だったりします。
先の「改竄されないために」など対策をとれば概ね問題はないのですが、不安を100%払拭したいとか、「WordPressって危ないんでしょ?」とか、単純に「対策するのが面倒」という方にお勧めなのが Shifter です。
Shifter は WordPressで作成したサイトを静的HTMLにして公開するサービスで、WordPressは編集時のみ起動するため、通常WordPressの管理画面自体が存在しないので、攻撃・改竄が100%不可能です。
また、確認して問題ない → HTML出力&リリースなので、改竄以外のアップデートのトラブルなどが発生しても、公開中のサイトは既にHTML出力されているものなので、余裕をもって対応作業も可能な安心・安全なサービスです。
お値段は通常の安価なレンタルサーバーに比べれば若干しますが、特に受託の場合クライアントに100%の安心を提供できるという意味でメリットのある選択ではないかなと思います。
※とは言えShihterの管理画面にログインされてごにょごにょとか、そもそも担当者脅してログインとか、厳密に言えばそういう手段として100%というのは世の中にありませんので、そこは空気を読んでいただければ幸いです。
なんか宣伝記事になってしまいましたが、これでShifterさん契約されても僕にはお金は入ってきません!
でも株式会社ベクトルはShifterテクノロジーパートナーとなっておりますのでよろしくお願いいたします!
さいごに
ちなみに改竄報告の1件はサイト名・サイトドメインなどから連想しやすい安直なパスワードで、もう一件はSiteGurdでログインURL変更設定していてもやられていました。
とりあえず…
簡単なパスワードでの運用は
自殺行為よ!
現場からは以上です。
明日ははしずめさんの「エンドユーザー3人に訊いた、VK Blocks Pro「投稿リスト」の推しポイント!」です。
この記事を書いた人
-
名古屋のウェブ制作会社数社に10年程度務めた後、株式会社ベクトル設立。
企画・運営・コンサルティング〜WordPressを中心としたシステム開発まで幅広く携わる。
[ 著書 ]
・いちばんやさしいWordPressの教本(共著)
・現場でかならず使われているWordPressデザインのメソッド(共著)
[ 最近のWordPressコミュニティでの活動 ]
WordCamp Tokoy 2023 セッションスピーカー
WordCamp Asia 2023 セッションスピーカー(LT)
WordCamp Niigata 2019 セッションスピーカー
WordCamp Haneda 2019 セッションスピーカー
WordCamp Osaka 2018 セッションスピーカー
WordCamp Kyoto 2017 セッションスピーカー
他
最近の投稿
フルサイト編集対応ブロックテーマ
WordPress テーマ X-T9 は、WordPress 5.9 から実装されたフルサイト編集機能に対応した「ブロックテーマ」と呼ばれる新しい形式のテーマです。
ヘッダーやフッターなど、今までのテーマではカスタマイズが難しかったエリアもノーコードで簡単・柔軟にカスタマイズする事ができます。
パターンを使って
よりクオリティの高いサイトに
パターンとは、WordPressのブロックを組み合わせて作ったデザインテンプレートのようなもの。プロのデザイナーが制作したパターンを300以上公開中!コピペしながら高品質なサイトを簡単に作れます。
ブロックエディターで
ABテストを
自由に作成できる VK AB Testing
VK AB Testing は、ABテストを実施するための WordPress 用プラグインです。ブロックエディターでテストパターンを自由に作成でき、ランダム表示とクリック計測が可能です。Webサイトや広告などの施策の改善にぜひご活用ください。