允许和/或拒绝 CIDR 值问题

允许和/或拒绝 CIDR 值问题

我在处理 Allow/Deny 时遇到了一些问题,到目前为止,我已经花了大约 3 个小时来处理它,结果却很沮丧。我读过 Apache 文档和几本指南,但还是卡住了。

我的问题非常简单,或者至少我觉得应该是...我想阻止 CIDR 范围到达我主机的特定区域。在我的测试服务器中,我已经尽我所能尝试了所有可能的情况。

<LocationMatch "/myjunk/.+">
    <IfModule mod_access.c>
        Order Deny,Allow
        Deny from 10.1.1.100/32
        Allow from All
    </IfModule>
</LocationMatch>

我已经在日志文件中验证了我实际上来自 10.1.1.100,我尝试过:切换到 Order Allow,Deny;去掉 /32;切换 Allow 和 Deny 行并切换 Order。如果我删除 Allow 并将 All 设置为 Deny,我会得到我想要的 403。

日志文件片段:

15128 10.1.1.100 192.168.1.100 - - [01/Nov/2011:17:36:54 -0400] "GET /myjunk/abc/def/1 HTTP/1.1" 200 8000

我在一台旧的 Solaris 机器上运行 Apache/2.0.58,不幸的是,我无法改变这一点。我拥有服务器的完全访问权限,我可以直接修改 httpd.conf 文件。

我感觉我忽略了一些东西,或者只是错过了一些小事。

答案1

更改Order Deny,AllowOrder Allow,Deny并重试。

请记住,按照deny,allow顺序,deny指令在指令之前进行评估allow。如果客户端不匹配deny规则或匹配allow规则,则将授予其访问权限。

相反allow,deny:如果客户端不匹配allow规则或者匹配deny规则,那么它将被拒绝访问。

相关内容