Basic認証について
きっかけは「ブルートフォースアタック」
今回、WordPressにBasic認証を設定してみようとしたきっかけは、ブルートフォースアタックを受けたと言う情報を聞いたからでした。
そこで、ブルートフォースアタックについて調べていて以下のサイトに出会ったからです。
この記事は、以下のサイトを参考にさせて頂きました。
【WordPress Codex 日本語版】
参考資料:ブルートフォース攻撃
しかし、肝心なのは「攻撃を受けないような設定をしておく」事です。
例えば管理者名を「admin」などにしておくと、攻撃者がBasic認証の設定の有無に関わらず攻撃を仕掛けてくる可能性が高まります。
攻撃を受ければサーバーに負荷がかかり、サーバー管理者や利用者に迷惑をかける事になります。
とは言えBasic認証を設定していれば、不正侵入されてしまう可能性が低くなり「改ざん」の危険性は低くなります。
Basic認証とは
ページにアクセスする際、「ユーザー名」と「パスワード」を入力しないとページの閲覧が出来ない仕組みです。
WordPressにも「管理画面」に入るには、「ユーザー名」と「パスワード」が必要なので何が違うのか理解できない人も多いかと思います。
WordPressもそうですが、これらは「動的サイト」と呼ばれる「CGI」と呼ばれるプログラムでログインを制御しています。
それに対し、「静的サイト」と呼ばれる「HTML」タグで作成されたサイトの場合、設置するだけでプログラムでの制御などは出来ません。
そのような「静的サイト」でも「ログイン認証」を可能にしたのがBasic認証です。
以前はセキュリティー面が甘く、設置しても無駄と言われていましたが、最近は「パスワード」をMD5のハッシュで暗号化されたりと改善されています。
WordPressでのBasic認証の構成
「wp-login.php」にBasic認証をかける
WordPressの管理画面にログインするのは、「wp-login.php」というファイルへのアクセスで開始されます。
このファイルが「ログイン」の「ユーザー名」と「パスワード」を入力する画面を表示・管理しています。
Basic認証はこのファイルに対して行います。
「.htaccess」と言うファイルで「wp-login.php」にBasic認証をかけますと定義します。
また、「.htpasswd」のファイルの場所を指定します。
「.htpasswd」ファイルには「ユーザー名:パスワード」が定義されており、ここに定義されたユーザー名とパスワードにマッチした場合のみ「wp-login.php」が閲覧出来るようになります。
Basic認証をかけた際の、ログインの流れ
流れをまとめると、
- 「http://wordpress/wp-login.php」にアクセス。
- 「.htaccess」に定義されているので、Basic認証画面を表示。
- 「ユーザー名」と「パスワード」を入力。
- 「.htpasswd」と照合しマッチすれば「WordPressのログイン画面」を表示。
- WordPressのログイン画面で「ユーザー名」と「パスワード」を入力。
- 認証が通れば、ダッシュボードが表示。
となります。
2~4の部分がBasic認証になります。
環境について
「XAMPP」と「WordPress」の場所
今回紹介する説明では、以下の環境を構築しています。
XAMPP(5.6.15) | D:\xampp5 |
WordPress(4.4.1) | D:\xampp5\htdocs\wordpress |
.htaccess | D:\xampp5\htdocs\wordpress\.htaccess |
.htpasswd | D:\xampp5\htdocs\wordpress\.htpasswd |
.htpasswdはアクセス出来ない場所に配置するのが良いのですが、レンタルサーバーなどでは設置できない場合が多いので「WordPress」の配下に設置します。 |
パスワードファイルの作成
.htpasswdファイルの作成方法
まず、Basic認証用の「ユーザー名」と「パスワード」を定義する「.htpasswd」ファイルを作成します。
「スタート」ー「プログラムとファイルの検索」に「cmd」と入力します。
表示された、「cmd.exe」を右クリックして「管理者として実行」をクリックします。
「ユーザーアカウント制御」が表示されたら、「はい」をクリックします。
「D:」と入力します。
「 cd \xampp5\apache\bin」と入力します。
「htpasswd -c .htpasswd gaoadmin」と入力し、
「New password:」 ********
「Re-type password:」 ********
と、パスワードを2度入力します。
また、複数ユーザーを登録する場合は、
「htpasswd .htpasswd NewUser」のように「-c」オプションを外すと追加されます。
「htpasswd -D .htpasswd NewUser」のように「-D」オプションで削除出来ます。
エクスプローラーで、「D:\xampp5\apache\bin」を開くと「.htpasswd」ファイルが作成されています。
サクラエディタで開くと、パスワードが暗号化されているのがわかります。
作成した、「.htpasswd」を右クリックして「切り取り」をクリックします。
「D:\xampp5\htdocs\wordpress」に移動して、右クリックの「貼り付け」をクリックします。
「.htpasswd」が貼り付けられます。
.htaccessファイルの編集
WordPressをインストール・設定すると「.htaccess」が作成されていると思いますが、作成されていない場合は新規に作成してください。
「.htaccess」をサクラエディタで開きます。
以下の内容を追加します。
# Protect wp-login <Files wp-login.php> AuthUserFile "D:/xampp5/htdocs/wordpress/.htpasswd AuthName "Private Access" AuthType Basic Require valid-user </Files>
<Files wp-login.php> | wp-login.phpに認証をかける定義の開始 |
AuthUserFile | .htpasswdファイルの場所をルートからのフルパスで指定します。 |
AuthName “Private Access” | Basic認証に表示する名称です。 |
AuthType Basic | ユーザ認証の種類(Basic認証) |
Require valid-user | 全ての認証されたユーザに、ディレクトリへのアクセスを許可します。 |
</Files> | 定義の終わりを示します。 |
定義の内容については、以下のサイトを参考にさせて頂きました。
【Apache HTTP サーバ バージョン 2.2】
参考資料:認証、承認、アクセス制御
Basic認証の動作確認
ブラウザで「http://localhost/wp-login.php」にアクセスします。
Basic認証の画面が表示されます。
Basic認証用に登録した「ユーザー名」と「パスワード」を入力して「ログイン」をクリックします。
WordPressのログイン画面が表示されます。
WordPressの「ユーザー名」と「パスワード」を入力して「ログイン」をクリックします。
ダッシュボードが開きます。
「.htpasswd」ファイルの設置場所
rootからのパスの確認方法
通常はサーバーの管理画面にフルパスの説明があると思いますが、記載が無い・わからない場合に調べる方法を記載します。
サクラエディタを開き、「test.php」を作成します。内容は以下です。
<?php echo(getcwd()); ?>
ftpソフトで、WordPressのフォルダに設置します。
※確認したら直ぐに削除してください。消し忘れが原因でセキュリティーホールになっては本末転倒です。
ブラウザでアクセスします。
フルパスがブラウザに表示されます。
最後に
使いやすさとセキュリティーはバーター
通常、セキュリティーを強化する事は使いやすさを犠牲にします。
今回のBasic認証もセキュリティーを強化出来ますが、引き換えに二度のログインをしなければならないので使いやすさは犠牲になります。
また、Basic認証を導入したからと安心せず「定期的にパスワードの変更」を行うようにしましょう。
ハッキング、改ざんされてからでは遅いです。
コメント