web サーバ (Apache/2.0) の設定
≪ previous next ≫

U.5.アクセス制御関連ディレクティブ


 クライアントからのアクセスを制御するためのディレクティブは、適用範囲を特定ディレクトリに限定する目的で <Directory>, <Files>, <Location> 等のブロック ディレクティブ内や .htaccess ファイルで使用される。
※ アクセス制御と同時にパスワード認証を設定することも可能。 その場合の適用方法は Satisfy ディレクティブで
   指定する。

U.5.1.Options

 ディレクトリに対して使用可能な機能を設定・制限する。

Options [+|-]option [[+|-]option] ...
  • default : FollowSymLinks
    ※ <Directory "/var/www/html"> ブロックにおいては Indexes および FollowSymLinks が指定されている。
  • option には次のキーワードを指定する。
    • All
      MultiViews を除いた全ての機能が有効となる。

    • ExecCGI
      CGI スクリプトの実行を許可する。
      このオプションが設定されていない場合は、CGI スクリプトは実行できない。
      サーバーはシンボリックリンクを追跡する。 また SSI の利用を許可する。

    • FollowSymLinks
      シンボリックリンクをによるファイル参照を許可する。

    • Includes
      SSI の利用を許可する。
      このオプションが設定されていない場合は、SSI の利用はできない。

    • Indexes
      リクエストが下記条件に合致する時、ディレクトリ内のファイル名一覧を返す。
      • リクエスト URL にファイル名がない。
      • リクエスト URL に合致 (マップ) するディレクトリが存在する。
      • 該当ディレクトリ内に DirectoryIndex で指定したファイル(デフォルトは index.html 等)が存在しない。
       インターネットは遠隔地でのファイル共有を目的として開発されたので、ファイル一覧表示の機能はデフォルトで許可 (ユーザーのディレクトリは別) されている。
       セキュリティの観点から拒否にしているサイトが多いが、ホスティング等のレンタルサーバーはデフォルト設定になっている所もあり、表示させるかどうかはサイト管理者 (サーバー借受者) の判断に任されている。  サイト管理者は、ディレクティブを記述したコントロールファイル ( .htaccess) で制御する。

    • SymLinksIfOwnerMatch
       ファイルやディレクトリの所有者と、シンボリックリンクの所有者が同一の場合のみリンクを辿ることを許可する。

  • +, - の作用
     あるディレクトリに対して複数の Options が 適用可能な場合、当該ディレクトリに最も近い <Directory> ディレクティブの Options のみが適用される。
     しかし、すべての Option が + や - 付きで 指定された場合は、Option の値は現在の設定値から加減される働きをする。

    例えば、次のように + や - を付けない場合、
    <Directory /var/www/html>
      Options Indexes FollowSymLinks
    </Directory>

    <Directory /var/www/html/subdir>
      Options Includes
    </Directory>
    ディレクトリ /var/www/html/subdir には Includes のみが適用される。

    しかし、次のように Option の前に + や - を置くと、
    <Directory /var/www/html>
      Options Indexes FollowSymLinks
    </Directory>

    <Directory /var/www/html/subdir>
      Options +Includes -FollowSymLinks
    </Directory>
    ディレクトリ /var/www/html/subdir に適用されるのは、Indexes と Includes になる。

    ここで注意が必要なのはすべての Option に +, - を付けなければならない点で、以下のように +, - を忘れると、
    <Directory /var/www/html>
      Options Indexes FollowSymLinks
    </Directory>

    <Directory /var/www/html/subdir>
      Options +Includes FollowSymLinks
    </Directory>
    ディレクトリ /var/www/html/subdir には FollowSymLinks のみが適用されることになる。

U.5.2.Allow と Deny

 2 つのディレクティブは特定クライアントのアクセスを 許可/拒否 する目的で使用する。
通常、これらディレクティブは Order ディレクティブとの組み合わせで使用される。

Allow from HostNameList [HostNameList] ....

Deny from HostNameList [HostNameList] ....
  • default : Allow from all
    ※ このデフォルト値は <Directory "/var/www/html"> 関連に対して設定されている。
  • ディレクトリに対するアクセスを、HostNameList に指定するドメイン名や IP アドレスで制御する。
  • Allow はアクセスの許可設定に、Deny はアクセスの拒否設定に使用する。
  • 第1引数は from 。
  • HostNameList には次のいずれかを使用する。
    • All
    • すべてのクライアントからのアクセスを許可 (Allow) または拒否 (Deny) する。

    • ドメイン名
       ドメイン名が完全に一致するホスト、またはドメイン名がこの文字列で終わるホストからのアクセスを許可 (Allow) または拒否 (Deny) する。

      例えば、HostNameList に project.ed.jp を指定した場合は、
      アクセス元ホスト名project.ed.jp との比較
      apache.project.ed.jp → 一致
      project.ac.jp → 不一致
      となる。

      ※ ドメイン名による制御は、次の理由から敬遠されることが多い。
      【 ドメイン名によるアクセス制御の問題点 】
       HostNameList にドメイン名を設定すると、apache は HostnameLookups の設定に関わらず、クライアントの IP アドレスに対して次のような動作を行う。

       先ず、IP アドレスに対して DNS の逆引きを行ってホスト名を得、そのホスト名に対して正引きを行い、元の IP アドレスと一致するかを調べる。
      DNS の逆引き・正引きが無矛盾でかつホスト名が一致する場合のみ「マッチ」と判断する。

       つまり逆引きに対応していないネットワークに対しては、ドメイン名による制御は行えないことになり、さらに正引きと逆引きの結果に矛盾を起こさないという条件はかなり難しいハードルといえる。

       したがって、事前に確認 (nslookup 等) を行えるホスト (ネットワーク) に対しては有効であるが、サーバーにかかる負荷が大きい (逆引き・正引きを実施しなければならない) ことも考慮すると、ドメイン名によるアクセス制御は控えた方が無難といえる。

    • IP アドレス
      • 合致する IP アドレスのアクセスを許可 (Allow) または拒否 (Deny) する。
      • IP アドレスの設定には、完全な IP アドレス指定 (特定端末) やサブネットマスクを使用する方法等がある。
      • IP アドレスの設定例
        HostNameList の設定値制御対象 IP アドレス
        10.2.3.220 → 特定の1端末を指定
        10.2.3.208/28 → 10.2.3.208 〜 10.2.3.223 を指定
        10.2.3.0/255.255.255.0 → 10.2.3.0 〜 10.2.3.255 を指定
        10.2.3. → 10.2.3.0 〜 10.2.3.255 を指定

