WordPressサイトを安全にする方法 – WordPressセキュリティ完全ガイド

WordPressセキュリティガイド

あなたのウェブサイトは見栄えがよく、優れたトラフィックがあり、全体として満足しているでしょう。しかし、サイトがハッキングされ、コンテンツ、顧客、サイトへのアクセスを失ってしまえば、これらすべては無意味になります。

そうした事態を防ぐために、私はあなたのWordPressサイトのためにこの包括的なセキュリティの考え方をまとめました。

私はHardening WordPressの記事全体を読み込み、すべてのセキュリティ推奨事項を分かりやすいステップバイステップのガイドで実装する方法を示し、あなたのWordPressサイトをハッキングの試みに対して鉄壁にする方法をお伝えします。

動画: WordPressサイトを安全にする方法

WordPressサイトを安全にする方法に関するこの記事を読むより動画を見るほうが好きな方は、こちらの動画をご覧ください:

このような動画をもっと見たいですか?
Check out our YouTubeチャンネル。

この記事を3つのステップに分けました。

  • まず、安全なWordPressサイトの土台となるホスティングプロバイダーを見ます。
  • 2番目のステップでは、新しいプラグインやテーマをインストールする際のセーフティネットを作るために「WP STAGING」プラグインをインストールします。また、最悪の場合、ハッキング攻撃によってWordPressサイトを素早く復元するためのバックアッププラグインも設定します。
  • 最後のステップでは、攻撃者が私たちのサイトにアクセスするのを防ぐために、セキュリティプラグイン「Solid Security」を設定します。

適切なホスティングプロバイダーの選択

まずは、サイトのセキュリティの土台であるホスティングプロバイダーから始めましょう。

世の中には非常に多くのウェブホストがあり、ほとんどはWordPressの最低要件を満たしますが、その中から1つを選ぶのは時間がかかります。

  1. PHPバージョン7.4以上。
  2. MySQLバージョン8.0以上、またはMariaDBバージョン10.5以上。
  3. HTTPSサポート

[これはWordPress 6.7 – 2025年3月時点で有効です]

いずれにせよ、契約しているプロバイダーがこれらの要件を満たしているか確認してください。

どのプロバイダーを選ぶべきか分からない場合は、WordPress.orgが推奨するホスティングプロバイダーの1つを選びましょう。

Bluehost WordPressホスティングプロバイダー
Bluehost
DreamHost WordPressホスティングプロバイダー
DreamHost
SiteGround WordPressホスティングプロバイダー
SiteGround

すでに推奨されているプロバイダーの1つを利用しているか、自分のプロバイダーのセキュリティ基準を確認済みなら、引き続きサイトの安全対策を進めて構いません。

安全なアップデートとバックアップの作成

WordPressコアとプラグインを定期的にアップデートすることは、セキュリティ問題やエラーを修正するために推奨されます。古いソフトウェアはセキュリティアップデートを受け取らなくなり、サイトは悪意あるハッキングの試みに対してはるかに脆弱になります。

ですから、WordPressコア、プラグイン、テーマを最新の状態に保つようにしましょう。WordPressのダッシュボードを開き、「更新」をクリックします。WordPressコアシステム、プラグイン、テーマのアップデートの概要が表示されます。

WordPressのアップデート
WordPress Updates

一部のWordPressユーザーは、自分のWordPressサイトをアップデートすることを恐れています。そうすることでサイトが壊れるのではと心配するのです。

WordPress Critical Error

このテーマは、「なぜ、そしてどうやってWordPress自動更新を無効にすべきか」という別の記事で扱っています。

「WP STAGING」による安全なアップデート

テストや調整中のサイトへのダメージを防ぐために、無料プラグイン「WP STAGING」を使うことができます。

サイドメニューの「プラグイン」エリアを開き、「新規追加」をクリックします。次に検索バーに「WP STAGING」と入力します。プラグインをインストールして有効化します。

WP Stagingプラグイン
WP STAGING Plugin

WP STAGINGプラグインを開きます。次に「Create Staging Site」をクリックし、名前を付けて「Start Cloning」をクリックします。プラグインがサイトのコピーを作成します。その後、「Open Staging Site」ボタンを使ってステージングサイトにアクセスし、本番サイトを危険にさらさずに安全な環境ですべての変更を試すことができます。

WP Staging 新しいステージングサイトを作成
WP STAGING Create New Staging Site

直接ウェブサイト上で作業するのではなく、すぐに実装に取り掛かり、記事の調整をステージングサイトでテストすることをおすすめします。

オレンジ色のメニューバーで、WP STAGINGによって作成されたステージングサイト上で作業していることが分かります。

WPSTAGINGのオレンジ色のメニューバー
WPSTAGING Orange Menu Bar

「WP Staging」によるバックアップの作成

