ログイン画面が危ない!WordPressの「wp-login.php」をBASIC認証でアクセス制限する方法

【セキュリティ対策】意外と簡単!WordPressのログイン画面をBASIC認証で2段階ログインにしてアクセス制限する方法

ども、Qtaro(@Daisuke_9taro)です。

WordPressユーザーであれば

ブログが乗っ取られた!

なんて話、一度は耳にするのではないでしょうか。
。。あれ、もしかしてそんなの「他人事」だなんて思ってませんか?

甘いですよー。デラ甘いですよー。

WordPressのログイン画面のURLなんて大抵の方はドメインさえ分かっていれば特定できますし、ログイン名なんて名前、もしくはHN(ハンドルネーム)そのままなんてやりがち。ヒドイ場合は「admin」なんてことも。パスワードは…誕生日?車のナンバー?…あ、あの人どっちもFacebookに乗せてたな。。どれどれちょっと組み合わせて。。ゴニョゴニョ。。

このくらいなら素人の方でも推測できますよね?
ましてやちょっとITリテラシーのある方なら、その気になればあなたのブログにもそんなに時間かけずに侵入できてしまうかもしれません。

WordPressのログイン画面はURLさえ分かっていれば誰でも

そんなワケでセキュリティ対策といってもホント色々あるんですが
今回は比較的特定されやすいとされるWordPressのログイン画面を

BASIC認証

という仕組みを使って2段階ログインにして他人から見えないようにする方法を説明します。

.htaccess(ドットエイチティーアクセス)」なんていう、Web制作初心者の方には耳慣れない言葉が出てくる上に説明が長いので難しく見えますが、特に詰まらなければ以下の手順通りで30分程度で実装出来ますので、是非チャレンジしてみてください。

[toc]

目次

初心者向け:BASIC認証?予備知識とか準備とか

最初にサクッと今回実装する.htaccessを使用した「BASIC認証」のことや前提条件なんかをお話しておきます。「そんなん知ってるわー」という方は作業手順の方までどしどしお進みください〜。

BASIC認証って何さ?

まず「BASIC認証」ってなんぞやと。ちょっと以下を見てみましょう。

Webサイトの閲覧に使うプロトコル「HTTP」が備える、最も基本的なユーザ認証方式。

アクセスの制限されたWebページにアクセスしようとすると、Webブラウザでユーザ名とパスワードの入力を求め、サーバでアクセスを許可しているユーザに一致すると、ページを閲覧することができる。

via:BASIC認証 【 基本認証 】- IT用語辞典 e-Words

。。

雰囲気だけ感じてくださいw

要するに自分のブログの特定のページにアクセス制限をかけて、このページはID/PW入力しないと見れませんよーなんてことを実現できる認証の仕組みです。

で、コイツをWebサイトのファイルの権限やらキャッシュ状況やらを設定できる「.htaccess」っていうファイルを使用して設定しましょうねってのが今回のやる事です。

まぁBASIC認証自体はかなり基本的な認証の仕組みなので、これ自体がメチャメチャ強力かっていったら実はそうでもないんですが、そもそもログイン画面を誰でも見れる状態って結構気持ち悪いですからね。

そんなに難しくもないので導入しておいて損はないですよ!

前提条件2つ(「.htaccess」「FTPソフト」)

作業に必要な前提条件は以下2点です。

  • 「.htaccess(ドットエイチティーアクセス)」が使える(編集できる)レンタルサーバーを利用していること
  • FTPクライアントソフトが使えること(FFFTP、File Zilla等)

これさえ整っていいれば、WordPressサイトを既に運営されている方であればどなたでも今回の作業は可能です。

.htaccess自体はそんなに作るの難しくないんですが、ご利用のレンタルサーバーによってはそもそも.htaccessを編集する権限が与えられていないことがあります。(格安サーバーは結構ありがち)。まずは.htaccessを作成する権限があるか確認してみましょう。良く分からーん!!という方はご利用のサーバー会社のサポートの方に問合せしてみてください。

FTPついては今回は詳しく解説しませんが、これを機に覚えたいという方は以下の「FFFTP」の使い方あたりを参考にしてみてください。

FFFTPの使い方

「.htaccess」と「.htpasswd」の2ファイル作成します

今回の作業で作成するのは2ファイル。「.htaccess」と「.htpasswd」です。

