CentOS 5.5を標準のApache httpd-2.2.3で実行しています。
ロケーション/ server-statusで mod_status を有効にしました。次の方法でこの単一の場所へのアクセスを許可したいと思います。
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番目のディレクティブ:許可 許可と拒否の両方の最終一致コントロールに一致:拒否最終一致コントロール:許可
私はテストしていませんが、あなたはほとんどそこにいると思います。
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
Deny from all
は必要ありません。実際、すべてがall
と一致するために失敗し、拒否されます(そして、Apacheは賢く、愚かなことをしようとしていると思います)。私は常にApacheのOrder
、Allow
およびDeny
ディレクティブがわかりにくいので、常にテーブルで視覚化します( the docs から取得):
一致|許可、拒否結果|拒否、結果を許可 ----------------------------------------- -------------- 許可のみ|許可|許可 拒否のみ|拒否されました|拒否されました 一致なし|デフォルト:拒否|デフォルト:許可 両方に一致|最終一致:拒否|最終一致:許可
上記の設定で:
私はおそらく、ポート80の単一のホストを拒否し、すべてを拒否し、サブネットを許可するためのIPTablesルールを追加することも検討します。
サブネットを許可した後、特定のアドレスから拒否ルールを設定しても問題はありません。この順序で実行してください。