サイトのバックアップは、すべてのWordPressサイトにとって基本的なプロセスです。最悪の場合、サイトがハッキングされたときに進捗、データ、注文をすべて失わないようにするためには、WordPressサイトのバックアップが必要です。

始めましょう。

WordPress > プラグイン > 新規追加に行き、「WP STAGING」を検索します。

プラグインのインストール方法が分からない場合は、私たちの「How to install WP STAGING | PRO」の記事を参照してください。

次に「Backup & Migration」ボタンをクリックします。WP STAGING | PROが既存のバックアップを検索します。

WP Staging Backup & Restoreボタン
Backup & Restore Button

選択肢は「Create Backup」と「Upload Backup」です。

「Create a backup」をクリックします。

WP Staging Create Backupボタン
Create a New Backup Button

任意で、バックアップを識別できる名前を付けることができます。

たとえば、WooCommerceや他のプラグインをアップデートする予定がある場合、バックアップに「Backup before installing WooCommerce」と名付けることができます。

次に、WP STAGING | PROがバックアップに含めるべきサイトのコンポーネントを選択します。特定のテストを行いたい場合を除き、すべてのチェックボックスにチェックを入れたままにします。次に「Start Backup」をクリックします。

WP Staging サイトのバックアップを作成
Start the Backup Process

バックアップ作成にかかる時間はさまざまで、サイトのサイズによって異なりますが、WP STAGINGのバックアップ機能はかなり高速で、通常は他のバックアップツールよりもはるかに速いです。特に大規模なサイトでは、他のツールに比べて性能上の大きなアドバンテージに気づくでしょう。

WP Stagingバックアップのプロセス
The Backup is Completed
WP Stagingバックアップ完了

バックアップが完了すると、新しく作成されたバックアップは「Your Backups」リストに表示されます。アイコンはバックアップに含まれるコンポーネントを示しています。

WP Stagingバックアップに含まれるもの

バックアップファイルのダウンロード

バックアップをダウンロードするには、ActionsとDownloadをクリックします。これにより、拡張子「.wpstg」のファイルがダウンロードされます。

WP Stagingバックアップのダウンロードオプション
Download the Backup

バックアップファイルへのアクセスを常に確保したいので、バックアップファイルをローカルコンピューターにダウンロードすることが常に推奨されます。たとえば、攻撃者があなたのサイトをハッキングした場合、そこからバックアップファイルを削除してしまえば、サイトの復元はできなくなります。

WP Stagingバックアップファイルをローカルシステムにダウンロード

バックアップファイルの復元

サイトが壊れた場合にバックアップを復元するには、既存のものの一覧からバックアップを選択するか、推奨されるようにローカルコンピューターからバックアップファイルをアップロードできます。

素晴らしい機能として、バックアップファイルを他の既存のWordPressサイトにアップロードして、そのバックアップファイルで別のサーバーやサイトにあなたのサイトをクローンすることさえできます。

WP STAGINGに戻り、**「Upload Backup」**ボタンをクリックします。

WP Stagingバックアップのアップロードオプション
Upload Backup Button

ファイルエクスプローラーからダウンロードしたバックアップを選び、アップロードします。

WP Stagingバックアップファイルのアップロードオプション
Select the WP STAGING Backup File

バックアップがアップロードされたら、Actionsと**「Restore」ボタンをクリックすると、ポップアップが表示されます。バックアップファイルをドラッグ&ドロップでアップロードするか、「URL」を入力するか、指定されたディレクトリに「FTP」経由でアップロードします。中には「Cancel」「Next」の2つのボタンが表示されます。「Next」**をクリックして進みます。

WP Stagingバックアップ復元、Nextボタン

**「Next」をクリックすると新しいボックスが表示されます。次に「Restore」**をクリックして復元を開始します。

WP Stagingバックアップ復元ボタン
Click on Restore

復元が成功すると、**「Finished Successfully」**のモーダルが表示されます。

WP Stagingバックアップ完了

ウェブサイトを開き、サイトが意図したとおりに動作し、完全に機能するかをテストします。

自動バックアップのスケジュール設定

WP STAGINGを使えば、バックアップを自動実行するように設定して時間と手間を節約できます。変更を加えるたびにサイトのバックアップを取らなければと覚えておく必要はもうありません。サイトが常にバックアップされて安全であると分かった上で、安心していられます。

バックアップ**「Create Backup」「One-Time-Only」**のチェックを外し、表示された選択肢からバックアップの頻度、開始時刻、保持するバックアップの数を選びます。

WP Stagingの自動バックアップ

これで完了です。WPSTAGING | PROの助けを借りて、あなたはWordPressサイト全体のバックアップを作成し、復元しました。

セキュリティプラグインによるサイトの強化