BASIC認証をこれから初めて導入するという方であれば「.htpasswd」はまだ作成されていないかと思いますが、「.htaccess」に関しては既にファイルは存在している方もいらっしゃるかもしれません。

その場合は既存の「.htaccess」に追記をすればOKなので、新しく.htaccessを用意しなくて大丈夫ですよ。

ではでは、前置きはこの辺にしてそろそろ作業に入りましょうー!

「.htpasswd」の作成

それでは早速準備していきます。

まずは「.htpasswd」を作成する必要ありますので
以下の「.htaccess Editor」へアクセス。

.htaccess ファイルを簡単作成「.htaccess Editor」

画面左のメニューから「ベーシック認証」を選び
BASIC認証で使用したいユーザIDパスワードを入力します。

もちろん短すぎたりすぐにバレてしまうようなものではなく、ある程度の長さと複雑さは持たせるようにしましょう。

入力できたら「.htpasswdを作成」を実行します。

.htaccess EditorでBASIC認証用の.htpasswdを作成

これで.htpasswdの情報が作成できますので、この内容をコピーして、自分のPCでテキストエディターを開き貼付けます。普段お使いのエディターで問題ありません。

Windowsなら「メモ帳
Macなら標準の「テキストエディター」なんかでOKです。

コピペしたらファイル名は「htpasswd.txt」として保存してください。

.htpasswdをテキストエディターにコピペ

【コラム】ファイル名は「.htpasswd」じゃないの?

上のファイル名が「.htpasswd」ではなく「htpasswd.txt」なのは、Macの場合最初が「.(ドット)」て始まるファイル名を使用できないからです。(後述の「.htaccess」についても同様)
※試してもらえると分かりますがエラーになるはずです。

なので今回は、まずtxtファイルで作って置いてサーバーにアップロードした後にファイル名を変更するという方法を取ります。

お使いのPCがWindowsの方は「.htpasswd」で作成できますので、最初からドットで始まるファイル名にしてもらっても構いませんー。

「.htaccess」の作成(もしくは編集)

.htpasswdの作成でBASIC認証のログイン情報の準備が出来ましたので、続いて.htaccessファイルを作成します。

先程同様PC上でテキストエディターを開き
そこに以下のコードをコピペしてください。
↓↓↓↓↓↓↓↓

<Files wp-login.php>
AuthUserFile ※ここに「.htpasswd」へのフルパスを記入
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user
</Files>

こんな感じです。

.htaccessにBASIC認証用のコードを追加

「.htacess」が作成済みの場合

で、このエントリーの冒頭でも述べたように、既に「.htaccess」がサーバー上に存在するという方は既に何かしらの記述がされているかなと思うので、他の記述を見ながら適切な位置を選んでコピペ(追記)してください。

書かれてある内容次第ですが、大抵は一番下に追記すればOKなハズ。ここは書かれている内容にヨリキリで何とも言えないので、ご確認の上追記を。

.htaccessにWordPress管理画面、BASIC認証用のコードを追記

「.htaccess」の内容をポイントだけ軽く説明

全部はしませんが、大事なトコだけちょっと説明を。
注目して欲しいのは1行目(7行目閉じタグ)と2行目です。

1行目(と7行目)で「管理画面でのみ」BASIC認証を有効に

<Files wp-login.php>


</Files>

1行目でwp-login.phpというファイルにアクセスするときのみBASIC認証を行うという宣言をしています。wp-login.phpというのはWordPressの管理画面用のPHPファイルです。この宣言をしないとブログ内の全てのページにBASIC認証がかかってしまう(もちろんブログ記事も)ので絶対に外さないように気をつけましょう。

2行目でユーザIDとパスワードの置き場所(フルパス)を明記

AuthUserFile ※ここに「.htpasswd」へのフルパスを記入

2行目はこの後設定しますが、BASIC認証の際のユーザIDとパスワードを設定しているファイルのフルパスを記述します。つまり先程作った「.htpasswd」の置き場所を指定する箇所ですね。

このパスを正しく設定しないと入力したIDとパスワードが合っていようと認証が全く出来なくなってしまうので、必ず正しいパスを記載してください。なお今回はドキュメントルート直下に.htpasswdを配置します。

.htpasswdのフルパスを明記する

.htaccessの仕上げとして「.htpasswd」のフルパス(配置先)を記載しましょう。
ちなみにこのフルパスはレンタルサーバー会社により異なるので、不明な方はお使いのサーバ会社のホームページ等を見るなり記載方法を確認しましょうー。

