WordPressをフォートノックスに変える
WordPress をフォートノックスのような保護された要塞に変える方法
English version: Turn your WordPress into Fort Knox
この記事では、WordPress で構築された、防弾で保護された Web サイトを作成したいと想定しています。必ずしも、以下のすべての手順を、説明どおりに逐語的に、ポイントごとに実行する必要はありません。ただし、独自の Fort Knox を作成したい場合は、そうすることをお勧めします。
以下の手順の一部は、WordPress フォルダー内のファイルを直接変更しようとする奇妙なプラグインとの非互換性の問題の原因となる可能性があります。そのようなプラグインを使用すると、すぐに、または将来的に、サイトにインストールされているプラグインやテーマのセキュリティホールをハッカーが調査したときに、多くの問題やセキュリティ問題が発生する可能性があるため、無視することをお勧めします。この記事は、役に立つことを期待して作成しましたが、保証はありません。
注意: この記事は、共有ホスティングを使用している場合には適用されません。少なくとも、VPS でホストされたサイトが必要です。
要件: ウェブサイトがホストされている Linux サーバーへのルート アクセス。ルート権限を持つシェル アクセスがない場合、実際に保護されたウェブサイトを作成するために役立つことは何もできません。WordPress とそのディレクトリ内のファイルを PRO レベルで保護できる方法やプラグインはありません。すべてのセキュリティ プラグインは、ハッカーやボットと同じレベルの権限 (アクセス許可) を持っています。例外はありません。一部のセキュリティ プラグインがウェブサイトを保護するためにファイルに変更を加えた場合、ハッカーや悪意のあるコードはそれらの変更を取り消したり、保護を解除したりできます。
私のアプローチに関する重要なポイントをいくつか挙げます
- すべてのコードファイル(PHPコード)とすべての.htaccessファイルは書き込み禁止にする必要があります。例外はありません。
- すべてのデフォルト(フォルダ、Cookie、ログインパス、その他のランドマーク)を別の値に変更する必要があります。
- WordPressフォルダ内のPHPや.htaccessファイルを変更しようとするプラグインやテーマは使用しないでください。
ステップ1: WordPressのインストール
データベース テーブルには、デフォルトのwp_
プレフィックスを使用しないでください。代わりに、2 つまたは 3 つのアルファベット記号を使用してください。WordPress 特有の攻撃や攻撃者の中には、テーブル プレフィックスがwp_
であると想定しているものがあります。プレフィックスを変更すると、一部の SQL インジェクション攻撃をブロックするのに役立ちます。
ステップ2. WordPressレベルでウェブサイトを強化する
- アップロードフォルダーを、/wp-content/ フォルダー内から WordPress インストール フォルダーのルートに 1 つ上のレベルに移動します。
- アップロードフォルダーの名前をmedia (またはそれに似た名前、好きな名前) に変更します。
- wp-contentフォルダの名前をcontent (またはそれに似た名前、好きな名前) に変更します。
- プラグインフォルダーの名前をmod (またはそれに似た名前、好きな名前) に変更します。
- wp-config.phpファイルの先頭に次の行を追加します。media 、 content 、 modを以前選択した実際の値に変更することを忘れないでください。
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とします。
- 次のディレクティブを含む .htaccess ファイルをメディアフォルダー (新しいアップロード フォルダー) に配置します。これにより、Web サイトがアップロードされた悪意のある PHP コードを実行するのを防ぎます。
php_flag エンジンオフ
注意: このディレクティブを機能させるには、Apache 構成ファイルに、アップロード フォルダーまたはその親フォルダーのいずれかに対する
AllowOverride Options
ディレクティブが含まれている必要があります。 - ウェブサイトのディレクトリ全体 (/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 {} + - アップロードディレクトリ(/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 {} + - WordPress 設定でパーマリンク構造を設定し、 .htaccessファイルの権限を変更して書き込み禁止にします。
chown cerber:root /path/to/wordpress/dir/.htaccess
chmod 644 /path/to/wordpress/dir/.htaccess - wp-config.phpファイルを WordPress インストール ディレクトリの上のディレクトリに移動します。
ステップ6。NGINXサーバーレベルでウェブサイトを強化する
こちらをお読みください: WP Cerber と NGINX で WordPress を強化する
ステップ7。Fail2Banでウェブサイトを強化する
こちらをお読みください: Fail2Ban で WordPress を保護する方法