この記事を準備するにあたって、私は最も人気のあるセキュリティプラグイン「WordFence」と「Solid Security」を試しました。

WordfenceとiThemes Security
Wordfence and Solid Security

どちらも優れたプラグインですが、よりシンプルなセットアップとWordPressサイトを強化するための追加機能を理由に、私はSolid Securityを選びました。

プラグイン「Solid Security」のインストール

プラグインをインストールして有効化します。これで、**「Settings」**をクリックしてサイドメニューの新しい「Security」タブを開けるようになります。

初期セキュリティチェックの開始

Solid Securityの「Security Check」が開きます。この「Security Check」は、すべてのWordPressサイトで必要なモジュールをインストールするワンクリックのツールです。これには、たとえば**「Brute Force Protection」**や「Strong Passwords」の強制が含まれます。各モジュールの機能は、「Security Check」のすぐ後に説明します。

「Security Check Scan」を選択して続行します。

Solid Security
Security Check
Solid Security: サイトスキャンを開始

プロセスを完了するにはあと2回のクリックが必要です。

Solid Security: SSL, Network Bruteforce Protection

Solid Security: SSL, Network Bruteforce Protection
Solid Security: SSL, Network Bruteforce Protection
Solid Security: SSL, Network Bruteforce Protection

一方のクリックは「HTTPリクエストのHTTPSリクエストへのリダイレクト」を確認します。この機能により、訪問者に対して暗号化されていないページが提供されなくなります。

もう一方のクリックは「Network Brute Force Protection」を有効化します。

Solid Securityの設定

ブルートフォース攻撃とは、自動化されたランダムなテストによってパスワードや鍵を見つけ出そうとする手法です。Solid Securityは**「Local Brute Force Protection」**と「Brute Force Protection」のネットワークによりサイトを守ります。WordPressサイトをそのネットワークに追加することで、すでに他のサイトに到達した攻撃からSecurityがあなたのサイトを守ります。

ここではデフォルトで管理者のメールアドレスが選択されています。

ニュースについての通知の許可を求められますが、私はこのオプションを「No」のままにしておきます。

有効化を確認し、security checkを閉じます。

マルウェアスキャナー

多くのプラグインと同様に、Solid Securityには無料版とプロ版があります。記事を読み進めながらPro版が有用かどうかを判断できます。プレミアム版の機能があなたにとって意味があると思われる場合は、私が触れます。

Solid Securityのプロ機能
Solid Security Pro Features

まずはマルウェアスキャンを見てみましょう。

サイトスキャンを開始
Site Scan

WordPress.orgは、すべてのセキュリティの責任をウェブホストに押し付けるのではなく、自分の手で取り組むことが重要だと指摘しています。その際、彼らは特にインストール済みのアプリケーションに言及しています。

Solid Securityのマルウェアスキャナーを使って、インストール済みのアプリケーションがSolid Securityによって悪意あるものと分類されないかを確認します。
そのためには、下にスクロールして右側にあるスキャナーを見つけます。Solid Securityの無料版にもマルウェアスキャナーがありますが、手動です。Pro版には自動マルウェアスキャナーがあります。

「Run Scan」をクリックしてサイトをスキャンします。その後「logs page」に移動して結果を確認します。

Solid Securityのログ

悪意あるアプリケーションにサイトへ忍び込む隙を与えないよう、信頼できるソースからのみプラグインをインストールしてください。

「Solid Security」の推奨モジュール

ここからはSolid Securityの個別モジュールに入ります。表示モードは「block view」と「list view」の2種類があります。リストビューでさまざまなモジュールを順に見ていく方が簡単です。左上の表示モードを「block-」から「list view」に変更します。

Security Check

「Security Check」モジュールは、セットアップの最初に確認した標準的な対策のみを一覧表示します。

グローバル設定

「Write to Files」: このオプションを無効化すると、「wp-config.php」と「.htaccess」ファイルに設定オプションを手動で追加する必要があります。したがって、このチェックを外すことはおすすめしません。

Solid Security: Write to Files
Solid Security: Write to Files

ファイルのパーミッションは後で調整しますが、いずれにせよこれらのファイルから書き込み権限を取り除くので、その変更までSolid Securityに調整を任せるのは理にかなっています。

「Lockout messages」は、Solid Securityがホスト、ユーザー、コミュニティをあなたのWordPressサイトからロックアウトしたり、彼らのIPアドレスを悪意あるものとマークしたりしたときに表示されます。サイトに顧客アカウントがある場合は、より親しみやすくするためにこれらのメッセージを編集できます。

Solid Security: ロックアウトメッセージ

下にはロックアウトに関する個別設定があります。「Lockout Period」は、誤ったログイン試行の上限に達した後、ユーザー / IPアドレスをWordPressがどれだけの時間ブロックするかを示します。