(例)エックスサーバーの場合

ちなみに、本ブログでも使用しているエックスサーバーの場合はFTPソフトで見えるパスの前に「/home/サーバID/」を追加した物になります。サーバIDとはXサーバー契約時に自分が設定した初期ドメインの最初の文字列です。
例えば契約時の初期ドメインが「hogehoge.xsrv.com」なら「hogehoge」がサーバIDです。

ご自身のサーバIDを確認したら早速以下のように.htaccessを編集しましょう。

.htaccessに.htpasswdのフルパスを記載

編集が完了したら、.htpasswdのときと同様、「htaccess.txt」という名前で保存します。

htacess.txtと名前を付けて保存 - BASIC認証

これで「.htaccess」と「.htpasswd」の準備が完了しました!
あとはFTPでサーバーにアップロードするだけです。

「.htaccess」と「.htpasswd」をサーバーにアップロード

仕上げです!

作成した「htaccess.txt」と「htpasswd.txt」をFTPソフトを使用して、サーバーへアップロードしましょう。アップロード先はお使いのドメインのドキュメントルートです。(エックスサーバーの場合は「/ドメイン名/public.html」配下ですね)

htaccess.txtとhtpasswdをサーバー(ドキュメントルート)へアップロード

アップロードしたらそれぞれ以下のようにファイル名をリネーム(ファイル名変更)してあげます。

  • 「htaccess.txt」 … 「.htaccess」にリネーム
  • 「htpasswd.txt」 … 「.htpasswd」にリネーム

これを

.htaccessと.htpasswdをサーバ上でリネーム

こうしましょう。

.htaccessと.htpasswdをサーバ上でリネーム

これで作業は完了です!

動作確認:ログイン画面を覗いてみよう!

設定も終わったところで
いつものようにWordPressのログイン画面を覗いてみましょう。

WordPressのログイン画面でBASIC認証

BASIC認証のダイアログが表示されました!

念のためブログの記事なんかはちゃんと今まで通り見れることを確認しましょう〜。

ID・パスワードを正しく入力すると、これまで通りログイン画面に移ります。

BASIC認証の後、WordPressのログイン画面を表示

これで正しいID、パスワードを入力しない限りは認証エラーが返され、ログイン画面には移れなくなりました。

【困った】正しいIDパスワードを入力しても認証エラーになったら?

なお、BASIC認証は正しく機能するのに「エラーで認証に失敗してしまう!」という方は「.htaccess」の.htpasswdのフルパス誤りの可能性が高いです。

今一度.htaccessの内容を確認し、フルパスに誤りがないチェックしてみましょう〜。

まとめ:まずはID/PWを見直し!その上でBASIC認証を導入してみよう

さて、いかがでしたでしょうか

今回は「BASIC認証?」「.htaccess?」となってしまう制作初心者向けにも実際に手を動かして頂けるよう説明をさせていただいたので、やや説明が冗長になってしまいました。が。実際に作業してみるとそんなに時間はかからず実装できるかなーと思います。

もちろんこれだけやれば「セキュリティ対策万全やでー!」なんてことはないんですが

やらないよりは100倍マシ

「ログイン2回するなんてメンドイよー」なんて言わずちょっと一手間かけて自分のブログを守る対策とっておきませんか?

あ、もちろんID/パスワードは特定しづらいものにしましょうね。
めっちゃ簡単なパスワード2重にしたところで全然意味ないですよ!

それではこのへんで〜

おすすめ商品

サーバー側を万全にしたところでウィルス対策していないPCでサーバーを操作するなんてのはリスク以外の何者でもありません。普段お使いのPCもしっかりセキュリティ対策しましょう。

間違いないのはウィルスバスター。自分も使っています。
WindowsはもちろんMacでも使用可。

ウィルス対策ソフトは高過ぎ!」なんて方はこちらがおすすめ。この製品の良い所は何と言っても更新料が0円なとこ。一度買えばずっと(OSサポート終了期間まで)使い続けられます。動作も軽くて良いですよ。最低限このくらいのソフトは入れておきましょう。僕は使用頻度の低いWindowsPCにコレ入れてます。

よかったらシェアしてね!

この記事を書いた人

Web Developer / 秋田県秋田市出身 / ただのおばけですよ

目次
閉じる