- 実践 WordPress ホーム
- セキュリティ強化
WordPress 本体やプラグインが書き換えられていないかをチェックする方法
WordPress の本体やプラグインのファイルが書き換えられていないかをチェックする方法を紹介します。
ファイルの書き換えチェックはどんなときに有用?
ファイルの書き換えチェックは次のような用途で使えます。
セキュリティ被害のチェック
WordPress サイトがハッキングされたりマルウェアに感染したりすると WordPress 本体やプラグインに含まれるファイルが改変されることがあります。 ファイルの書き換えをチェックすることでセキュリティ被害を発見できることがあります。
問題発生時のトラブルシューティング
WordPress サイトを運用していると「機能が正常に動作しない」「ページのレイアウトが崩れる」といった問題が発生することがありますが、その原因が WordPress 本体やプラグインのファイルの意図しない変更にあることがあります。 書き換えをチェックすることで問題の原因の絞り込みができます。
アップデート後のチェック
WordPress 本体やプラグインのアップデート後にファイルの書き換えチェックを行うことで、アップデートが適切に行われてすべてのファイルが正しく更新されたかを確認できます。
パッチ適用が正しく行われたかのチェック
WordPress 本体やコミュニティプラグインの書き換えは原則行うべきではありませんが、ときにはバグの修正などでパッチ適用が必要になることもあります。 パッチ適用後にファイルの書き換えチェックを行うことで、パッチが適切にあたったかどうかを確認できます。
WordPress でファイルの書き換えをチェックする方法
WordPress のコマンドラインツールである WP-CLI を使用します。
確認時のバージョン
前提条件
- WordPress サイトに SSH でアクセスできる
- WP-CLI がインストールされている
WordPress 本体をチェックする
wp core verify-checksums
コマンドを使います。
このコマンドは WordPress の公式リポジトリから WordPress をダウンロードして現在サイト上にある WordPress のファイル一式と比較してくれます。
出力サンプル
問題が無い場合は次のように出力されます。
例えばインストールディレクトリ直下の readme.html
ファイルが書き換えられていると次のように出力されます。
Warning: File doesn't verify against checksum: readme.html
Error: WordPress installation doesn't verify against checksums.
readme.html
ファイルが削除されてしまっている場合は次のように出力されます。
Warning: File doesn't exist: readme.html
Error: WordPress installation doesn't verify against checksums.
オプション
デフォルトでは WordPress がインストールされているルートディレクトリに WordPress 本体に含まれていないファイルが追加されていてもエラーにはなりません。
ルートディレクトリに追加されたファイルも検出したい場合は --include-root
オプションをつけます。
wp core verify-checksums
コマンドには次のオプションが用意されています。
OPTIONS
[--include-root]
Verify all files and folders in the root directory, and warn if any non-WordPress
items are found.
[--version=<version>]
Verify checksums against a specific version of WordPress.
[--locale=<locale>]
Verify checksums against a specific locale of WordPress.
[--insecure]
Retry downloads without certificate validation if TLS handshake fails. Note: This
makes the request vulnerable to a MITM attack.
プラグインをチェックする
wp plugin verify-checksums
コマンドを使います。
このコマンドも wp core verify-checksums
と同様に公式リポジトリからプラグインのファイルをダウンロードして現行のファイル一式と比較してくれます。
対象プラグインの指定方法
引数を指定しないとエラーになります:
wp plugin verify-checksums
Error: You need to specify either one or more plugin slugs to check or use the --all flag to check all plugins.
プラグインを指定する:
すべてのプラグインを対象にする:
一部のプラグインを除外してその他すべてのプラグインを対象にする:
出力サンプル
ただし、プラグインのチェックはプラグインが正しく認識される状況でのみ動作します。
例えばプラグインのメインファイルが大幅に書き換えられて Plugin Name
の行が削除されてしまっているようなケースではそのプラグインは正しくチェックされません。
オプション
wp plugin verify-checksums
コマンドには次のオプションが用意されています。
OPTIONS
[<plugin>...]
One or more plugins to verify.
[--all]
[<plugin>...]
One or [<plugin>...]
One or more plugins to verify.
[--all]
If set, all plugins will be verified.
[--strict]
If set, even "soft changes" like readme.txt changes will trigger
checksum errors.
[--version=<version>]
Verify checksums against a specific plugin version.
[--format=<format>]
Render output in a specific format.
---
default: table
options:
- table
- json
- csv
- yaml
- count
---
[--insecure]
Retry downloads without certificate validation if TLS handshake fails. Note: This
makes the request vulnerable to a MITM attack.
[--exclude=<name>]
Comma separated list of plugin names that should be excluded from verifying. more plugins to verify.
[--all]
If set, all plugins will be verified.
[--strict]
If set, even "soft changes" like readme.txt changes will trigger
checksum errors.
[--version=<version>]
Verify checksums against a specific plugin version.
[--format=<format>]
Render output in a specific format.
---
default: table
options:
- table
- json
- csv
- yaml
- count
---
[--insecure]
Retry downloads without certificate validation if TLS handshake fails. Note: This
makes the request vulnerable to a MITM attack.
[--exclude=<name>]
Comma separated list of plugin names that should be excluded from verifying.
以上です。
他の方法としては、例えば WordPress の環境を Git で管理していれば git diff
コマンドなどでも書き換えのチェックが可能です。
他にもいくつか方法はありますがおそらく最もスタンダードな方法はこの WP-CLI を使った方法かと思います。