魔法使いのWebマーケティング

Webマーケティングで魔法をかける!

  • Home
  • SEO
  • WordPress
  • concrete CMS
  • サーバー
  • No-Code
  • 🍀自己紹介&実績
  • AIによる参照元つき高品質SEO記事作成ツールα版が完成🎉
  • お問い合わせ
  • Notionブログ(外部)
©2018〜2021 まほウェブ・魔法使いのwebマーケティング・魔法使いの道具箱
You are here: Home / webセキュリティ / WordPressログイン画面とダッシュボードにBASIC認証でアクセス制限をかける方法

WordPressログイン画面とダッシュボードにBASIC認証でアクセス制限をかける方法

By Wizard-Nakata 投稿日: 2021年6月25日 最終更新: 2021年6月25日

WordPressの海外IPアクセス制限は解除するだけではNG!速度低下とセキュリティ危険性 の記事で、WordPressのログイン画面とダッシュボードに一定のアクセス制限をかけることが重要である、とお話をしました。

WordPressの海外IPアクセス制限は解除するだけではNG!速度低下とセキュリティ危険性

ログイン画面およびダッシュボードに何もアクセス制限をかけない状態だと、ブルートフォースアタック(総当たり攻撃)の被害にあったときに、ハッキングされる危険性とサイトパフォーマンスの低下によってサイト表示速度が低下してしまう恐れがあるためです。

近年、SEOでもサイト表示速度を含むUXが重要視されるようになってきており、このようなパフォーマンスの低下は検索順位にも少なからぬ悪影響を与えてしまいます。

そこで本記事では、海外アクセス制限を解除した際の代替セキュリティ対策などで用いられる、WordPressのログイン画面およびダッシュボードにBASIC認証を設置してアクセス制限を実施する具体的な方法をお伝えいたします。

目次

  • BASIC認証でwp-login.phpファイルとwp-adminディレクトリ以下を制限
    • 単一の.htaccessファイルで特定のディレクトリと特定のファイルを同時に指定するのは難しそう
    • 2つの.htaccessファイルを作成して、それぞれでBASIC認証をかける
      • wp-login.phpに対してBASIC認証を設定
      • wp-admin以下にBASIC認証を設定
  • IPアドレスでwp-login.phpとwp-adminディレクトリ以下(WordPress管理画面)にアクセス制限をかける方法
  • .htaccessにディレクトリ一覧の非表示設定も記述
  • パーミッション変更・アクセス制限設定後には動作確認テストを行う

BASIC認証でwp-login.phpファイルとwp-adminディレクトリ以下を制限

BASIC認証でセキュリティ対策

WordPressにおいて、ログインするためのURL(ログイン画面が生成されるURL)は3つ。

  • URL/wp-login.php
  • URL/login (wp-login.phpにリダイレクト)
  • URL/wp-admin

実質的にはwp-login.phpファイルとwp-adminディレクトリがログインに関するファイル・ディレクトリとなります。そのため、この両方にアクセス制限をかける必要があります。

よく"wp-adminディレクトリにBASIC認証をかければセキュリティ対策になる"としている記事を見かけますが、これだと/wp-login.phpまたは/loginにアクセスした際にログイン画面へたどりつけてしまうため、wp-adminのみへの制限だと不十分です。

wp-adminとwp-login.phpの両方にアクセス制限をかけるようにしましょう。

単一の.htaccessファイルで特定のディレクトリと特定のファイルを同時に指定するのは難しそう

wp-login.phpは初期状態ではWordPressインストールディレクトリに設置してあるため、なんとかインストールディレクトリの.htaccess1本でwp-login.php(ファイル)とwp-admin(直下ディレクトリ)を制御しようとしましたが、どうやら難しい様子。

というのも、.htaccessファイルではDirectoryディレクティブが使えず、ディレクトリの指定が難しいとのこと。

またURI指定のLocationディレクティブも使えず、方法としてはSetEnvIfを利用しての対処となるようです。

参考: .htaccess の書き方(アクセス制御編) Qiita

参考: 「Directory」, 「Location」 が.htaccessでは使えない | ex1-lab