「Ban Lookback Period」は、Solid Securityがロックアウトをどれだけの期間覚えて加算するかを制御します。「Ban Threshold」は、永久にブロックされる前にユーザーやIPアドレスが受け取れるロックアウトの回数を決定します。

Solid Security: ロックアウト設定

Solid Security: ユーザー / IPアドレスがブロックされる前に持つログイン試行回数を指定するロックアウト設定。「Local Brute Force Protection」モジュールまでスクロールします。

「Minutes to Remember Bad Login」は、Solid Securityが誤ったログイン試行を合算する時間を示します。ユーザー / IPアドレスが17:05と17:07に不正なログイン情報を入力すると、Solid Securityは2回としてカウントします。攻撃者が次の不正なログイン試行を18:00に行うと、カウンターは再び1から始まります。

「Max Login Attempts Per User」エリアでは、ブロックされる前にユーザー名が持つ試行回数を指定できます。

「Max Login Attempts Per Host」はとてもよく似た響きです。このエリアは、攻撃者が1つのIPアドレス内で複数のコンピューターを使う場合に意味を持ちます。攻撃者がその値に達するとすぐにIPアドレスがブロックされます。

サイトに合わせて「Local Brute Force Protection」と「General settings」の設定を調整します。サイトに顧客アカウントがある場合は、誤ったログイン試行の上限値を少し高めに設定したり、ブロック期間を短くしたりできます。あなただけがログインするサイトでは、ログイン試行回数を少なめにできます。

例: あるユーザーが5分以内にWordPressサイトに5回ログインを試みます。「Local Brute Force Protection」は15分間ユーザーをブロックします。このブロックが7日以内に2回繰り返されると、Solid Securityはユーザーを永久にブロックします。

Global Settings」モジュールに進みましょう。

「Authorized Hosts List」では、Solid SecurityがWordPressサイトから除外しないホストを追加できます。このオプションは、自分でロックを発動してしまった場合にサイトへのアクセスを失わないようにします。

そのためには「Add my current IP to the Authorized Hosts List」をクリックします。

Add my current IP to the Authorized Hosts List

WordPress.orgは、問題のトラブルシューティングや、何が起きたのかの把握、ハッキング後のサイトの復旧のために、WordPressサイトのロギングをより深く扱うことを推奨しています。

Solid Securityが"File Logs"を保存。

Solid Securityは「File Logs」と「Database Logs」の両方を保存できます。「Site Scan」モジュールで触れたように、サイドメニューから「Logs」をクリックしてログにアクセスできます。

すでに多くのプラグインを使っており、WordPressメニューを整然と保ちたい場合は、「Hide Security Menu in Admin Bar」のチェックボックスにチェックを入れることでそれが可能です。

Notification Center

「Notification Center」モジュールでは「Site Lockouts」までスクロールします。この設定はデフォルトで有効になっており、ユーザーやホストがブロックされるたびにメール通知を受け取ることを意味します。設定はサイトによって個別に異なります。顧客や多くのWordPressユーザーがアクセスするサイトでは、パスワードを忘れる人が多いので、このオプションを無効にしておくのが最善でしょう。一方、このサイトをあなたしか使わない場合は、安心して有効化できます。Securityがハッキング攻撃の可能性を直接通知してくれるからです。

Solid Security: Site Lockouts
Solid Security: Site Lockouts

User Groups

「User Groups」では設定を調整する必要はありません。

Away Mode

「Away Mode」の有効化は慎重に行うことをおすすめします。これにより選択した時間中、すべてのユーザーに対してWordPressダッシュボードがアクセス不可になるからです。

Banned User

「Banned User」タブでは、特定のユーザーやホストのIPアドレスをブロックできます。このオプションは、そのIPアドレスからのサイトへのアクセスを即時かつ完全に拒否することを意味します。このリストは「Authorized Hosts List」と同じ仕組みで、逆向きに機能します。特定のIPアドレスを決してブロックしないのではなく、このリストは完全にブロックします。

Solid Security: Banned Users
Solid Security: Banned Users

Database Backup

データベースとファイル両方のバックアップを作成するバックアッププラグインをすでにインストールしているため、「Database Backup」機能は無効化できます。

Solid Security: Database Backup
Solid Security: Database Backup

File Change Detection

「File Change Detection」を有効にすることをおすすめします。たとえば攻撃者がホスティングプロバイダーのサーバーをハッキングし、WordPressコアデータを変更または削除しようとした場合、メール通知を受け取れます。WordPress.orgはファイルの変更監視を有効にすることを推奨しています。

Solid Security: File Change Detection

File Permission

「File Permission」モジュールは、WordPressサイトの核心に関する興味深い洞察を提供してくれます。ファイルパーミッションをチェックすることが推奨されます。

