アクセス制御

既定のアクセス許可

Apache 2.4では、アクセス制御はOrderではなくRequireを用います。Access control - Upgrading to 2.4 from 2.2 - Apache HTTP Server Version 2.4

Order ordering
Order ディレクティブ - mod_authz_host - Apache HTTP サーバ
ordering引数
キーワード 説明
Deny,Allow DenyをAllowより先に評価する。既定ではアクセスを許可
Allow,Deny AllowをDenyより先に評価する。既定ではアクセスを拒否
Mutual-failure Allow,Denyと同義。(このキーワードは非推奨)
※キーワードは上記の通りに記述します。カンマの前後に空白があってはなりません。

アクセスを許可または拒否するホストを指定するにはAllowまたはDenyを用い、これでfrom allを指定するとすべてのホストが対象となります。

Allow from all | host
Deny from all | host
Deny ディレクティブ - Apache HTTP サーバ

アクセス許可の指定後「'AH01630: client denied by server configuration'」となるならば、OrderをRequireに置き換えます。apache2.4 - Apache2: 'AH01630: client denied by server configuration' - Stack Overflow

  Apache 2.2 Apache 2.4
すべての要求を拒否
Order deny,allow
Deny from all
Require all denied
すべての要求を許可
Order allow,deny
Allow from all
Require all granted
Access control - Upgrading to 2.4 from 2.2 - Apache HTTP Server Version 2.4

個別のアクセス制御

ディレクトリ

<Directory "c:/Apache2/htdocs">
  Order Allow,Deny
  Deny from all
</Directory>

ファイル名

拡張子が.gif、.jpeg、.jpgそして.pngへのアクセスを禁止するには、<FilesMatch>を使用して、

<FilesMatch "\.(gif|jpe?g|png)$">
  Order Allow,Deny
  Deny from all
</FilesMatch>

とします。

HTTP基本認証 (BASIC認証)

AuthType Basic
AuthName 記憶領域の名前
AuthUserFile ユーザー名とパスワードの一覧を格納したファイルのパス
Require valid-user

AuthNameは記憶領域の名前を表し、クライアントに対して使用するユーザー名とパスワードを通知するために用いられます。この名前にスペースが含まれる場合には、引用符 ( " ) で囲まなければなりません。AuthName ディレクティブ

AuthUserFileで、認証のための情報を格納したファイルへのフルパスを指定します。そのファイルは、

[ユーザー名1:暗号化したパスワード]
[ユーザー名2:暗号化したパスワード]
 ...

のようにユーザー名と暗号化したパスワードをコロン ( : ) で区切り、行ごとに列挙したものになります。AuthUserFile ディレクティブ

このファイルを作成するには、Apacheに含まれるhtpasswd.exeを使用するのが簡単です。これは、

htpasswd [-cmdpsD] passwordfile username
htpasswd - Manage user files for basic authentication - Apache HTTP Server

の書式に従い、ファイル名とユーザー名を指定して実行します。また新規にファイルを作成するならば、-cオプションも指定します。

C:\>htpasswd -c C:\.htpasswd TEST
New password: ***
Re-type new password: ***
Adding password for user TEST

結果は指定ファイルに、

TEST:$apr1$1lARsvN0$BHiBLX16T7o6BHyXCMRg7/

のようなテキストで保存されます。ファイルに出力する必要がなければ-nオプションを指定することで、次のように暗号化されたパスワードを確認できます。

C:\>htpasswd -n TEST
New password: ***
Re-type new password: ***
TEST:$apr1$Sq5yMmAD$UAPS/aMR5zj.3j2bVszUe0

なおユーザー名とパスワードを同一にしても、生成される結果は毎回異なる内容となります。パスワードファイルの作成 - アクセス制限 - Apache入門