他の制御方法として、たとえば任意のディレクトリやファイルをBASIC認証から除外するという方法もあるとのこと。

参考: 特定のディレクトリやファイルをBASIC認証から除外する SAKI Web Design

ただ上記、なかなか大変そうということもあり、特にこだわりがないのであれば.htaccessを2つ設置することで解決はできそうです。(あまりカッコよくはないですが。また後述しますが運用面でのカバーは必要です)

1つはwpインストールディレクトリに設置してwp-login.phpのみをファイル指定でBASIC認証。

もう1つはwp-adminディレクトリに設置して、wp-adminディレクトリ以下にBASIC認証をかけます。

下記のサイトでも同様の手段で、異なる2つの階層にそれぞれ.htaccessを設置し、wp-login.phpファイルとwp-adminフォルダにBASIC認証をかける方法が紹介されていました。

WordPressの管理画面のセキュリティ対策にBASIC認証を設定しよう | 株式会社ベクトル

wp-login.phpファイル、wp-adminフォルダをアクセス制限する。 WordPress運用支援センター

ユーザーの方には基本的にはログイン時URLとしてwp-login.phpまたはURL/loginを指定していただき、wp-adminはログイン用URLとしては非推奨、という運用でカバーする方針としました。

wp-adminのBASIC認証のあと、さらにwp-login.phpのBASIC認証となり、2回ログインを行うことが必要となってしまうためです。

2つの.htaccessファイルを作成して、それぞれでBASIC認証をかける

そもそものhtaccessファイルの作り方は下の記事で紹介しています。.htaccessファイル作成時に必要となるサーバーパスの調べ方についても說明。

Basic認証が効かない5パターンの対処と.htacessファイル作成方法 | まほウェブ

BASIC認証の際に引っかかりやすい5つのポイントなど記述していますので、ぜひ合わせてお読みください。

wp-login.phpに対してBASIC認証を設定

まずはWordPressインストールディレクトリにある、wp-login.phpに対してBASIC認証を設定します。

まず、BASIC認証で使用するパスワードファイル = .htpasswdを生成します。下記ジェネレーターなどでハッシュ化させた形で生成すると良いでしょう。

htpasswdジェネレータ htaccess パスワード用 MD5 ハッシュ計算 生成した.htpasswdファイルをWordPressのインストールディレクトリ(wp-login.phpがある階層)に設置します。

次に.htaccessに記述を加えます。WordPressの仕様により、ほとんどのケースで既にインストールディレクトリ上に.htaccessが生成されていると思いますので、既にある.htaccessに下記の記述を追加します。

<Files wp-login.php>
AuthType Basic
AuthUserFile サーバーパス/.htpasswd
AuthName "Please enter your ID and password"
Require valid-user
</Files>

既にある.htaccessに追加する際は、 #BEGIN WordPressよりも上に記述をするようにしましょう。

#BEGIN WordPress以下に記述を加えてしまうと、アップデートの際などに記述が消えてしまう可能性があります。

.htaccessの記述が完了したら、wp-login.phpに対するBASIC認証は完了です。ログイン動作テストを行ってみましょう。

wp-admin以下にBASIC認証を設定

次に、同様にしてwp-admin以下にもBASIC認証を設定します。

上記と同様にして手動で.htaccessファイルを記述しても良いのですが、フォルダ全体にBASIC認証をかける場合には、多くのレンタルサーバーの場合、サーバー管理パネル上でのBASIC認証機能を利用することができます。

たとえばエックスサーバーの場合はこちら。アクセス制限(BASIC認証) | レンタルサーバーならエックスサーバー

手動で.htaccessファイルを生成する場合には、wp-login.phpの場合と同様に.htpasswdファイルを生成した後、wp-adminディレクトリ直下に下記.htaccessファイルを作成します。

AuthType Basic
AuthUserFile /*サーバーのパス*/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
Require valid-user
<FilesMatch "(admin-ajax.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>

上記ソースコード引用元: WordPressの管理画面のセキュリティ対策にBASIC認証を設定しよう | 株式会社ベクトル

<FilesMatch 〜 の箇所では、wp-adminフォルダ以下で行われるAjax通信を許可(admin-ajax.phpファイルを除外)する設定が記述されています。

