WordPressサイトがハッキングされて403エラーに:原因、サイト復旧までの道のりとセキュリティ対策について

ブログ、ハッキングされたってよ

WordPressはセキュリティ対策が肝。そう実感させられる経験をしました。

そう、先日このブログがハッキングされたのです。

何が起こったのか、原因は何だったのか、また同じことを防ぐためにどのようなセキュリティ対策を行ったのか、長くなりましたがメモしておきます。

ブログダウンは突然に

そう、それは突然のことでした。私が利用しているエックスサーバーさんから、こんなメールが届きます。

 
エックスサーバー

平素は当サービスをご利用いただき誠にありがとうございます。
エックスサーバー カスタマーサポートでございます。

お客様のサーバーアカウントにおいて、サーバーに対する負荷が著しく高い状況を確認いたしました。

この度の負荷上昇に際してプロセスの稼働状況を確認しましたところ、以下の不正なプロセスが多数稼働しておりました。

▼稼働していた不正なプロセス
(cron.php のプロセス)

 
みつは
ぬ?
 
エックスサーバー

これを受け、当サポートにてセキュリティ調査を行いましたところ、お客様がご利用のプログラムにセキュリティ上致命的なバグ(脆弱性)が存在し、当該脆弱性を第三者に悪用されてしまった可能性が非常に高い状況でございました。

そのため、事後のご案内となり大変恐縮でございますが、緊急措置として下記制限を実施しております。

▼サポートにて実施した制限内容

・当該サーバーアカウントに対する緊急的なWebアクセス制限を実施

※上記処理に伴い、Webアクセスを行うと403エラーとなる状況です。

スパムメールの大量送信やフィッシングサイトの開設などの『不正アクセス』によるさらなる被害の発生を防ぐため、上記対応を実施しましたことを何卒ご了承くださいますようお願いいたします。

 
みつは
ぬおおおおおおおおお!

実際にサイトにアクセスしてみると、403エラーが出て完全にブログがダウンしています。

403エラーでブログが表示されない

 
みつは
ふ、ふおおおおおお

原因は何か

エックスサーバーさんからのメールが続きます。

 
エックスサーバー

▼不正アクセスの根本原因
————————————————————
(1)お客様が運用中のプログラムにおいてセキュリティ上問題のある致命的なバグ(脆弱性)が存在し、第三者に脆弱性を利用された。
→該当プログラムが「どんなコマンドでも実行可能」である場合、該当プログラムを経由して不正なコマンドの実行や、不正なファイルの設置が行えてしまいます。

(2)お客様のサーバーアカウントに関するFTP情報が流出し、第三者に不正にFTP接続をされた。
→FTP操作自体によるファイル改ざんはもとより、任意のプログラムを設置することでどんなコマンドでも実行できてしまいます。
————————————————————

お客様のサーバーアカウントにおいては不審なFTPアクセスが見られないことから、消去法的なご案内となりますが、お客様が運用中のプログラムに脆弱性が存在し、該当脆弱性を悪用されてしまった可能性が高いものと思われます。

また、今回の調査では不審なアクセスは見受けられませんでしたが、WordpressなどのCMSの管理画面に対する、パスワード総当りなどによる国外からの攻撃が多発しております。

CMSをご利用の場合、パスワードをより強固な物へ変更するなど、念のための対策を併せてご検討くださいますようお願い申し上げます。

エックスサーバーさんからの回答と、自分自身の状況から読み取れたことは下記。

  1. エックスサーバーさんのメールによると、FTP情報流出によるものではない。原因は「運用中のプログラムにおいてセキュリティ上問題のある致命的なバグ(脆弱性)が存在し、第三者に脆弱性を利用された」から。
  2. WordPressのダッシュボード経由でのログインではなさそう。プラグイン「SiteGuard WP Plugin」を使用しており、誰かがログインするとメールが飛んでくる仕様。
  3. サイトはSSL導入済。WordPressのバージョンは最新。
  4. 海外在住のため、エックスサーバーさんの「WordPressセキュリティ設定」の「ダッシュボードアクセス・REST API アクセス制限」をOFFにしていた。
  5. 海外在住かつエディタ「MarsEdit」を使用していた関係で、エックスサーバーさんの「WordPressセキュリティ設定」の「XML-RPC API アクセス制限」もOFFにしていた(WordPressで攻撃を受けやすいファイルのひとつとして、よくxmlrpc.phpが挙がる)。
  6. 無料テーマ「Xeory Base」を使用しており、プラグインが15個くらい入っていた。不正なファイルログ一覧の中に、「/xeory_base/functions.php」や「/plugins/wp-social-bookmarking-light」が含まれていた。
 
