Security Blog
Security Blog
Posted By Gregory

WordPress をフォートノックスに変える

WordPress をフォートノックスのような保護された要塞に変える方法


English version: Turn your WordPress into Fort Knox


この記事では、WordPress を利用した防弾で保護された Web サイトを取得したいと想定しています。以下のすべての手順を、必ずしも説明どおりに一字一句正確に実行する必要はありません。ただし、独自のフォートノックスを作成したい場合は、それをお勧めします。

次の手順の一部は、WordPress フォルダー内のファイルを直接変更しようとする奇妙なプラグインとの非互換性の問題の原因となる可能性があります。そのような種類のプラグインは無視することをお勧めします。ハッカーがサイトにインストールされているプラグインやテーマの穴を調査したときに、それらを使用すると、すぐにまたは将来、多くの問題やセキュリティ上の問題が発生する可能性があるためです。この記事は役に立つことを願って作成しましたが、保証はありません。

注: この記事は、共有ホスティングを使用している場合には適用されません。少なくとも VPS でホストされるサイトが必要です。

要件: Web サイトがホストされている Linux サーバーへの root アクセス。 root 権限を持つシェル アクセス権がない場合、実際に保護された Web サイトを作成するために役立つことは何もできません。 WordPress とそのディレクトリ内のファイルを PRO レベルで保護できる方法やプラグインはありません。すべてのセキュリティ プラグインには、ハッカーやボットが持つのと同じレベルの権限 (アクセス許可) があります。例外なし。セキュリティ プラグインが Web サイトのファイルを保護するために変更を加えた場合、ハッカーや悪意のあるコードによってそれらの変更が元に戻されたり、保護が削除されたりする可能性があります。

私のアプローチに関する重要なポイントをいくつか紹介します

  • すべてのコード ファイル (PHP コード) とすべての .htaccess ファイルは書き込み保護する必要があります。例外なし
  • すべてのデフォルト (フォルダー、Cookie、ログイン パス、その他のランドマーク) を別の値に変更する必要があります。
  • WordPress フォルダー内の PHP または .htaccess ファイルで動作するプラグインやテーマを使用したり、変更しようとしたりしてはなりません

第一歩。 WordPress のインストール

データベーステーブルにはデフォルトのwp_接頭辞を使用しないでください。代わりに、2 つまたは 3 つのアルファベット記号を使用してください。一部の WordPress 固有の攻撃や攻撃者は、テーブルのプレフィックスがwp_であると想定します。プレフィックスを変更すると、一部の SQL インジェクション攻撃をブロックできます。

ステップ2。 WordPress レベルで Web サイトを強化する

  1. アップロードフォルダーを 1 つ上のレベル、/wp-content/ フォルダー内から WordPress インストール フォルダーのルートに移動します。
  2. アップロードフォルダーの名前をメディア(またはそのような名前、任意の名前) に変更します。
  3. wp-contentフォルダーの名前をcontent (またはそのような名前、任意の名前) に変更します。
  4. pluginsフォルダーの名前をmod (またはそのような名前、お好みの名前) に変更します。
  5. wp-config.phpファイルの先頭に次の行を追加します。mediacontentmod を以前に選択した実際の値に変更することを忘れないでください。
    定義('AUTOMATIC_UPDATER_DISABLED', true ); // はい、手動で行っても安全です
    定義('DISALLOW_FILE_EDIT', true ); // 誰もあなたのファイルに触れることを決して許可しません
    定義('DISALLOW_FILE_MODS', true ); // はい、手動で行っても安全です
    定義('FS_METHOD', 'ダイレクト'); // もちろんFTPはありません
    定義('WP_HTTP_BLOCK_EXTERNAL', true );
    定義('アップロード', 'メディア' ); // アップロードの名前を変更し、上のレベルに移動しました
    define('WP_CONTENT_DIR', '/path/to/wordpress/dir/ content '); // ホスト名なし、末尾のスラッシュなし
    定義('WP_CONTENT_URL', 'http://example.com/コンテンツ');
    定義('WP_PLUGIN_DIR', '/path/to/wordpress/dir/ content / mod '); // ホスト名なし、末尾のスラッシュなし
    define( ' WP_PLUGIN_URL', ' http://example.com/content/mod ');
    ini_set('表示エラー',0); // フロントエンドでの PHP エラーの表示をオフにする

ステップ 3。デフォルトの Cookie 名を変更します。

これらの行をwp-config.phpファイルの先頭に追加します。

定義('USER_COOKIE', 'my_user_cookie' ); // 別のものに変更します
定義('PASS_COOKIE', 'my_pass_cookie' ); // 別のものに変更します
定義('AUTH_COOKIE', 'my_auth_cookie' ); // 別のものに変更します
定義('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // 別のものに変更します
定義('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // 別のものに変更します
定義('TEST_COOKIE', 'my_test_cookie' ); // 別のものに変更します

ステップ4。 WordPress をインストールしたらすぐにセキュリティ プラグインをインストールします。

WP Cerber Securityを使用してログイン ページを保護します。上記の保護手順を行ったとしても、ハッカーはブルート フォース攻撃 (ログイン試行) を適用して WordPress Web サイトのドアを突破しようとします。 WP Cerber を使用してこのドアを隠して閉じます。

ステップ5。 Webサイトをサーバーレベルで強化します。

このステップでは、Apache を http サーバーとして使用していることを前提としています。プラグインやテーマを含むすべての WordPress ファイルの所有者を変更する必要があります。デフォルトでは、このユーザーはapacheです。以前にこの目的で作成した別のユーザーに変更する必要があります。このユーザーがcerberであるとしましょう。

  1. 次のディレクティブを含む .htaccess ファイルをメディアフォルダー (新しいアップロード フォルダー) に置きます。これにより、アップロードされた悪意のある PHP コードが Web サイトで実行されるのを防ぎます。
     php_flagエンジンがオフ

    注: このディレクティブを機能させるには、Apache 構成ファイルに、アップロード フォルダーまたはその親フォルダーのいずれかのAllowOverride Optionsディレクティブが含まれている必要があります。

  2. Web サイトのディレクトリ全体 (/path/to/wordpress/dir) について、すべてのファイルの所有者とアクセス許可を変更します。これを行うには、シェルで次のコマンドを実行します。
     find /path/to/wordpress/dir -exec chown cerber:root {} +
    find /path/to/wordpress/dir -type d -exec chmod 755 {} +
    find /path/to/wordpress/dir -type f -exec chmod 644 {} +

  3. アップロード ディレクトリ (/path/to/wordpress/dir/ media ) には、特別な権限を設定する必要があります。シェルで exec コマンドを使用して実行しましょう
    find /path/to/wordpress/dir/ media -exec chown cerber:apache {} +
    find /path/to/wordpress/dir/ media -type d -exec chmod 775 {} +
    find /path/to/wordpress/dir/ media -type f -exec chmod 664 {} +

  4. WordPress 設定でパーマリンク構造を設定し、 .htaccessファイルのアクセス許可を変更して書き込み保護します。
     chown cerber:root /path/to/wordpress/dir/.htaccess
    chmod 644 /パス/to/wordpress/dir/.htaccess

  5. wp-config.phpファイルを WordPress インストール ディレクトリの上のディレクトリに移動します。

ステップ6。 NGINX サーバー レベルで Web サイトを強化する

こちらをお読みください: WP Cerber と NGINX による WordPress の強化

ステップ7。 Fail2Ban による Web サイトの強化

こちらをお読みください: Fail2Ban で WordPress を保護する方法


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.