モジュールのウィンドウを開き、「Load File Permission Details」をクリックします。Solid Securityはセキュリティ上重要なWordPressファイルのパスと、そのファイルやフォルダーのアクセス権を表示します。現在の値と目標値の両方が表示されます。私の場合、Solid Securityは2か所で変更を提案しています: 「wp-config.php」と「.htaccess」ファイルです。

Solid Security: ファイルパーミッション
Solid Security: Tools > File Permissions

3桁の数字がファイルパーミッションを規定します。最初の数字は「user」、つまりサイトの管理者の権限を規定します。複数の人が管理者権限を持つことがあります。2番目の数字は「Group」の権限を規定します。これにはサイトの他のユーザー、たとえば編集者、寄稿者、その他のユーザーロールが含まれます。最後の数字は「World」の権利を表し、インターネット上であなたのサイトにアクセスする全員が含まれます。

3桁の数字がファイルパーミッションを規定する
A three-digit number regulates the file permissions

wp-config.phpはWordPressアプリケーションの設定ファイルです。最も重要なファイルの1つであるため、十分に保護したことを確認する必要があります。

ここではSolid Securityは「444」を推奨します。誰もが読み取りアクセスを持ち、誰も書き込みできません。

Solid Security: File Permission Suggestion “444”

WordPress.orgはファイルを「400」/「440」で保護することを推奨しています。「440」の値では、管理者であるあなたとユーザーは読み取りアクセスを持ちますが、訪問者は持ちません。「400」では、管理者のあなただけが読み取りアクセスを持ちます。これが最も安全な選択肢です。

WordPress.org: File Permission Suggestion “400” / “440”

これらのファイルパーミッションは実際のサイトに関するもので、サイトオーナーとしてあなたはいつでもFTP / cPanel経由でこれらのパーミッションを調整でき、実際のアクセスを失うことはない、ということを理解することが重要です。

選ぶべき値はサーバーのセットアップによります。WordPress.orgは、ファイルパーミッションを可能な限り厳しくロックし、書き込みアクセスを許可する必要があるときだけそれらの制限を緩めることを推奨しています。つまり「400」または「440」パーミッションから始め、WordPressが動くようになるまでそこから値を上げていきます。最大でも「600」または「640」を使います。

これで、ファイルパーミッションがどう構成されているか、どのパーミッションを調整する必要があるかが分かったと思います。

ただし、ファイルパーミッションの調整をすぐに実装するのは逆効果です。そうすると、Solid Securityの書き込み権限を奪うことになり、セットアップの最後に「wp-config.php」ファイルへ変更を手動で追加しなければならなくなるからです。

ファイルパーミッションの調整は「System Tweaks」モジュールを扱うときに行います。

Local Brute Force Protection

次のモジュールは「Local Brute Force Protection」です。これらの設定は一般設定ですでに行いました。

Network Brute Force Protection

「Network Brute Force Protection」の設定も「Security Check」のときに最初に行いました。

Password Requirements

安全なパスワードを使うことは、潜在的な脆弱性を避けるためのもう1つの重要な側面です。

パスワードを選ぶ際は次のことを避けるべきです:

強力なパスワードに関するWordPress.orgの推奨事項
WordPress.org: recommendations for strong passwords

「Strong Password」モジュールがこれらの要件の実装を助けます。

デフォルトでは、Solid Securityはこの設定をすべてのユーザーロールに対して有効にします。サイトに応じてこれらの設定を調整してください。たとえば、強力なパスワードを管理者ユーザーロールのみに強制することもできます。

Solid Security: 強力なパスワード
Solid Security: Strong Passwords

二要素認証も推奨されます。

二要素認証の手法では、ユーザーは2段階の認証方式でログインすることを求められます。最初のステップはユーザー名とパスワードで、2つ目の要素は別のデバイスやアプリから来るコードによる認証です。

この機能はSolid SecurityのPro版で利用できます。あるいは、プラグインリポジトリで無料の二要素認証プラグイン「WP2FA」を検索することもできます。

WP 2FAプラグインをインストール
Install – WP 2FA Plugin

まず、Two-Factor Authenticationプラグインをインストールして有効化する必要があります。有効化後、WordPressプラグインの「WP 2FA – Two-factor authentication for WordPress」で「Configure 2FA Settings」をクリックします。これにより「setup wizard」に進みます。

次に、スマートフォンに2FAアプリをインストールします。「Google Authenticator」をおすすめします。

Google Authenticatorアプリ
Google Authenticator App

認証アプリを開き、「Setup wizard」のQRコードをスキャンします。

スマートフォンのアプリに表示されたコードを入力します。

WP 2FA: QRコードをスキャン
WP 2FA: Scan the QR Code

アプリのセットアップにさらに助けが必要な場合は、「For detailed guides for your desired app, click below」をクリックします。

