Security Blog
Security Blog
Posted By Gregory

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

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


English version: Turn your WordPress into Fort Knox


この記事は、WordPressで構築された堅牢なウェブサイトを構築することを前提としています。必ずしも、以下の手順を逐一、正確に実行する必要はありません。しかし、独自のFort Knoxを構築したい場合は、そうすることをお勧めします。

以下の手順の一部は、WordPressフォルダ内のファイルを直接変更しようとする一部の奇妙なプラグインとの互換性の問題を引き起こす可能性があります。そのようなプラグインの使用は、ハッカーがサイトにインストールされているプラグインやテーマの脆弱性を突いた場合、直ちに、あるいは将来的に多くの問題やセキュリティ問題を引き起こす可能性があるため、使用しないことをお勧めします。この記事は、皆様のお役に立てれば幸いですが、いかなる保証もいたしません。

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

要件:ウェブサイトがホストされているLinuxサーバーへのルートアクセス。ルート権限でシェルにアクセスできない場合、真に保護されたウェブサイトを作成するための有用な操作は一切できません。WordPressとそのディレクトリ内のファイルをPROレベルで保護できる方法やプラグインは存在しません。すべてのセキュリティプラグインは、ハッカーやボットと同じレベルの権限(パーミッション)を持っています。例外はありません。セキュリティプラグインがウェブサイトのファイルを保護するため変更を加えた場合、ハッカーや悪意のあるコードはそれらの変更を元に戻したり、保護を解除したりできます。

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

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

ステップ1. WordPressのインストール

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

ステップ2:WordPressレベルでウェブサイトを強化する

  1. アップロードフォルダを、/wp-content/ フォルダ内から WordPress インストール フォルダのルートに 1 つ上のレベルに移動します。
  2. アップロードフォルダーの名前をmedia (またはそれに似た任意の名前) に変更します。
  3. wp-contentフォルダの名前をcontent (またはそれに似た任意の名前) に変更します。
  4. プラグインフォルダーの名前をmod (またはそれに似た任意の名前) に変更します。
  5. wp-config.phpファイルの先頭に次の行を追加します。media contentmod以前選択した実際の値に変更することを忘れないでください。
     define('AUTOMATIC_UPDATER_DISABLED', true ); // はい、手動で行っても安全です
    define('DISALLOW_FILE_EDIT', true ); // 誰にもファイルへのアクセス権を与えません
    define('DISALLOW_FILE_MODS', true ); // はい、手動で行っても安全です
    define('FS_METHOD', 'direct'); // もちろんFTPは使用しません
    'WP_HTTP_BLOCK_EXTERNAL' を true で定義します。
    define('UPLOADS', ' media '); // uploads の名前を変更し、上のレベルに移動しました
    define('WP_CONTENT_DIR', '/path/to/wordpress/dir/ content '); // ホスト名なし、末尾のスラッシュなし
    定義('WP_CONTENT_URL'、'http://example.com/コンテンツ');
    define('WP_PLUGIN_DIR', '/path/to/wordpress/dir/ content / mod '); // ホスト名なし、末尾のスラッシュなし
    定義('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ウェブサイトへの侵入を試みます。WP Cerber でこの侵入口を隠して閉じましょう。

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

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

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

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

  2. ウェブサイトディレクトリ全体(/path/to/wordpress/dir)のすべてのファイルの所有者と権限を変更します。これを行うには、シェルで以下のコマンドを実行します。
     /path/to/wordpress/dir を見つける -exec chown cerber:root {} +
    /path/to/wordpress/dir を見つけます -type d -exec chmod 755 {} +
    /path/to/wordpress/dir を見つけます -type f -exec chmod 644 {} +

  3. アップロードディレクトリ(/path/to/wordpress/dir/ media )には特別な権限を設定する必要があります。シェルでexecコマンドを使って設定しましょう。
     /path/to/wordpress/dir/ mediaを見つける -exec chown cerber:apache {} +
    /path/to/wordpress/dir/ mediaを見つけます -type d -exec chmod 775 {} +
    /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サーバーレベルでウェブサイトを強化する

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