みつは
脆弱性の玉手箱や……!!

これ、4〜6どれから起こっていてもおかしくないやつ……!っていうか海外在住とはいえ、自分でセキュリティ弱くしてるし国外からのアクセス許してるってもう自業自得……!!

という訳で、しっかり反省してサイトを復旧させ、4〜6のセキュリティ対策を練ることになりました。

バックアップだけは最低限取ってて本当良かった……。

サイトの復旧で大変だったこと

ドメイン上のデータ全削除

エックスサーバーさんからの指示は、結構大変なものでした。

 
undefined
この度のような不正アクセスの被害に遭われた場合、検出された不正なファイル以外にも、他の不正なファイルやバックドア(不正アクセスを容易とする仕組み)などが設置されている可能性が考えられます。

また、プログラムはその仕組み上、上位フォルダに対するファイル操作(ファイルの設置や編集)も行えてしまいます。

そのため、凍結の解除にあたっては、検出された不正なファイルだけではなく、サーバーアカウント全体のすべてのファイルを削除していただくようお願いしております。

 
みつは
ぜ、全部ですか……
 
エックスサーバー
今後、同様の状況が再度確認された場合、さらなる制限を実施する可能性がございます。

不正アクセスによる被害の発生・再発を防ぐための措置でございます。何卒ご理解くださいますようお願いいたします。

 
みつは
ひいいい、すみませんでしたああ
 
みつは
以上、何卒よろしくお願い申し上げます。
ご不明な点などございましたら、お気軽にお問い合わせください。
 
みつは
最後ちょっと脅してきたけどいい人……

地道にサイトを設定しなおして復旧

そこからはもう、地道・地道な復旧。エックスサーバー利用者向けの備忘録として簡単にステップを載せておきます。

  1. エックスサーバーさんからの指示に従い、独自ドメインをすべて削除。初期ドメインを初期化。FTPで、なにか余計なファイルが残っていないか確認。データも何もかも綺麗さっぱり消えました。
  2. エックスサーバーさんに連絡。サポート体制がしっかりしているので、翌日には連絡が来て、とりあえず403エラーを解除。
  3. ドメインを再設定。サイトにアクセスすると、こんな表示になりました。

  4. WordPressをインストールエックスサーバーのサーバーパネル、左メニューから「WordPress簡単インストール」を選択し、必要な情報を地道に入れていきます。

    ここで1つだけ気をつけるのが、データベースの選択。一番下の「データベース」にて、「作成済みのデータベースを利用する」を選択します。利用しているサイトが1つしかない人は、「<名前>_wp1」という名前のケースが多いのではないでしょうか。データベースのパスワードを入力して、確認画面に進みます。
    「データベースのパスワードなんか控えてない!」という私みたいな方は、エックスサーバーのサーバーパネルから「MySQL設定」>「MySQLユーザ一覧」というところからパスワードを変更可能です。
  5. WordPressが無事にインストールできたら、バックアップデータを開き、FTP経由で必要なファイルを入れ直します。「wp-content」と「wp-includes」フォルダから、テーマ・プラグイン・画像データなど、必要なものだけを戻します。バックアップだけは最低限取ってて本当良かった……(2回目)。
  6. ここまですると、とりあえずサイト復旧は完了。ただ、根本原因であるセキュリティは別途対策する必要があります。

WordPressサイトのセキュリティを強化するうえでやったこと