これで完了です。認証アプリに「WP2FA」から一度だけ送信されたコードが保存されます。次に、あなたのWordPressサイトに合った設定を行ってください。

次回サイトにログインする際、プラグインはパスワード入力後に二要素認証コードを尋ねます。

WP 2FA: ログイン
WP 2FA: Login

そのためには、再度スマートフォンで認証アプリを開き、そこに表示されたコードを入力します。

Solid Securityに戻りましょう。

SSL

「SSL」モジュールは、SSL証明書が利用可能な場合、すべての「HTTP」リクエストをHTTPSリクエストにリダイレクトします。Solid Securityはこのモジュールを「Security Check」で有効化しました。

System Tweaks

「System Tweaks」を開き、「Enable」をクリックします。いくつかのチェックボックスにチェックを入れる必要があります。「System Tweaks」と「WordPress Tweaks」モジュールには、WordPressサイトのセキュリティをさらに向上させるための複数の最適化が含まれています。しかし、これらのオプションの一部はあなたのサイトと競合する可能性があり、サイトによります。したがって、有効化のたびにチェックボックスをオンにし、「Save Settings」をクリックし、ページのフロントエンドを再読み込みして、完全な機能を確認してください。

iThemes Security: 各設定を有効化した後にサイトをテスト
Solid Security: Test Your Site After Enabling Each Setting

Directory browsing: ハッカーはディレクトリの一覧表示を利用して、WordPressサイト上に既知の脆弱性を持つファイルがあるかを調べ、それらのファイルを使ってサイトへのアクセスを得ようとします。

ディレクトリの閲覧は、あなたのファイルを覗き見たり、画像をコピーしたり、ディレクトリ構造を把握したり、サイトに関する他の情報を得るためにも使われ得ます。この理由から、「disable directory browsing」を有効にすることを強く推奨します。

サイトのディレクトリ参照が既に無効化されているかをテストするには、example.com/wp-contentと入力します。空白のページが返ってくれば問題ありません。しかし、サイトが訪問者にディレクトリへのアクセスを許してしまうなら、それは重大なセキュリティ上の問題です。

File write permissions: 「File Permission」モジュールで述べたように、Solid Securityはファイルパーミッションを「444」の値にのみ設定できます。

iThemes Security: ファイル書き込み権限を削除
Solid Security: Remove File Writing Permissions v

しかし、WordPress.orgは「400」または「440」の使用を推奨しているため、これをFTPで手動で変更します。

WordPress.org: ファイルパーミッションの推奨 "400" / "440"
WordPress.org: File Permission Suggestion “400” / “440”

私は「FileZilla」を使って、ホスティングプロバイダーのサーバー上のWordPressインストールのデータベースへFTPでアクセスします。あるいは、cPanel経由でも行えます。

Filezilla
Filezilla

サーバーに接続します。「Host」「Username」「Password」はホスティングプロバイダーから得られます。
サーバーに接続するときはSFTP暗号化を使うことをおすすめします。ウェブホストがSFTPを提供しているか分からない場合は、彼らに尋ねてください。SFTPの使用はFTPと同じですが、パスワードや他のデータが暗号化されて、コンピューターとサイトの間で送受信される点が異なります。

「HTML」フォルダーを開きます。そこにwp-config.phpファイルがあります。

Filezilla: “wp-config.php” and “.htaccess” Files

「wp-config.php」ファイルを選択し、右クリックしてコンテキストメニューを開きます。「file permission」をクリックします。

Filezilla: ファイルパーミッション

これで、望むファイルパーミッションを割り当てられます。私は「public」と「group」から読み取り権限を剥奪し、「admin」とも呼ばれる「owner」から書き込み権限を剥奪します。

Filezilla: File Permissions “wp-config.php”

OKをクリックすると、FileZillaが新しいパーミッションを保存します。

「.htaccess」ファイルにも同様の変更をもう一度行います。「public」と「group」から読み取り権限を剥奪し、「owner」から書き込み権限を剥奪します。

Filezilla: ファイルパーミッション ".htaccess"
Filezilla: File Permissions “.htaccess”

他のファイルパス、たとえば「wp-content」パスは変更しないでください。さもないとWordPressは正しく機能しなくなります。

Solid Securityの「System Tweaks」モジュールに戻りましょう。

「PHP in uploads, PHP in plugins, PHP in themes.」 誰かがメディア、プラグイン、テーマの領域を含むサイトのフロントエンドにPHPファイルをアップロードしようとした場合、ほぼ常に攻撃の可能性があります。したがって、このオプションはこれらのディレクトリに対する「PHP」ファイル形式を禁止します。

WordPress Salts