IPアドレスでwp-login.phpとwp-adminディレクトリ以下(WordPress管理画面)にアクセス制限をかける方法

IPアドレスでアクセス制限

上記まで、メディアサイトなど、社外からの多数の投稿者がいるシーンを想定して簡易的なアクセス制限であるBASIC認証の方法をご紹介させていただきました。

より確実なアクセス制限の手法として、BASIC認証ではなくIPアドレスでアクセス制限をかける方法があります。

以下、WordPress管理画面にIPアドレス制限をかける方法(.htaccess) から引用させていただきます。下記手法が利用できないシーンなど詳細の記載がありますので、ぜひ一度引用元サイトもご確認ください。

–引用ここから —

WordPress では、WordPress の設置ディレクトリに .htaccess ファイルが存在します。 ですので .htaccess にIPアドレス制限の記述を追記してあげれば良いでしょう。 <FilesMatch> ディレクティブで管理画面の URL と一致するページにIPアドレスによる制限をかけています。

<FilesMatch "wp-login.php|wp-admin">
Order deny allow
Deny from all
Allow from xxx.xxx.xxx.xxx
</FilesMatch>

アクセスされた URL に「wp-login.php」もしくは「wp-admin」という文字列を含んでいる場合に、このIPアドレス制限が発動するような設定です。 xxx.xxx.xxx.xxx の部分には、アクセスを許可したいIPアドレスを指定してください。 これで管理画面へアクセスできるIPアドレスが限定できます。

–引用ここまで —

.htaccessのパーミッションは604か606。パーマリンク設定を利用する場合も多いと思うので、個人的には606でOKと思います。

「.htaccess」ファイルが書き換えられてしまう事例が多発していますので、パーミッション設定は必須です。パーマリンクの設定が出来るようにするには「606」にします。

WordPressで推奨されるパーミッション設定について 株式会社ネディア │ネットワークの明日を創る。

.htaccessにディレクトリ一覧の非表示設定も記述

今回.htaccessファイルの作成、編集をしました。この機会に下記Optionの設定もしておきましょう。セキュリティ性が向上します。

(ただし、WordPressの場合にはもともとディレクトリ一覧が表示されることはないとの情報もあります。そのため必須ではないかもしれません。)

またサーバーによってOptionsの設定ができない場合もあるので、無理に設定することはないかもしれません。エックスサーバーの場合は500エラーとなり、設定できないようでした。

.htaccessにOption -Indexesと記述をして、ディレクトリ一覧が表示されないように設定します。

Apacheなら「.htaccess」に下記を記述して、ディレクトリ一覧を非表示にします。レンタルサーバーの設定によっては、「index.html」などがないディレクトリはファイルが一覧で表示されるため、下記を記述する。

Options –Indexes

※上述したOptionsを使用できるかは、サーバーの設定により異なります。

引用元: 【WP】WordPressの基本的なセキュリティ対策 Qiita

パーミッション変更・アクセス制限設定後には動作確認テストを行う

ファイル・ディレクトリのパーミッション変更やアクセス制限を実施した際には、下記の動作確認テストをセットで行うようにしましょう。

サーバーの環境によりパーミッション変更後に不具合が出る可能性がありますので、変更後は最低限下記の動作確認をしておくと安心です。

・WordPress管理画面へのログイン

・記事の投稿及び画像のアップロード

・プラグインの追加と削除

・テーマの変更

WordPressで推奨されるパーミッション設定について 株式会社ネディア │ネットワークの明日を創る。

この記事をシェアする:

  • Click to share on Twitter (Opens in new window)
  • Click to share on Facebook (Opens in new window)

本投稿の関連記事

カテゴリー: webセキュリティ タグ: BASIC認証, 海外アクセス制限

著者の自己紹介と実績紹介サイトはこちら

SEOコンサルティングやSEO実行支援、Webサイト制作のご相談を承っています。

Webサイト制作とSEOの専門家 – Marketing Wizard

上記サイトでは、私の経歴とWebサイト制作・SEO支援実績を掲載しています。

ぜひご覧くださいませ。

お気軽にコメントをくださいませ!

 