当たり前なところから点検し、手をつけて行きました。

  1. WordPressのパスワードを、より強固なものに変更FTPなどのパスワード含めて、弱そうなもの・使いまわしていたものは全部変更。
  2. WordPressのバージョンが最新であることを確認。自動更新もOnに。
  3. エックスサーバーのサーバーパネルから「php.ini設定」を確認。これはエックスサーバーさんからのメールで、PHPプログラムを利用している場合はここの設定をOFFにすることを強く推奨されていたため。「allow_url_fopen」と「allow_url_include」がどちらも「無効(Off)」であることを確認。
  4. WordPressのセキュリティプラグインSiteGuard WP Pluginを入れ、ログイン画面を変更。「<サイト名>/wp-admin/ 」で誰でもアクセスできてしまう状況を変更し、別のログイン用URLを発行する。
  5. さらに、WordPressのセキュリティプラグインminiOrange 2 Factor Authenticationを入れ、WordPress管理画面の二段階認証を設定。
  6. プラグインの見直し。15個以上プラグインが入っていたため、どうしてもプラグインが多いと脆弱性が生まれやすい状況ではありました。私の場合、ここは無料テーマから有料テーマのTHE・THOR(ザ・トール)に変更することで解決。入れているプラグインは自動更新をOnに。
    ※実はこの決断が思った以上に良かった。正直ザ・トールのおかげでサイト管理に関する色んな面の悩みが減り、コンテンツに集中できるようになりました。現在プラグインで入れているのは、上記のセキュリティ系プラグイン2つ、アンチスパムAkismet Anti-Spam、GoogleのSite Kit、バックアップのBackWPup、画像最適化のEWWW Image Optimizerの6つだけ。
  7. 有料テーマ「THE・THOR(ザ・トール)のセキュリティ設定から、WordPressログイン画面にIDではなくメールアドレスでログインできるように設定(実はログインIDを推測するのは簡単)。
  8. 海外在住者にとってはここが肝。エックスサーバーの「WordPressセキュリティ設定」内にある、国外IPアクセス制限の項目をすべてOnに変更。日本在住かつMarsEditなどのエディタを使わない場合はここの設定をそもそもOffにする必要すらありません。

    1. とはいえ、海外在住の場合はこれをやると、自分のサイトにアクセスできなくなってしまいます。対策として、個別のIPアドレス(自分のIPアドレスだけ)を指定して制限を解除することで、この設定をOnにしたまま海外からでもアクセスできます。詳細はこちらの記事にお世話になりました。
    2. XML-RPC APIアクセス制限を解除することでMarsEditを使えなくなりました。オフラインでガンガンブログを編集できるので、このブログを始める前、世界一周をしながら仕事をするうえではすごく役に立っていたのですが、現状コロナウィルスの影響もありオフライン作業をする必要もなくなりました。現在はアクセス制限をOnにしたうえで、WordPressエディタで編集しています。が、たまに標準エディタで予想外のバグが生じることがあるので、将来的にはなにか対策をしようかなと考えています。

  9.  サイトの常時SSL化。
    1. エックスサーバーの「SSL設定」から「独自SSL設定追加」を選択。
    2. サイトを常時「https://~」にしたい(常時SSL化)場合、.htaccessを編集をする必要があります。下記を参照してください。

      独自SSLの設定が完了した時点では、自動的に「https://~」のURLへ転送されません。

      Webサイトにおけるすべての表示を常時SSL化する場合は、「.htaccess編集」で以下の記述を追加します。

      RewriteEngine OnRewriteCond %{HTTPS} !onRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

      「http://~」のURLでアクセスした際、自動的に「https://~」のURLへ転送されていれば設定完了です。

      参照元:https://www.xserver.ne.jp/manual/man_server_fullssl.php

 

ハッキングの標的になって思ったこと

取り急ぎ、その後は特に怪しい動きは出ていません。
もちろんこれでセキュリティ面で万全と言えるかと言われると、まだまだできることはあると思います。今までマイナス評価だったものがゼロになった、という感じでしょうか。
当たり前のことにはなりますが、
  • WordPressブログを運用するうえでセキュリティ対策は必須。ハッキングされる前にやっておく。
  • いざというときのためのバックアップ大事(3回目)。
ということを、今回身をもって体験することになりました。
あと思ったのは「エックスサーバーさんしっかりしてるなあ」ということ。彼らが対策をしてくれていなければもっと大きなトラブルになっていたかもしれないと思うと怖いです。
ブログ運営されている方で、私のようにセキュリティ面をあまり気にしていなかった方、ぜひ今のうちに対策を……。
 
本ブログでは2年以上、バズ部さんの無料WordPressテーマ「Xeory Base」を使ってきました。ただ、プラグインを減らしたい、もっとブログ運用を簡単にしたいという理由で、現在は「THE・THOR(ザ・トール)という有料テーマを利用しています。

思い切って購入してよかったなと感じることが多いです。特に良かったのは、PHPやCSSなどを直接編集する必要がほとんどなくなり、書くことに集中できるようになったこと。現在のデザインは、ザ・トールのテンプレートのひとつを、一切コード編集をせずに、UI上でカスタマイズしているだけです。プラグインの数も半分以下に減り、セキュリティ面での心配も減りました。

2020年10月31日まで2,000円割引キャンペーンを行っているそうなので、無料テーマから有料テーマへの切り替えを考えている方、気になる方はぜひチェックしてみてくださいね。

詳細はこちらから

日々の学びや気付きをつぶやいています