如何使用 Apache 密码提示某些 IP 并允许所有其他人自由访问?

如何使用 Apache 密码提示某些 IP 并允许所有其他人自由访问?

已解决:这个想法是,如果访问者来自中国,他们必须通过基本身份验证。如果您有任何其他 IP 地址,您可以轻松访问该网站(包括代理)

//1400 rules....
SetEnvIf Remote_Addr 222.249.128.0/19 china
SetEnvIf Remote_Addr 222.249.160.0/20 china
SetEnvIf Remote_Addr 222.249.176.0/20 china
AuthType Basic
AuthName "Restricted"
AuthUserFile /www/passwd/users
Require valid-user
Order allow,deny
Allow from All
Deny from env=china
Satisfy any

答案1

只需添加“允许来自 myiprange”或“允许来自 myinternalnetwork.com”。“满足任何”将需要有效用户或允许来自。

看:身份验证、授权和访问控制

答案2

通常,默认配置对每个人都具有不受限制的访问权限

<Directory "/home/web/htdocs">
    Order allow,deny
    Allow from all
</Directory>

然后,您必须强制对受限区域进行身份验证,方法是拒绝所有子网,然后仅允许那些子网,然后满足它们实际如何进行身份验证的任何要求。满足所有条件是为了确保两个都需要访问政策。

<Directory "/home/web/htdocs/restricted">
    Order Deny,Allow
    Deny from all
    Allow from 58.240.0.0/15
    Allow from 58.242.0.0/15
    Require valid-user
    Satisfy all
    AuthName "Restricted Area" 
    AuthType Basic 
    AuthUserFile /home/web/.htpasswds/.htpasswd 
    Require valid-user
</Directory>

警告!

每次我认为我理解了身份验证的工作规则时,我都必须反复摆弄配置,直到我弄清一些细微差别。仅将此用作起点。重新阅读有关 mod_auth 和 mod_access 的 apache 文档,特别注意 Order 指令。答案就在这里。

希望这会有所帮助,如果您的工作示例与此不符,请发布它,因为这是 Apache 食谱中非常好的菜谱。

- 编辑 -

经过上述测试,我们发现除了该IP地址的用户之外,其他所有人都禁止进入限制区域,并且必须提供身份验证。

从您的问题中无法明确得知其他 IP 的用户是否需要不受限制地访问这个“限制区域”,还是只是被禁止访问?

答案3

这是我用来允许所有用户、拒绝来自中国的用户并提示密码的代码:

AuthType Basic
AuthName "Restricted"
AuthUserFile /home/.htpasswds/.htpasswd
Require valid-user
Order Allow,Deny
Allow from all
deny from 58.14.0.0/15
....
deny from 222.249.192.0/18
satisfy any

相关内容