本記事はあなたのお役に立てましたでしょうか?
ひとことでもコメント欄からご感想をいただければ、モチベーションに繋がります。

また「本記事には書かれていなかったけれど、他の点について知りたい」というご質問や、誤っている箇所などあればご指摘もお待ちしております。

メールアドレスが公開されることはありません。
なんでもお気軽にコメントくださいませ。

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Marketing Wizard : Nakata

" Webマーケティングで魔法をかける "
東京都にて活動しています、30代フリーランスのSEOコンサルタント兼Webディレクターです。Marketing Engineerを目指して色々勉強と挑戦中。

サイト制作では、SEOを考慮したサイト設計から、PR・プレスリリースを含めた幅広いWebマーケティングの提案・代行まで。
Google AnalyticsやSearch Console等のアクセスデータやログからの各種分析も行っています。

新規事業のご相談をいただくことも多く、No-Codeを用いた仮説検証・テストマーケティングもお引き受けしています。

【経歴】
神戸大学法学部卒→政府系金融機関。その後、大阪のインバウンド向け広告代理店に勤務した後、2014年4月から個人事業主として活動開始。
約5年間にわたり、旅行・観光のプランニング&手配代行サービスサイトを自身で設立。数名にてスモールビジネスとして運営しておりました。

自己紹介&実績掲載サイト

Webサイト制作とSEOの専門家 - Marketing Wizard

follow me !

  • Twitter
  • LinkedIn

サイト内検索

Recent Posts

  • WordPressブログをNotion製Webサイトに移行することにしました 2021年9月14日
  • Glideでログイン機能・ユーザーごとに表示切り替えできるアプリは作れるか 2021年7月24日
  • 「AWSをはじめよう」での初期設定まとめ。請求アラート・IAMユーザー・セキュリティ 2021年7月24日
  • 「URLがGoogleに登録されていません」Search Consoleでインデックスされない 2021年7月20日
  • オンラインのマインドマップならmiroで共同編集!作成・Notion埋め込み方法 2021年7月11日

Categories

  • CMS一般
  • concrete CMS
  • EC/ショッピングカート
  • No-Code
  • SEO
  • Strikingly
  • webセキュリティ
  • webデザイン/コーディング
  • webマーケティング一般
  • WordPress
  • その他
  • サーバー
  • フリーランス論/仕事術
  • マーケティングオートメーション(MA)・CRM
  • ライティング
  • 便利ツール一般

Tags

2段階認証 Adalo Airtable aws concrete5 ConoHa ConoHa-vps ContactForm7 ConvertKit CSS E-A-T Instagram kusanagi LP No-Code nofollow noindex owncloud podcast Quire ssh strikingly STUDIO tmux vps Webサイトビルダー webセキュリティ web制作 wordpress エックスサーバー エッセンシャル思考 エラー対応 クラウドストレージ サーチコンソール セキュリティ ツール データベース プラグイン プロジェクト管理 メールマーケティング ライティング 事例 書評 著者情報 高速化

ソース・参照元つきAIによる高品質SEO記事コンテンツ作成ツールα版が完成しました

現在、クローズドβ版に向けて先行登録ユーザー様を募集しています。

機能や詳細は ソース・参照元つきAIによる高品質SEO記事コンテンツ作成ツールα版が完成しました の記事をご確認ください。

Notion製Webサイトでも発信中

Notion×Superで制作したWebサイトでも、アウトライン形式で最新情報を発信しています。

魔法使いのスクリプト

頻繁に記事を更新していますので、こちらもぜひご覧ください。

Anchorでpodcastラジオ音声配信もしています

Webマーケティングやスモールビジネスに役立つ方法をpodcastラジオ音声配信しています。

魔法使いのWebマーケティングRadio  • A podcast on Anchor

「ながら聴き」も可能な内容ですので、ぜひお楽しみください。

お気軽にご相談ください

No-Codeによるシステム開発やCMS構築・Webサイト制作から、サイト分析・SEOを中心としたWebマーケティングまで。
さらにプレスリリース配信を起点としたPR戦略企画も承ります。

自己紹介・実績サイト

お問い合わせはこちらから。

ぜひお気軽にご相談ください。