在庫のApache httpd-2.2.3でCentOS 5.5を実行しています。
ロケーション/ server-statusでmod_statusを有効にしました。次の方法で、この単一の場所へのアクセスを許可したいと思います。
- すべてから拒否
- サブネット192.168.16.0/24から許可
- 192.168.16.0/24サブネット内のIP 192.168.16.100から拒否します。
1と2は簡単です。ただし、「192.168.16.0/24から許可する」ので、192.168.16.100から拒否することはできますか?
192.168.16.100のDenyステートメントを追加しようとしましたが、機能しません。関連する構成は次のとおりです。
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
または:
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
ただし、アクセスログに示されているように、これによってこの特定のページへのアクセスが妨げられることはありません。
www.example.org 192.168.16.100 - - [11/Mar/2011:16:01:14 -0800] "GET /server-status HTTP/1.1" 200 9966 "-" "
mod_authz_hostのマニュアルによると:
許可、拒否
最初に、すべてのAllowディレクティブが評価されます。少なくとも1つが一致する必要があります。一致しない場合、要求は拒否されます。次に、すべてのDenyディレクティブが評価されます。一致する場合、要求は拒否されます
IPアドレスはDenyディレクティブと一致するため、要求を拒否するべきではありませんか?
mod_authz_hostページの表によると、このIPアドレスは「許可と拒否の両方に一致」する必要があるため、「最終一致制御:拒否」ルールが適用されます。
一致を許可、結果を拒否、拒否、結果を許可 一致のみ許可リクエスト許可リクエスト許可 一致のみ拒否リクエスト拒否リクエスト拒否 一致なしデフォルトの2番目のディレクティブ:拒否デフォルトの2番目のディレクティブ:許可 許可と拒否の両方に一致する最終一致コントロール:拒否される最終一致コントロール:許可される
Allow from 192.168.16.0/24
ます。ドキュメントを理解すると、192.168.16.0 / 24ネットワークのリクエスターIPはこのAllowステートメントと一致し、リクエストは許可されます。