U.5.3.Order

 web アクセスのデフォルト動作 (許可/拒否) を設定する。
 Allow や Deny ディレクティブが記述されている場合、設定値に基づいた順序でディレクティブ内容を評価し、 アクセス制御条件を決定する。
※ "Allow from ..." と "Deny from..." の評価はその記述順ではなく、Order で設定された評価順序に基づいて
   決定される。
   先頭の評価を後方の評価で上書きしたものが制御条件となる。

Order (deny,allow | allow,deny | mutual-failure)
  • default : allow,deny
    ※ メインサーバ関連のディレクトリ (/var/www/html 等) で Allow from all と共に設定されている。
       この状態で web アクセス可能となっている。
       ただし、.ht で始まるファイルには Deny from all が設定されているので web アクセスはできない。
  • deny,allow
    デフォルトで web アクセスを許可する。
    Allow, Deny ディレクティブが記述されている場合、Deny, Allow の順に評価する。
  • allow,deny
    デフォルトで web アクセスを拒否する。
    Allow, Deny ディレクティブが記述されている場合、Allow, Deny の順に評価する。
  • mutual-failure
    Allow のリストに現れ、Deny のリストに現れないホストのアクセスを許可する。
    この設定値は Order allow,deny と同じ効果であり、そちらを使用するよう推奨されている。

U.5.4.Satisfy

 パスワード認証 (Require) と アクセス制御 (Allow, Deny) の両方が使われている時のアクセスポリシーを設定する。

Satisfy ( Any | All )
  • パラメータは次のいずれかを使用する。
    • All
      両方の制限をパスしたユーザーのみアクセスが許可される。
    • Any
      どちらか一方のアクセス制限をパスすることで、アクセスは許可される。
  • 無設定の場合、All が適用される。

U.5.5.AccessFileName

 コントロール ファイル名を指定する。
※ ディレクティブを記述したファイルで、そのファイルを配置したディレクトリ独自のアクセス制限を行う。

AccessFileName FileName
  • default : .htaccess
  • AccessFileName はグローバルであり、ディレクトリごとの設定はできない。

U.5.6. .htaccess ファイル

 ユーザーのディレクトリ上に配置することで、ディレクトリ独自のアクセス制限を可能とする。
ファイルには実現したいディレクティブを記述する。
  • 記述できるのは AllowOverride で許可されたディレクティブのみ。
  • ディレクティブを記述したファイル (.htaccess) をディレクトリに保存することで、サーバーの再起動なしに設定ディレクティブの変更が可能。
  • 上記理由から、ユーザーが自分の管理しているページ (ディレクトリ) に対して、独自のディレクティブを適宜設定可能。
  • .htaccess はデフォルトのファイル名であり、AccessFileName ディレクティブで変更可能。

U.5.7.AllowOverride

 .htaccess による上書きを許可するディレクティブを指定する。

AllowOverride DirectiveGroup
  • AllowOverride は <Directory> ブロック内でのみ使用可能。
  • DirectiveGroup で指定可能なディレクティブ グループ名。
    • AuthConfig
      パスワード認証に関するディレクティブの上書きを許可する。
      AuthType, AuthName, AuthUserFile, AuthGroupFile, Require, ...
    • FileInfo
      ドキュメント タイプに関するディレクティブ等の上書きを許可する。
      DefaultType, ErrorDocument, AddType, AddLanguage, AddHnadler, SetHandler, Action, ...
    • Indexes
      ディレクトリ インデックス制御関連ディレクティブの上書きを許可する。
      FancyIndexing, AddIcon, AddDescription, HeaderName, ...
    • Limit
      アクセス制御用ディレクティブの上書きを許可する。
      allow, deny, order
    • Options
      ディレクトリにおける機能制御用ディレクティブの上書きを許可する。
      Options, XBitHack
    • All
      上記すべての上書きを許可する。
    • None
      すべての上書きを禁止する。
      .htaccess ファイルは無視される。
  • AllowOverride を (None 以外に) 設定すると、サーバーはリクエスト パスの途中ディレクトリも含めてコントロール ファイルを検索する。 サーバーの負荷が増大するため、パフォーマンスを重視する場合は注意を要する。



≪ previous [[ web サーバ - Apache/2.0 の設定 ]] next ≫