htaccess の役割と Basic 認証を設定する方法


[初回公開] 2009年01月26日

ウェブサイトをインターネット上で公開するためにはウェブサーバと呼ばれるソフトウェアが必要になるが、1 つのサーバで複数のサイトを運営していたり、特定のディレクトリのみアクセス制限をかけたい場合に用いる htaccess の役割と Basic 認証の設定方法について紹介する。

htaccess の役割と Basic 認証を設定する方法

1.ウェブサイトでディレクトリごとにアクセス制限をかけたい場合

ウェブサイトでディレクトリごとにアクセス制限をかけたい場合は、サイト管理者のみアクセスする URL には定められた IP アドレスのみ許可したり、Basic 認証で ID とパスワードを入力しないと表示しないようにしたい時が挙げられる。



WordPress や MovableType といったブラウザでウェブサイトの管理ができる CMS はページや記事を投稿する管理画面もインターネット上に公開されるためハッキングや改ざんの危険に晒されるが、管理画面の URL のみアクセス制限をかけることで不特定多数がアクセスできなくしてセキュリティを高められる。

ディレクトリごとにアクセス制限をかける場合は、htaccess が用いられることが多い。

2.htaccess とは

htaccess(エイチティアクセス)とは、ウェブサーバの「Apache」で利用できるディレクトリ単位で設定を行うことができる機能である。
設定を施したいディレクトリにテキストファイルの「.htaccess」を置くだけで利用できる。

htaccess を利用すると設置したディレクトリに指定するアクセス元の IP アドレスしかアクセスできなくしたり、特定の URL にリダイレクト、そして ID とパスワードを入力させる Basic 認証をかけることができる。

htaccess を利用せずとも、Apache の設定ファイルとなる httpd.conf でもアクセス制限をかけることはできるが、サービスの再起動が必要になったり、ディレクトリごとに管理担当者を分けている場合は htaccess で運用されることが多い。

2-1.htaccess を利用できるようにする方法

htaccess はテキストファイルをサーバに FTP などでアップロードするだけで利用できるが、Apache 自体が htaccess の機能を有効化していないと正常に働かない。

Apache で htaccess を有効化するには、設定ファイルとなる httpd.conf を開き、下記の場所を表示する。

<Directory "/var/www/html">
  Options FollowSymLinks MultiViews IncludesNoExec
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>


上記の AllowOverride が htaccess の有効化を示すもので、None になっているのでこの時点では .htaccess を置いても動作しない。
そこで None を All に変更して Apache を再起動すると htaccess が利用できるようになる。

また、All 以外にも次の記載のようにより特定化して設定を行うことができる。

  • AuthConfig – 認証に関するディレクティブの使用を許可する
  • FileInfo – ドキュメントタイプを制御するディレクティブの使用を許可する
  • Indexes – ディレクトリインデックスを制御するためのディレクティブの使用を許可する
  • Limit – ホストへのアクセス制御を行うためのディレクティブの使用を許可する

3.Basic 認証とは

Basic(ベーシック)認証とは、アクセスした URL のサイトを表示するために ID とパスワードを用いて認証する機能のことである。
Basic 認証を施した URL にブラウザでアクセスすると下図のようにログイン画面がポップアップで表示される。

Basic 認証のログインポップアップが表示された様子

ID とパスワードは htaccess に直接記載するのでデータベースやプログラムが動作していないサーバでも利用することができる。

4.htaccess で Basic 認証を設定する方法

htaccess で Basic 認証を設定する方法は、ファイル「.htaccess」をアップロードする必要がある。
Windows OS では .(ドット)から始まるファイル名は利用できないため、違う名前のテキストファイルで作成し、サーバ上で名前を変更する必要がある。

4-1.htaccess.txt を用意する

htaccess のファイルは、サーバ上ではファイル名「.htaccess」で初めて利用できるが、このファイルは .(ドット)から始まっているため Windows OS では作成することはできない。

そのため、Windows OS では通常のテキストファイルとして「htaccess.txt」をメモ帳やテキストエディタで用意する。

4-2.Basic 認証の指定を行う

次にテキストファイル「htaccess.txt」に対して下記の記載を行う。
また、ログインに利用する ID とパスワードは .htaccess とは別のファイルにすることもできるので今回は分けて対応する。

AuthUserFile /etc/var/htdocs/.htpass
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user


上記の 5 行で Basic 認証を施すことができる。

1 行目の /etc/var/htdocs/.htpass で認証に必要な ID とパスワードを指定しており、記載内容は後述する。
認証情報のファイルを置いているパスは /etc/var/htdocs にしているが、利用に応じて変更する。

また、パスワードファイルは不特定多数が見ることができる公開ディレクトリに保存すると認証の意味がないので、出来るだけインターネットからアクセスできないディレクトリに置いておいたほうがよい。

4-3.サーバにアップロードしてファイル名を変更する

最後に FTP ソフトなどでテキストファイル「htaccess.txt」を Basic 認証をかけたいディレクトリにアップロードし、「.htaccess 」にファイル名を変更する。

4-4.パスワードファイルを作成する

最後に、.htaccess を Windows OS 上で作成してアップロードした要領で Basic 認証のパスワードファイルも作成して設置する。
例えば、認証で利用する ID が「user」、そしてパスワードが「user」の場合は下記のように 1 行だけファイルに記載する。

user:mUQPGr6/ud7Rc

上記の :(コロン)より前の部分が ID、その後ろがパスワードなる
パスワードが暗号化する必要があるため htaccess のパスワード生成サイト等を利用して情報を取得する。

また、パスワードファイルはサーバに SSH などコマンドで操作することが可能であれば次の方法作成が可能である。

[root@localhost html]# htpasswd -c /etc/var/htdocs/.htpass user
New password:
Re-type new password:
Adding password for user user


上記の 1 行目の htpasswd はパスワードを操作するコマンドだが、-c オプションを付けることでファイルの新規作成を指定している。
そしてスペース区切りでパスワードファイルを設置するパスとファイル名、ユーザ名を記載してエンターキーを押す。

エンターキーを押すと New password: と表示されるので、Basic 認証で入力させるパスワードを入力して再度エンターキーを押す。
次に入力間違いがないかの確認のために Re-type new password: が表示されるので同じパスワードをもう一度入力すると完了となる。

コマンドラインから行った場合はパスワードの暗号化と、パスワードファイルの生成まで行ってくれるので準備が楽である。
ただし、コマンド操作が利用できるホスティングサービスは限られるので、手元の Windows OS でテキストファイルで用意してアップロードする手法が用いられることが多い。

関連記事

コメントを残す