先のwp-config.php(https://wp-operation.com/security/wpconfig-access-restriction/)同様、WordPressをインストールすると、インストールしたフォルダの中にwp-login.phpというファイルがあります。
WordPressにログインする時に以下の画面が出ますが、このログイン画面はwp-login.phpを読み込んで表示しています。
これも先のwp-config.php同様アクセス制限して、ログイン画面自体来られないようにしてしまいます。
しかし、wp-login.phpはwp-config.phpと違い、単にアクセス不可にすればOKではありません。なぜなら、アクセス不可にしてしまうと自分もアクセスできなくなってしまい、自分もログインできなくなってしまうからです。
特定のIPアドレスだけを通過させることもできますので固定IPアドレスを持つことができる場合は、自分の固定IPアドレスを通過させることで可能です。
しかし、契約しているブロードバンドサービスによっては、個人では固定IPアドレスが持てない場合があります。
(現在、フレッツ光はOKですが、コミュファ光は固定IPアドレスは持てないようです。私もできません。)
企業ではなく個人でインターネットを利用している人は固定IPアドレスは持っていない人が多いでしょう。
ではどうすればいいでしょうか?
Basic認証というものを使います。
Basic認証を設置することでwp-login.phpにユーザー名とパスワードを設置し、分からない人は入ってこれないようにしてしまいましょう。
Basic認証とは
ホームページを表示させたり、webサイト上のソフトウェアを実行するとき、
webサーバーとお使いのブラウザが通信をしてデータやファイルをやり取りします。
この時のデータやファイルのやりのり取取り決めを通信プロトコルと言います。
ホームページの表示などはHTTPというプロトコルで通信するのですが、このHTTPで決められている利用者認証の一つにあるのがBasic認証です。その他にもDigest認証というのがあります。
ホームページで何かをダウンロードしようとしようとしたときなど、下記のウィンドウが表示されたことがあると思います。(ブラウザによって差異はあります)
これがBasic認証で、ユーザー名とパスワードでサイトをガードします。
※Basic認証は認証としては簡易なので重要なファイルの管理などには向きません。個人情報などのファイルを認証する場合は複雑な認証を採択してください。
Basic認証の設置方法
設定するファイルとフォルダ。
WordPressにログインするときのURLはなんでしょうか?
あなたのドメインが「example.com」の場合
http://example.com/wp-admin/
または
http://example.com/wp-login.php
です。
つまりWordPress上の「wp-admin」フォルダと「wp-login.php」ファイルをガードします。
BASIC認証に必要なファイル
.htaccess(アクセス制御ファイル)
webサーバーに「Apache」を用いている場合、Apacheをフォルダ(ディレクトリ)単位で制御するためのファイル。
そのディレクトリ単位で設定します。
webサーバー「nginx」を利用している場合は.htaccessはありません。
※nginxでは設定ファイルに書きます。
.htpasswd(パスワードファイル)
BASIC認証に使うユーザー名とパスワードを記載したファイルです。
一般に.htpasswdを使われるがこれはユニークに決められます。
しかしこのサイトでは一般倣って「.htpasswd」にします。
書式は「ユーザー名:パスワード」でユーザー名とパスワードを:(コロン)でつなぎます。
ユーザー名が「taro」パスワードが「password」の場合
taro:password
となります。
必要なもの
テキストエディタ、TeraPad、サクラエディタなどを使います。Windowsのメモ帳は利用できません。
FTPクライアントソフト、FTPでファイルをアップロード・ダウンロードできるファイル。このサイトではFFFTPを使います。
下記の3つのファイルをダウンロードしてください。
これをベースに.htaccessと.htpasswdを作成します。
パスワードの生成
最初にhtpasswd.txtをベースに.htpasswdにユーザー名とパスワードを記載して作成します。
ユーザー名はそのまま自分の好きなユーザー名をそのまま使用します。
パスワードは暗号化して記載します。
①htpasswd.txtの中身の確認
htpasswd.txtをテキストエディタで開いてください。
デフォルトで「admin:password」が入ってますが、ここを生成したユーザー名とパスワードに書き換えます。
②暗号化されたパスワードの生成
http://wp-operation.com/makebasicpasswd/passwd.php
にアクセスしてください。
あなたの希望するユーザー名とパスワードを入力して「パスワード生成」ボタンをクリックします。
青色で塗られている部分を、コピーしてhtpasswd.txtの「admin:password」に書き換えます。
③htpasswd.txtを保存します。
UTF-8N(BOMなしUTF-8)で上書き保存します。
.htaccessに追記する。(または作成する)
①既存の.htaccessをダウンロードして開く
WordPressをインストールするとインストールしたディレクトリにはもうすでに.htaccessがあると思います。
FTPソフトを使って「.htaccess」をダウンロードします。
ダウンロードした「.htaccess」をテキストエディタを使って開きます。
このような記述が書かれている部分があるかと思います。
(マルチサイト化されている場合は、少し記述は違っていますが、どこに書けばいいかは分かると思います)
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
この
# END WordPress
のすぐ上に記述します。
②サーバー上のWordPressをインストールしたフォルダ(ルートフォルダ)の絶対パスを取得する。
※このサイトではWordPressをインストールしたフォルダをルートフォルダと呼ぶことにします。
以下のファイルのダウンロードしてください。
ダウンロードした「path.php.txt」ファイルを「path.php」に名前の変更をします。(.txtを取り除きます)
「path.php」をルートフォルダにFTPクライアントソフトでアップロードします。
ブラウザで「path.php」にアクセスします。
あなたのWordPressがインストールされているサイトのドメインが「example.com」なら
「http://example.com/path.php」です。
すると、あなたのサーバー上のルートフォルダの絶対パスが表示されます。
それをコピペして、テキストファイルなどに一度保存しておきましょう。
このページではルートフォルダの絶対パスを「/home/xxx/example.com/public_html」として解説します。
③wp-login.phpファイルをアクセス制限ファイルを作成する。
wp-login.phpにBasic認証でアクセス制限します。
ファイルのアクセス制限なので、ファイルを指定してアクセス制限の処理を書きます。
ダウンロードした「htaccess-root.txt」をテキストエディタで開きます。
下の画像のようになっていると思いますので、「WordPressがインストールされているルートフォルダの絶対パス」の部分を②で調べたパスにコピペで書き換えます。
以下のようになります
<Files wp-login.php>
AuthUserFile /home/xxx/example.com/public_html/.htpasswd
AuthName “Please input ID and Password.”
AuthType Basic
require valid-user
</Files>
これを、①で開いた.htaccessの# END WordPressの上にコピペします。
以下のようになります
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<Files wp-login.php>
AuthUserFile /home/xxx/example.com/public_html/.htpasswd
AuthName “Please input ID and Password.”
AuthType Basic
require valid-user
</Files>
# END WordPress
.htaccessを保存します。
UTF-8N(BOMなしUTF-8)で上書き保存します。
④wp-adminフォルダをアクセス制限ファイルを作成する。
次にwp-adminフォルダをアクセス制限します
フォルダのアクセス制限なので、wp-adminフォルダに新しく.htaccessを設置します。
(普通はwp-adminフォルダに.htaccessはありません)
ダウンロードした「htaccess-admin.txt」をテキストエディタで開きます。
下の画像のようになっていると思いますので、「WordPressがインストールされているルートフォルダの絶対パス」の部分を②で調べたパスにコピペで書き換えます。
以下のようになります。
AuthUserFile /home/xxx/example.com/public_html/wp-admin/.htpasswd
AuthGroupFile /dev/null
AuthName “Please input ID and Password.”
AuthType Basic
require valid-user
<FilesMatch “(admin-ajax.php)$”>
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>
.htaccess-admin.txtを保存します。
UTF-8N(BOMなしUTF-8)で上書き保存します。
⑤wp-login.phpファイルをアクセス制限する.htaccessと.htpasswdアップロードします。
まず③で作った「.htaccess」と②で作った「.htpasswd」をWordPressをインストールしたフォルダにアップロードします。
まず最悪の状態になったときに元の状態には戻せるように、現在の「.htaccess」を名前を変更します。
(私はその日の日付などを名前の後ろにつけます)
そして③で作った「.htaccess」と②で作った「.htpasswd」をアップロードします。
⑥wp-adminフォルダの.htaccessと.htpasswdアップロードします。
こちらはwp-adminフォルダにアップロードします。
wp-adminをクリックしてフォルダを開きます。
④で作った「htaccess-admin.txt」と②で作った「.htpasswd」をアップロードします。
「htaccess-admin.txt」を「.htaccess」に名前を変更します。
以上です。
ではログイン画面にアクセスしてみましょう
このようなポップアップが出れば設置はOKです。
登録したユーザー名とパスワードでログインしてみましょう
ログイン画面が出ましたでしょうか?
ログイン画面が出れば成功です。
ね、カンタンでしょ。
ぜひ、Basic認証でログイン画面を保護してください。
参考サイト:
http://www.chama.ne.jp/access/
https://lab.maro-log.net/post-1883/
http://www.webdesignleaves.com/wp/php/53/