WordPress管理画面設定について学んだセキュリティ面で重要なこと

WordPressの初期設定の中にはあまり知らないけれどなんとなく選択していたものが多くありました。しかしよくよく見てみると、大変危険な設定がまぎれこんでいることがわかりました。安全で安心なブログライフのために、管理画面の設定を見直してみましょう。

危険!WordPressでやりがちな管理画面設定

管理画面>設定にはたくさんの設定項目があります。この中でとくにセキュリティ懸念になるものは無効化しておきましょう。

セキュリティ万全!おすすめ設定

メンバーシップ「だれでもユーザー登録ができるようにする」は無効化

日本語の説明がラフなためあまり重要そうな設定に思えませんが、メンバーシップの設定は無効化が推奨です。

有効にすると、/wp-login.php?action=registerへアクセスした時に、だれでもユーザー登録が可能な状態になってしまいます。これは、管理画面へのログインも自由自在ということです。

「だれでもユーザー登録ができるようにする」は無効にすることで、仮にアクセスがあったとしても「ユーザー登録は許可されていません」とメッセージが表示されて防御することができます。

「新規ユーザーのデフォルト権限グループ」は購読者にする

個人ブログの場合は設定変更することは少ないですが、複数で管理しているWebサイトの場合、ユーザー追加登録をする作業が発生します。ユーザー登録のデフォルトの権限は「購読者」のため、追加作業のたびにいちいち「管理者」などへ変更しなければなりません。その手間を省くことができるのがこちらの設定です。管理者へ変更しておけばユーザー登録が簡単になることでしょう!

しかしこれには落とし穴があって、前述した「だれでもユーザー登録ができるようにする」が有効になっていると、見知らぬ第三者が作成したアカウントが管理者として登録されてしまいます。管理画面にログインしてなんでもやり放題の状態です。怖いですね。

面倒ですが、「新規ユーザーのデフォルト権限グループ」は購読者のままにしておきましょう。

Ping送信を無効化する

WordPressには記事公開を検索エンジンに通知してインデックスを促進するための「更新情報サービス」があります。デフォルトで’https://rpc.pingomatic.com/’へPing送信する設定になっています。

セキュリティ面の懸念として、秘匿性の高い会員サイトやイントラネットで公開されたサイトの記事情報が外部に送信される恐れがあります。

不要な場合は空欄にして保存し、functions.phpにフックを外して無効化する処理を書いておきましょう。未使用だったトラックバックなども無効化しています。

add_action( 'init', function() {
    remove_action( 'do_pings', 'do_all_pings', 10 );
    remove_action( 'do_all_pings', 'do_all_pingbacks', 10 );
    remove_action( 'do_all_pings', 'do_all_enclosures', 10 );
    remove_action( 'do_all_pings', 'do_all_trackbacks', 10 );
    remove_action( 'do_all_pings', 'generic_ping', 10 );
});

wp-mail.phpを無効化する

WordPressには古くからメールで記事投稿をする機能があります。しかし現在ではほとんど使用されないため無効化します。

add_action( 'init', function() {
    remove_all_actions( 'wp-mail.php' );
});

また、.htaccessに下記を記述して、ファイル自体へのアクセスを遮断するのも良い方法です。

<Files "wp-mail.php">
  Order Allow,Deny
  Deny from all
</Files>

URL推測リダイレクトを無効化する

アクセスのあったURLが見つからなかった場合、WordPressはよく似たURLへ自動的にリダイレクトを行います。これによって意図しないページが閲覧される恐れがあります。

無効化して適切に404が表示されるようにしましょう。

add_action('init', function () {
	remove_action('template_redirect', 'redirect_canonical');
});

アプリケーションパスワードを無効化する

外部アプリがWordPressと通信する方法として、アプリケーションパスワードを介した接続があります。ただし、アプリケーションパスワードを発行しない限り使用状態にならないため、セキュリティ懸念は低いですが、機能自体を無効化することもできます。

add_filter( 'wp_is_application_passwords_available', '__return_false' );

簡単に見える設定がセキュリティの落とし穴

WordPressのセキュリティについて自発的に調査してきたつもりでしたが、思わぬ落とし穴が見つかりました。管理画面の設定はあらためて重要なのだと認識し直しました。

ここでは4点のセキュリティ向上設定について紹介しましたが、定期的な設定の見直しや最新情報のキャッチアップを行い、サイト管理の知識をアップデートしていきたいですね。