2023年07月11日

[WordPress][プラグイン]
WordPressの改ざん、マルウェアなどのハッキング対策について考える

最近、サイトが改ざんされた、急にサイトが表示されなくなったというご相談を受けることが多く、以前よりもアタックが多くなってきている印象があります。
今回はWordPressのセキュリティと、何かあった場合の対処法について考えてみたいと思います。
正確にはハッキングではなくクラッキングと呼ぶべきですが、このページでは一般的に使われる名称としてハッキングと呼称します。

WordPressで受ける改ざんマルウェア埋め込みなどハッキングの種類

WordPressを使ったサイトの改ざんにはどのような方法があるのでしょうか。
検索で見つかった種類を挙げます。

  1. テーマやプラグインの脆弱性の悪用:
    WordPressのテーマやプラグインにはセキュリティ上の脆弱性が存在する場合に、これらの脆弱性を利用してサイトに侵入しようとします。
  2. SQLインジェクション:
    フォームやURLパラメーターなどの入力フィールドに対して不正なSQLクエリを注入することで、データベースにアクセスしたり、データを改ざんしたりする攻撃です。
  3. ディレクトリトラバーサル:
    セキュリティ上の制限を回避して、サーバーのファイルシステム内の他のディレクトリにアクセスする攻撃です。設定ファイルなどを読み取られる恐れがあります。
  4. ファイルのアップロードの悪用:
    ユーザーがアップロードできるファイルに対して、悪意のあるスクリプトやバックドアをアップロードし、サイトにアクセスしたり制御したりする攻撃です。
  5. ドライブバイダウンロード:
    サイトの訪問者に対して、悪意のあるスクリプトやマルウェアを配信する攻撃です。訪問者がサイトにアクセスした瞬間に攻撃が実行されることがあります。
  6. Brute Force攻撃:
    管理者パスワードを推測するために、ハッカーが自動化ツールを使用して大量のパスワードの組み合わせを試行する攻撃です。
  7. セッションハイジャック:
    セッションIDを盗み、合法的なユーザーの身分をなりすますことで、サイトに不正なアクセスを行う攻撃です。

この他にも色々検索すれば見つかると思います。
WordPressそのもの、プラグインへのアタックだけでなく、サーバーやミドルウェアの脆弱性などを突かれる可能性もあります。

改ざんなどハッキングの対策方法

対策のしやすさ、効果の高さなど判断基準はいくつかあると思いますが、方法とその解説をしていきます。

WordPress本体とプラグイン、テーマを最新のバージョンにアップデートする

ゼロデイ攻撃(ゼロデイアタック)と呼ばれる方法があるように、脆弱性が見つかったらいわゆるダークウェブと言われる違法性の高い情報サイトでその情報が流通され、公開・対策される前にその脆弱性を突いてきます。
そのくらいのスピード感で責められるとこの対策も意味がないかもしれませんが、既知の脆弱性に関してはきちんと蓋をしておくのが良いでしょう。
また、そもそもサイト構築の際に極力プラグインに頼らない構造で構築することが大事です。
プラグインは便利な機能を簡単に付与できますが、それが常にアップデートされるとは限りません。
やむなく使用する場合は、更新頻度が高いもの、多くのユーザーに使用されているものを目安に選ぶようにしましょう。
そして使用していないプラグインは削除しておくことをおすすめします。

ログイン画面に認証機能を付ける

Brute Force攻撃のようなパスワード攻撃を回避するために管理画面に対して制限をかける方法があります。
WordPressで管理されているサイトは、ドメイン直下の/wp-adminにアクセスすればログインパネルが見えてしまうことが多く、IDとパスワードを試し放題の状況になっているサイトも少なくありません。
簡単な方法では、/wp-adminにBasic認証をかけて、そもそもログインパネルを表示させない方法があります。
しかしBasic認証をかけることで内部の動作が意図したものではなくなる場合もありますので、その場合はSiteGuardなどのプラグインを使って機械的にログインしにくくする方法もあります。

サーバーのセキュリティ機能は一番厳しい状態にしておく

VPSなどをお使いの場合は別ですが、レンタルサーバーの場合はセキュリティのオプションが提示されていることがあります。

例えば、以下のような設定が可能です。

WAF

WAFは、Webアプリケーションファイアウォールです。
不正なアクセスを検知して遮断する機能です。
先程紹介したSiteGuardプラグインにもWAF機能がありますので、サーバー側で対応していない場合はプラグインの使用も有効です。
ただ、WAFはきちんと設定しないうちは例えば記事投稿も誤認識してガードが発動することがありますので適切な設定が必要になります。

FTP接続許可

IPアドレスを設定することでそのIPアドレスから以外のFTP接続を禁止することができる設定です。
ご自身の接続IPアドレスを確認してそれ以外は接続しないように設定する方法が一般的です。

国外IPアドレス接続設定

国外からのアクセスを弾く設定です。

サイト内のファイルのパーミッションを最適なものにする

ファイルの書き換えができないようにパーミッションを変更することが推奨されています。
ここではパーミッションに関する詳しい解説はしませんが、そのファイルにアクセスできる権限を設定するものです。
運用との兼ね合いもあると思いますので、個別の設定に関しては適宜調整してください。

.htaccess

パーマリンクの書き換えができるようにする場合は「606」を設定します。
固定で変更する必要がない場合は、「604」に設定します。

wp-config.php

ディレクトリトラバーサル攻撃を防ぐためにも「400」が望ましいですが、共有サーバーなどで変更できない場合は「600」を設定します。