「WordPress Salts」は、ブラウザに保存するパスワードを保護します。ログイン時にブラウザにパスワードを保存すると、WordPressはそのパスワードを2つのCookieに保存します。しかし、WordPressがあなたのパスワードを平文で保存していたら、攻撃者はそれをすぐに復号できてしまいます。

セキュリティキーとソルトは、これらが連携して平文のパスワードを暗号学的にランダムな文字の集まりに変えることで、この問題を回避します。

これらのセキュリティキーとソルトはwp-config.phpファイルにあります。4つのキーと4つのソルトです。

“wp-config-php”: Security Keys and Salts

「Change WordPress Salts」を確認して設定を保存すると、Solid SecurityがWordPress Saltsを変更します。ただし、これによりすべてのユーザーが現在のセッションからログアウトされ、再ログインが必要になります。ですので、この変更をいつ行うかを考えてください。Solid Securityは少なくとも月に1回WordPressの「Salts」を変更することを推奨しています。

WordPress tweaks

system tweaksと同様に、「WordPress Tweaks」でもいくつかのチェックボックスをオンにすることで、関連する変更を行えます。「System Tweaks」と同じく、有効化のたびにサイトの完全な機能を必ず確認してください。

iThemes Security: 各設定を有効化した後にサイトをテスト
Solid Security: Test Your Site After Enabling Each Setting

まず、「Comment Spam」の隣のチェックボックスをオンにします。これによりコメント欄のスパムが減ります。

また、File Editorが無効化されていることを確認します。これも別の推奨事項です。WordPressはデフォルトでプラグインとデザインの両方を編集するオプションを提供しています。このエディタは、攻撃者がサイトにアクセスする別の可能性を開いてしまいます。

Solid Security: File Editorを無効化
Solid Security: Disable the File Editor

「XML-RPC」も同様です。「XML-RPC」はWordPressの機能で、あなたやプラグインがデータの転送に使用できます。「XML-RPC」は攻撃者にもサイトへのアクセスの機会を提供します。このインターフェースは、WordPressアプリ、トラックバック、ピンバック、JetPackプラグインの使用に関連します。これらの機能のいずれかを使っている場合、「XML-RPC」インターフェースを無効化できません。そうでなければ「Disable XML-RPC」を選択します。

「Save Settings」をクリックします。

「Solid Security」の高度なモジュール

ここまでで、Solid Securityの「Recommended」モジュールは完了です。

ただし、これらのモジュールによってシンプルなワンクリックの変更を行える「Advanced」モジュールも存在し、本来は手動で行う必要があった変更を助けてくれます。

述べたように

、すべての変更はステージングサイトで試すよう改めて念を押しておきたいと思います。さもないと、サイトに問題を引き起こす可能性があります。

Admin User

高度なモジュール「Admin User」は、もう1つのWordPress.orgの推奨事項を達成します。
WordPress.orgは「Security through obscurity」の原則を2か所で用いることを推奨しています。

1つ目は管理者アカウントの名前変更、2つ目は「table_prefix」の変更です。Solid Securityはその両方の調整を可能にします。「table_prefix」の変更は、次の次のステップで行います。

WordPressをインストールするとき、管理者ユーザー名はデフォルトで「admin」です。このデフォルト設定は、特にホスティングプロバイダーによるワンクリックWordPressインストールではしばしば変更されません。しかし、あなた自身がWordPressをインストールした場合でも、より良い方法を知らなかったためにユーザー名を変更していないかもしれません。これは攻撃者にとってサイトへのアクセスをはるかに容易にします。名前とパスワードの両方を破る必要がなく、パスワードだけを破ればよいからです。

管理者ユーザー名が「admin」の場合、「New Admin Username」フィールドが表示されます。このフィールドが表示されない場合は、インストール時にすべて正しく行ったということを示しています。

Solid Security: 新しい管理者ユーザー名
Solid Security: New Admin Username

私はここで「Change User ID 1」フィールドはスキップします。プラグインを使う際に問題を引き起こす可能性があるからです。

Change Content Directory

次のモジュール「Change Content Directory」も同様です。警告にあるとおり、このモジュールはWordPressをインストールするときのみ使用すべきです。

Change Database Table Prefix

ここで、WordPress.orgが「Security through obscurity」の原則を推奨する2つ目のポイントに到達します。「Change Database Table Prefix」モジュールがこの調整を行います。

WordPress固有のSQLインジェクション攻撃の多くは、「table_prefix」がデフォルト値「wp_」であることを前提としています。このプレフィックスを変更すると、一部のSQLインジェクション攻撃をブロックできます。

テーブルプレフィックスが「wp_」の場合、プレフィックスを変更するよう助言する以下のメッセージが表示されます。私はステージングサイト上にいるため、WP STAGINGがこのテーブルプレフィックスを作成した結果、「wpstg0_」がテーブルプレフィックスとして表示されています。

