Changes between Version 10 and Version 11 of TipAndDoc/network/httpd


Ignore:
Timestamp:
Dec 16, 2010 11:11:38 PM (14 years ago)
Author:
mitty
Comment:

moved to accesscontrol

Legend:

Unmodified
Added
Removed
Modified
  • TipAndDoc/network/httpd

    v10 v11  
    2020 * ただし、全てのVirtualHostで同じワイルドカード証明書を指定すれば可能 
    2121 
    22  = ドットから始まるファイル、ディレクトリにアクセス禁止 = 
    23  * [http://tm.root-n.com/server:apache:htaccess:redirectmatch apache :: ドットから始まるファイル、ディレクトリにアクセス禁止 (Tipsというかメモ)] 
    24 {{{ 
    25 #403 Forbidden 
    26 RedirectMatch 403 /\. 
    27 }}} 
    28  
    29  * /etc/apache2/conf.d/ に以下のような設定ファイルを作ると全体(全てのVirtualHostを含む)に適用することが出来る。 
    30 {{{ 
    31 # prevent files and directories started with 'dot' (ex: .svn/) 
    32 # from being viewed 
    33  
    34 <FilesMatch "^\."> 
    35         Order Allow,Deny 
    36         Deny from all 
    37 </FilesMatch> 
    38  
    39 <DirectoryMatch "/\."> 
    40         Order Allow,Deny 
    41         Deny from all 
    42 </DirectoryMatch> 
    43 }}} 
    44    * この場合、「Options +Indexes」となっていてもドットで始まるディレクトリはリスティングされない。また、ドットで始まるディレクトリ内のファイルも当然であるが403となる。 
    45    * ディレクトリorファイルが実際に存在するかどうかはエラー結果に影響しない(存在しないパスであっても404ではなく403エラーになる)。 
    46  
    47  = Access control = 
    48  * see also wiki:TipAndDoc/project/trac#AccesscontrolwithApache 
    49  
    50  * 特定のメソッド以外制限する 
    51    * <LimitExcept METHOD> => http://httpd.apache.org/docs/2.2/mod/core.html#limitexcept 
    52  * アクセス条件を複数にする 
    53    * Satisfy All|Any => http://httpd.apache.org/docs/2.2/mod/core.html#satisfy 
    54    * see also [#ptifallonSatisfyany] 
    55  * Allow/Denyの適用順 
    56    * デフォルトでは「Order Deny,Allow」 => http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order 
    57      * Deny ディレクティブが Allow ディレクティブの前に評価されます。 アクセスはデフォルトで許可されます。Deny ディレクティブに合わないか、Allow ディレクティブに合うクライアントはアクセスを許可されます。 
    58    * '''使用例''' (サーバへのアクセスはデフォルトで禁止、/tracへのアクセスは許可。但し、GET以外は禁止) 
    59 {{{ 
    60 <Directory /> 
    61         Options FollowSymLinks 
    62         AllowOverride None 
    63         Order Deny,Allow 
    64         Deny from all 
    65 </Directory> 
    66  
    67 ScriptAlias /trac       /usr/share/trac/cgi-bin/trac.fcgi 
    68 <Location /trac> 
    69         <LimitExcept GET> 
    70                 Deny from all 
    71         </LimitExcept> 
    72 </Location> 
    73 }}} 
    74    * 省略されているOrderディレクティブ(デフォルトの「Order Deny,Allow」)は、<LimitExcept>の範囲ではなく、外の<Location>以下に適用されていると考えるのが妥当 
    75      * 設定の失敗例として、以下のように設定するとGETではないPOSTメソッド等も制限されなくなり、期待する動作(GET以外のメソッドを403にする)を取らなくなる 
    76 {{{ 
    77 <Directory /> 
    78         Options FollowSymLinks 
    79         AllowOverride None 
    80         Order Deny,Allow 
    81         Deny from all 
    82 </Directory> 
    83  
    84 ScriptAlias /trac       /usr/share/trac/cgi-bin/trac.fcgi 
    85 <Location /trac> 
    86         Allow from all 
    87         <LimitExcept GET> 
    88                 Deny from all 
    89         </LimitExcept> 
    90 </Location> 
    91 }}} 
    92      * <Location>全体で「Deny from all => Allow from all」の順で適用され、結果として全てのメソッドが制限されなくなっていると思われる 
    93    * '''使用例2''' localhost(127.0.0.1)からのみ、GET以外も許可する 
    94 {{{ 
    95 <Directory /> 
    96         Options FollowSymLinks 
    97         AllowOverride None 
    98         Order Deny,Allow 
    99         Deny from all 
    100 </Directory> 
    101  
    102 ScriptAlias /trac       /usr/share/trac/cgi-bin/trac.fcgi 
    103 <Location /trac> 
    104         <LimitExcept GET> 
    105                 Deny from all 
    106                 Allow from 127.0.0.1 
    107         </LimitExcept> 
    108 </Location> 
    109 }}} 
    110      * 内部リバースプロキシなどに応用できる => #11 
    111  
    112  == ptifall on Satisfy any == 
    113  * 「Satisfy any」における落とし穴 
    114  * 目標 
    115    1. 特定のIPからは、認証せず見られる 
    116    1. 特定のIP以外からは、認証後見られる 
    117    1. 特定のディレクトリ(URL)は、認証に関係なく見られない 
    118      * ディレクトリごとに細かく設定するため.htaccessで制御したい 
    119  * 例としては内部向けpukiwikiなど 
    120  
    121  === 標準的な設定 === 
    122  * /etc/apache2/sites-enabled/some.vhost.conf 
    123 {{{ 
    124 <Directory /> 
    125         AllowOverride Limit 
    126          
    127         Satisfy any 
    128         Order deny,allow 
    129         Deny from all 
    130         Allow from XX.YY.ZZ.XYZ 
    131         AuthType Digest 
    132         AuthName "Authorized" 
    133         AuthUserFile /path/to/.htdigest 
    134         Require valid-user 
    135 </Directory> 
    136 }}} 
    137  
    138  * /path/to/www/wikiplus/attach/.htaccess 
    139 {{{ 
    140 Order allow,deny 
    141 Deny from all 
    142 }}} 
    143  
    144  === 問題点 === 
    145  * 上位設定(この場合some.vhost.conf)で「Satisfy any」としているため、.htaccessにおいて「deny from all」に'''関係なく'''valid-userであればアクセスできてしまう。 
    146  * wget -S --spider --user username --password password !http://example.jp/www/wikiplus/attach/index.html 
    147 {{{ 
    148   HTTP/1.1 200 OK 
    149 }}} 
    150  
    151  === solution === 
    152  * some.vhost.conf 
    153 {{{ 
    154         AllowOverride Limit FileInfo AuthConfig 
    155 }}} 
    156    * Satisfyを.htaccessで使うには「AuthConfig」が必要 
    157  * .htaccess 
    158 {{{ 
    159 Order allow,deny 
    160 Deny from all 
    161 Satisfy all 
    162 }}} 
    163  
    164  * 全ての.htaccessを書き換える必要がありスマートでないので、conf側だけで収まる設定を模索中 
    165  
    16622 = mod_proxy = 
    16723 * SSLProxyEngine