ホームページが乗っ取られた(ハッキングされた)、見覚えのないページが増えている、Googleで検索すると「このサイトは危険です」と出る。札幌でもこの相談は増えています。サイトを作った会社が保守を請け負っていなかったり、そもそも連絡がつかなかったりして、どこから手をつけていいか分からないまま時間が過ぎるケースがほとんどです。
この記事では、WordPressサイトが侵害されたときに当社が保守契約先で実際にやっている手順を、順番どおりに書きます。自社で対応する場合も、制作会社に頼む場合も、やることは同じです。
先に結論:乗っ取り・ハッキングへの対応は「止める・戻す・閉じる・報告する」の順番
| 順番 | やること | 目安 |
|---|---|---|
| 1. 止める | サイトを公開停止にして被害を広げない | 気づいた直後 |
| 2. 戻す | 侵入前のバックアップから復元する | 当日中 |
| 3. 閉じる | 侵入経路を特定してふさぐ | 復元と同時 |
| 4. 報告する | 経路と影響範囲を書面に残し、必要なら関係先へ連絡 | 復旧後すぐ |
よくある失敗は、2の「戻す」を飛ばして、改ざんされたファイルを目で探して消そうとすることです。攻撃者は複数の場所に入口を残しているので、見つけたものだけ消しても数日で元に戻ります。
1. 止める
まず、サイトを人に見せない状態にします。
- サーバー会社の管理画面でサイトを停止するか、サーバー会社に停止を依頼する
- 停止できない場合は、メンテナンス表示に切り替える
- 管理画面のパスワード、サーバーのFTP・SSHのパスワード、データベースのパスワードを変える
改ざんされたページが公開されたままだと、訪問者がマルウェアに感染したり、フィッシングサイトへ飛ばされたりします。この状態が続くとGoogleのセーフブラウジングに登録され、検索結果とブラウザに警告が出ます。警告は解除申請が必要で、解除まで数日かかることがあります。止めるのが早いほど、ここまで行かずに済みます。
2. 戻す
侵入される前の状態のバックアップを選んで、まるごと戻します。ここで2つ問題が出ます。
どの時点のバックアップが「侵入前」か分からない
改ざんに気づいた日と、侵入された日は違います。攻撃者は入ってすぐには何もせず、数週間後に動くことがあります。だから、気づいた前日のバックアップに戻しても、すでに入口が仕込まれている可能性があります。
侵入日を絞り込む手がかりは次のとおりです。
- サーバーのアクセスログで、見覚えのないファイルへのPOSTリクエストがいつから始まったか
- WordPressのコアファイルとテーマ・プラグインのファイルを、公式の配布物と突き合わせて、改ざんされたファイルの更新日時を見る
- 管理画面に見覚えのないユーザーが作られた日時
ログが残っていないと、この特定ができません。レンタルサーバーのログは数週間で消えるので、保守ではログもバックアップの対象に入れておく必要があります。
バックアップがすべて汚染されている
バックアップの保存期間が30日で、侵入が31日以上前だった場合、手元のバックアップは全世代が侵入後のものになります。これが一番困る状況で、この場合は「汚染されたファイルを手作業で取り除く」しかなくなり、完全に取り除けた保証が持てません。
対策は、日次のバックアップとは別に、週次や月次の世代を長く残しておくことです。当社の保守プランでは、日次(14〜90日)に加えて、全プランで週次を約3か月分、月次を1年分保存しています。1年前の世代があれば、侵入日がかなり前でも「確実に侵入前」と言える復元点を選べます。
復元先
汚染の疑いが少しでも残るなら、同じサーバーに戻さず、新しいサーバーを用意してそこに復元し、ドメインの向き先を切り替えます。サーバー内の別の場所に攻撃者のファイルが残っているケースがあるためです。
3. 閉じる
復元しただけでは、同じ入口からまた入られます。侵入経路をふさぎます。
- 脆弱性のあるプラグイン・テーマを更新する。修正版が出ていないものは停止するか、別のものに差し替える
- WordPress本体とPHPを最新の安定版にする
- 管理者ユーザーを棚卸しして、不要なものを削除する。残すユーザーのパスワードを変え、二段階認証を入れる
- 漏れた可能性のある認証情報(FTP、データベース、外部サービスのAPIキー)をすべて変える
- ログイン画面への総当たり対策(試行回数制限、ログインURLの変更)を入れる
経路として多いのは、更新を止めていたプラグインの既知の脆弱性と、使い回していたパスワードです。どちらも、保守で毎日プラグインの脆弱性情報を照合し、更新を当て続けていれば防げたものです。
4. 報告する
復旧したら、何が起きたかを書面に残します。
- 侵入日(推定)と気づいた日
- 侵入経路
- 改ざん・漏えいの影響範囲(どのファイル、どのデータ)
- 復元に使ったバックアップの日時
- 閉鎖のためにやったこと
フォームから送られた個人情報が入っているデータベースに影響が及んでいた場合は、個人情報保護委員会への報告と本人への通知の要否を確認します。当社はこの判断の専門家ではないので、該当しそうなときは弁護士か専門機関への相談を勧めています。
Googleに警告が出ている場合は、Search Consoleの「セキュリティの問題」から再審査をリクエストします。改ざんが残っていると通らないので、復旧と閉鎖を終えてから申請します。
乗っ取られないために、日常でやること
復旧は時間もお金もかかります。日常の保守でやることは地味ですが、全部で乗っ取りの入口をふさぐものです。
- WordPress本体のセキュリティ更新を当て続ける
- プラグイン・テーマの脆弱性情報を毎日確認し、該当があれば期限を決めて更新する
- ファイル・データベース・ログを毎日、サーバーの外に暗号化して保存する。一定期間は消せない設定にする
- コアファイルの改ざん検知を定期的に回す
- 管理画面のログイン防御と、不要なユーザーの削除
当社の保守プランは、これを月額5,000円から代行しています。更新の当て方や脆弱性の対応期限、侵入が起きたときにどこまで追加料金なしでやるかは、ホームページ保守プランと利用規約に書いています。保守にいくらかかるのが普通かは、WordPress保守費用の相場にまとめています。
今まさに乗っ取られている方へ
この記事を読んでいる時点でサイトが改ざんされているなら、まずサーバー会社に停止を依頼してください。そのあとの復元と閉鎖は、他社制作のサイトでも対応します。保守契約がなくても、障害復旧・マルウェア駆除として30,000円から引き受けています。状況と今わかっていることをお問い合わせから送ってください。
参考
- WordPress.org「FAQ My site was hacked」: https://wordpress.org/documentation/article/faq-my-site-was-hacked/
- Google web.dev「Help, I think I've been hacked」: https://web.dev/articles/hacked