iThemes: テーブルプレフィックスを変更
Solid Security: New Change Table Prefix

データベースは「PhpMyAdmin」プラグインで見られます。以前のプラグインと同様に、「Plugin」と「Add New」からダウンロードできます。その後、サイドメニューから開きます。

"phpMyAdmin"プラグイン
“phpMyAdmin” Plugin

これで「wpstg0」のテーブルが見えます。これらがステージングサイトのテーブルです。その下には、プレフィックス「wp_」のついた本番サイトのテーブルがあります。

phpMyAdmin: Staging Site Tables
phpMyAdmin: 本番サイトのテーブル
phpMyAdmin: Production Site Tables

Solid Securityに戻ります。「Yes」と「Save Settings」を選択すると、Solid Securityがテーブルに新しい、より複雑なプレフィックスを割り当てます。

新しいデータベーステーブルプレフィックス
New database table prefix

再び「PhpMyAdmin」タブに切り替え、ページを更新すると、テーブルの前に新しいプレフィックスが見えます。

phpMyAdmin: 新しいデータベーステーブルプレフィックス
phpMyAdmin: New database table prefix

Hide Backend

「Hide Backend」モジュールは、攻撃者がWordPressのログインエリアにアクセスするのを困難にします。デフォルトでは、誰もが「example.com/wp-admin」と「example.com/wp-login.php」からログインページに到達できます。

この設定はすべてのWordPressサイトで同一であるため、攻撃者はログインエリアを即座に特定し、そこからブルートフォース攻撃を開始できます。

ログイン権限について説明する前に、特定のプラグインを使用している場合にログインの問題を引き起こす可能性があるため、私はこのモジュールを有効化していないことを述べておきたいと思います。

「Login Slug」の下で、現在のログイン拡張子を確認し、拡張子を変更してメモしておきます。次回サイトにアクセスする際は、「example.com/新しい拡張子」と入力します。

このモジュールは、安易なブルートフォース攻撃を防ぐのに役立つことがあります。希望する場合は、モジュールが問題を引き起こすかどうかを試してみてください。

wp-config.php Rules

最後のモジュール「wp-config.php Rules」では、Solid Securityはすべてのモジュールが正しく機能できるかをチェックできます。

Solid Securityが必要な変更を見つけられない場合、「There is nothing that needs to be written to your wp-config.php file」というメッセージが表示されます。

そうでなければ、「The following rules need to be written to your wp-config.php」というメッセージが表示されます。

iThemes: "wp-config.php"ルール

Solid Security: 「wp-config.php」ルール。「wp-config.php」ファイルに「Write」のファイルパーミッションがない場合に、このメッセージが表示されます。

FileZillaを使ってFTP経由でWordPressサイトのデータベースに再アクセスし、Solid Securityが要求するルールを「wp-config.php」ファイルに書き込みます。ファイルパーミッションのカスタマイズですでにご存知のとおり、「wp-config.php」ファイルは「HTML」フォルダー直下にあります。右クリックして「View / Edit」を選択し、テキストエディタを開きます。

Filezilla: "wp-config.php" 表示/編集
Filezilla: “wp-config.php” View/Edit

Solid Securityが提示したルールをコピーして、「wp-config.php」ファイルの「<? PHP」のすぐ下に貼り付けます。

Filezilla: ルールを"wp-config.php"に挿入
Filezilla: Insert the Rules into “wp-config.php”

説明すると、ルール「DISALLOW_FILE_EDIT」は、「WordPress tweaks」モジュールで行ったファイルエディタの無効化が確実に有効になるようにします。

「FORCE_SSL_ADMIN」は、管理者レベルでもSSL暗号化が有効になることを意味します。Solid Securityは最初の「Security Check」でその設定を適用しました。

変更を保存してファイルを閉じ、FileZilla経由で新しいファイルアップロードを確認します。

ファイル変更の確認
Filezilla: The file has changed

これらのルールを「wp-config.php」ファイルに挿入した後、WordPressサイトのステージングサイトがまだ機能しているか確認してください。WordPressダッシュボードの「View Site」をクリックします。

変更をテストした後、WP STAGING PROを使ってステージングサイトを本番サイトにプッシュするか、本番サイトで同じ設定を繰り返します。

うわー、たくさんの調整でしたね!最後までたどり着いてくださってありがとうございます。

これで、適切なホスティングプロバイダーの選択、自動バックアップの作成、「Solid Security」プラグインの設定によって、あなたのサイトはセキュリティの面で素晴らしいポジションに立てました。

関連記事

Rene Hermenau

著者: Rene Hermenau

著者について: René Hermenau は WP STAGING の創設者です。WordPress のバックアップ、ステージング、移行、データベース処理、安全なデプロイメントワークフローに取り組んでいます。