Security Blog
Security Blog
Posted By Gregory

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

WordPress を Fort Knox のような保護された要塞にする方法


English version: Turn your WordPress into Fort Knox


この記事では、WordPress によって強化された防弾で保護された Web サイトを取得したいと想定しています。以下のすべての手順を、説明されているとおりに、逐語的に行う必要はありません。ただし、独自のフォートノックスを作成する場合は、お勧めします.

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

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

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

ここに私のアプローチに関するいくつかの重要なポイントがあります

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

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

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

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

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

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

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

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

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

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

ステップ 5。サーバー レベルでの Web サイトの強化。

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

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

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

  2. Web サイト ディレクトリ全体 (/path/to/wordpress/dir) について、すべてのファイルの所有者と権限を変更します。これを行うには、シェルで次のコマンドを実行します。
     find /path/to/wordpress/dir -exec chown cerber:root {} +
    検索 /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 /path/to/wordpress/dir/.htaccess

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

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

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

ステップ 7。 Fail2Ban でウェブサイトを強化する

こちらをお読みください: 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.