- 実践 WordPress ホーム
- セキュリティ強化
おすすめの WordPress セキュリティ初期設定
WordPress は世界中で最も多く使われている人気の CMS ですが、その人気の高さのためにクラッカーたちの攻撃の対象にされやすい側面があります。 そのため、 WordPress を利用する際はセキュリティに関係する設定を適切に行うことが非常に重要です。
ここでは WordPress のインストール後や WordPress サイトの公開後早いうちに行うべき基本的な初期設定・セットアップを紹介します。
確認時のバージョン
- WordPress
6.5.3
1. 最新バージョンにアップデートする
WordPress 本体とプラグインを最新版にアップデートします。 テーマも WordPress.org で配布されているものなどを使用している場合は最新版にアップデートしましょう。
WordPress 本体やプラグインの新しいバージョンのリリースは新しい機能の追加だけでなく新たに見つかった脆弱性の修正などを目的として行われます。 そのため、古いバージョンの WordPress 本体やプラグインには脆弱性が含まれていることがよくあり、それらを使い続けることはサイトが乗っ取られて悪用されたりサイト訪問者の損害を与えたりするリスクが伴います。 WordPress 本体やプラグインは原則最新版を使うことが重要です。
2. 自動アップデート機能を有効にする
WordPress 本体やプラグインが自動でアップデートされるように、 WordPress の自動アップデート機能を有効にします。
自動アップデート機能はデフォルトで有効化されているため利用するために特別な設定は必要ありませんが、対象のディレクトリやファイルのパーミッションが適切でないとうまく機能しないこともあります。 自動アップデートを意図して無効化していない場合でも、自動アップデートの処理が起動して処理が問題なく実行されるかを確認してください。
3. 使わないプラグインを削除する
使わないプラグイン、使い終わったプラグインをすべて無効化してアンインストール・削除します。
無効にしたプラグインでも脆弱性が含まれているものは悪意のあるユーザーに悪用されるリスクがあるため、プラグインは無効なものも含めてすべて最新版に保つ必要があります。 ただし、プラグインを最新版に保つのにも手間とコストがかかるので、使わないプラグインはすべて削除するのがセキュリティ・コストの面でよいとされています。
4. 管理者アカウントのセキュリティを強化する
管理者アカウントのセキュリティを強化します。 例えば次のような対策が有効です。
- 管理者アカウントのユーザー名を
admin
以外の推測しづらいものに設定する - 管理者アカウントのパスワードを推測しづらいものに設定する
- 必要な数以上の管理者アカウントが存在する場合は必要最小限のアカウントだけを残し残りは削除する
- 管理画面のログインページに reCAPTCHA や 2 要素認証を導入する(プラグインを利用する)
関連ページ:
5. HTTPS を導入する
HTTPS を導入します。
HTTPS が有効なウェブサイトの URL の先頭は http://
ではなく https://
になります。
http://
の通信はブラウザとサーバーがやり取りするときにデータが外部から丸見えの状態になっています。
そのため、例えば http://
の通信で管理画面にログインすると、ユーザー名やパスワード、セッションなどが第三者に漏洩し悪用されるリスクがあります。
また、 http://
でウェブフォームに入力されたデータは外部から丸見えの状態でサーバーに送信されるため、そこに氏名や住所、電話番号などが含まれていると漏洩するリスクがあります。
これはプライバシー上望ましくありません。
今日主流のレンタルサーバーのほとんどは HTTPS を無料でサポートしているため、導入するだけであれば金銭的コストはかかりません。
速度などの面でも HTTPS にはデメリットはほぼ無いので、あえて http://
を利用する理由はありません。
6. 使わない機能を無効化する
WordPress 本体に備わった機能のうち使わない機能を無効化します。 例えば、コーポレートサイトなどでよく無効化される機能として次のものがあります。
- ユーザー登録機能
- コメント投稿機能
- ピンバック・トラックバック機能
- XML-RPC 機能
これらを利用する場合はそのまま有効にしておけばよいですが、利用しない場合は無効化してしまうのがセキュリティ的にもパフォーマンス的にもよいです。
関連ページ:
7. セキュリティプラグインを導入する
セキュリティプラグインを導入します。 世界的に利用者数が多い定番のプラグインとして次のものがあります。
- Akismet: コメントのスパムチェックを行うプラグイン。WordPress 本体に同梱されています。
- Wordfence: ファイヤウォールやセキュリティ診断などを提供する総合セキュリティプラグイン。
- Really Simple CAPTCHA: ボットによるコメント投稿を防ぐ CAPTCHA 機能を提供します。
- Solid Security (旧 iThemes Security): 2 要素認証、ファイヤウォール、セキュリティ診断などを提供。
- SiteGuard WP Plugin: ログインページの強化機能を提供。URL 変更、CAPTCHA 追加、エラーメッセージ無効化など。
8. .htaccess
で公開不要なファイルへのアクセスを拒否する
Apache の設定ファイル .htaccess
で公開不要なファイルへのアクセスを拒否します。
例えば次のような記述を追加すると、 .
始まりのいわゆる隠しファイルへのアクセスを一括で拒否できます。
例えば次のような記述を追加すると、他の PHP ファイルから読み込むための include PHP ファイルへの直接のアクセスを一括で拒否できます。
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
.htaccess
でできるセキュリティ強化策は他にもいろいろあるので興味のある方は次のページもご覧ください。
関連ページ:
9. wp-config.php
ファイルを安全な場所に移動する
WordPress の設定ファイル wp-config.php
をウェブ上からアクセスできない、比較的全な場所に移動します。
wp-config.php
にはシークレットキーやデータベース接続情報などが記述されており、サーバーのトラブルなどで中身が第三者に閲覧されると管理画面にログインされたりデータベースの情報を窃取されたりするリスクに繋がります。
wp-config.php
はデフォルトで WordPress のインストールディレクトリ直下に設置されますが、インストールディレクトリの一つ上の階層に設置する方法が公式にサポートされています。
wp-config.php
を一つ上の階層に設置することがレンタルサーバーの制約などによりできない場合は、 wp-config.php
内の機密情報を別ファイルに抽出してそれを wp-config.php
から読み込む形にすることなどもわりとかんたんに実現できます。
関連ページ:
結び
ということで、 WordPress サイトのインストール後・公開後なるべく早く行うべき、基本的なセキュリティ関連の設定・対策をご紹介しました。