(一般的な)ファイル

「604」が良いでしょう。

(一般的な)ディレクトリ

「705」などが良いと思いますが、管理画面から書き込みや画像の登録ができない場合は「707」に設定してみてください。

その他、サーバーによってはそれぞれのルールを設定しているところもありますので、ご注意ください。
また設定後、ログインや記事投稿、画像のアップロード、プラグインの登録、各機能が問題なく動作するかなどご確認ください。

サイト内で定期的にウィルスチェックする

WordPressのプラグインで改ざんやマルウェアをチェックするものがあります。
いくつか試してみましたが、全体のスキャンなどはできますが、ウィルスの定義ファイルを定期的にアップデートする場合は有料というものが多いようです。

Anti-Malware Security

新規追加されてしまったファイルは削除し、改ざんされてしまったファイルは正しいファイルに復旧してくれるというプラグインです。
導入の際にユーザー登録が必要です。

インストールの仕方は、「プラグイン」の「新規追加」から「Anti-Malware Security」で検索し、有効化します。

右側にある「更新情報&登録」内にある「無料でキーをゲット」をクリックし、「名前」「メールアドレス」を入力し「Register Now!」をクリックして登録が完了するのを待ちます。

登録が完了したら、「完全なスキャンを実行する」をクリックするとすぐにサイト内のスキャンがはじまります。
「完全なスキャンを実行する」は、時間がかかりますので、特に問題がなく手っ取り早く必要なところだけチェックしたいのであればクイックスキャンで必要な箇所だけスキャンすることもできます。

問題がある場合は、図のように「既知の脅威」として抽出されますので、「選択されたファイルを自動的に修正するようになりました」という青いボタンを押すと修正してくれます。

感染していることがわかっていても除去できない場合があるので、自動で修復してくれる機能は大変ありがたいです。

WP Doctor

WP Doctorは、設定や定義ファイルのせいかもしれませんがAnti-Malware Securityよりも精度が高くなく公式に載っているプラグインでもないので少々不安なところがあります。

しかし、自動で毎日定期スキャンして問題を見つけた場合にメールで通知してくれる機能やサイト全体のセキュリティを上げてくれる機能など無料でも使える機能が豊富なので、常時スキャンはしておいて、問題を見つけた場合にAnti-Malware Securityで細かく精査するなどの運用でも良いのかなと思います。
(ただしWP-DoctorはDBが無駄に大きくなる問題があるようです。WP-OptimizeなどのDBのクリーンアップを行えるプラグインとの併用がいいようです。)

いろいろ対策しても改ざんにあってしまったら・・・

バックアップがあるかないかで対応策が大きく異なります。
何かあったときに備えて、まずは二重、三重のバックアップを用意しておきましょう。

バックアップは、プラグインでも行うことができます。

プラグインでバックアップする場合は、All-in-One WP Migrationがおすすめです。

All-in-One WP Migrationは、「バックアップを作成」というボタンを押すだけでサーバー内にDBも含めたファイル一式をまるごと保存してくれます。
例えばサイトを引っ越ししたい場合も、引越し先に同じプラグインを入れてバックアップファイルをインポートすればドメイン名も自動的に変更してくれて移転が完了するという優れもの。
同じサーバーに保存するのが不安な場合は、ファイルでローカルに保存しておいてもいいですし、FTP Extensionを購入すればネットワーク経由で好きなところにFTP保存できます。

バックアップがない、困った・・・という場合。
ご利用のサーバーでバックアップのオプションはないでしょうか。
VPSでは難しいですが、レンタルサーバーでは自動で毎日バックアップを自動的に保存している場合もありますし、有料オプションで前日の状態に戻してくれることができるサーバーもあります。
復旧した場合でも、すでにマルウェアなどが埋め込まれていることが予想されますので、復旧後速やかに上で紹介したようなウィルスチェックプラグインなどでサイト全体をスキャンし、対策する必要があります。

改ざんされたサイトの復旧作業を行う場合は、可能であれば通常使うPCとは別の何もないマシンを用意し、ウィルスチェッカーをしっかり用意してからの作業をおすすめします。
サーバー上にあるファイルの改ざん内容を確認しようとしてウィルスチェックにひっかかったことがあります。
サーバーからローカルファイルに感染させることも目的にあるのかもしれませんね。

バックアップが何もないが至急回復させなければいけない、という場合、自力で管理パネルにアクセスできるのであれば上記のウィルスチェックプラグインで復旧できる場合もあります。
しかしやはり何か穴があったから改ざんされたわけですから、通常アクセスできるようにする他に、大至急穴を塞ぐ必要があります。

自力で管理パネルにアクセスも難しい場合は専門家に相談しましょう。

まとめ

駆け足になりましたが、お使いのサイトが改ざんやハッキングなどでサービス不可にならないようにする備えと、もし改ざんされた場合の対応策を挙げてみました。
この他にもできることはいろいろありますので、気になった方はお使いのサーバーのセキュリティ関連の説明などよく読んで適切に対応することをおすすめいたします。

何回か改ざんされたサイトの修正対応をしたことがありますが、改ざんされてからの対応にはかなり時間が取られます。
常にに備えて目を光らせておいたほうが良いでしょう。

この記事を書いた人

おおつき@TTI

Webディレクター、Webコンサルタント、Webコーダー、日曜プログラマー、他色々やってます。

気になったら
まずはご相談を

あなたの悩みのために専門家がチームを組み、課題解決に取り組みます。
まずはお気軽にお問い合わせください。

日本全国どこでも対応します。