在apache 2.4中将子文件夹的ip和用户身份验证限制结合起来
我想限制某些IP访问完整的网站(apache 2.4)。最重要的是,我想通过用户身份验证限制对某些子文件夹的访问。用户身份验证不起作用。以下是我得到的: 在vhost配置中,我有在apache 2.4中将子文件夹的ip和用户身份验证限制结合起来,apache,.htaccess,authentication,apache2.4,Apache,.htaccess,Authentication,Apache2.4,我想限制某些IP访问完整的网站(apache 2.4)。最重要的是,我想通过用户身份验证限制对某些子文件夹的访问。用户身份验证不起作用。以下是我得到的: 在vhost配置中,我有 <Location /> # Localhost Require ip 127.0.0.1i # some other IP Require ip 1.2.3.4 <Location> #本地主机 要求ip 127.0.0.1i #其他知识产权 要求ip 1.
<Location />
# Localhost
Require ip 127.0.0.1i
# some other IP
Require ip 1.2.3.4
<Location>
#本地主机
要求ip 127.0.0.1i
#其他知识产权
要求ip 1.2.3.4
现在,我希望子文件夹/secure/需要有效的用户登录
/secure/.htaccess
看起来像
<RequireAll>
Require all granted
Require user user1 user2 user3
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /securePath/userAuth
</RequireAll>
要求所有授权
需要用户user1 user2 user3
AuthBasicProvider文件
AuthType Basic
AuthName“安全文件夹登录”
AuthUserFile/securePath/userAuth
我仍然可以从IP 1.2.3.4访问/保护,无需用户身份验证。感觉apache与IP相匹配,要求IP 1.2.3.4
指令(内部隐式IDRequireAny
),并且不关心后续可能出现的额外限制。至少是位置(位置外、目录、文件和.htaccess指令)似乎是单独评估的,最后一次,并以与外观相反的顺序进行评估。我没有完全检查,也找不到上面的文档
长话短说
我可以通过放置
<Location /secure/>
Require all denied
<RequireAll>
Require user user1 user2 user3
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /securePath/userAuth
</RequireAll>
</Location>
要求全部拒绝
需要用户user1 user2 user3
AuthBasicProvider文件
AuthType Basic
AuthName“安全文件夹登录”
AuthUserFile/securePath/userAuth
下面vhost配置中的
需要ip 1.2.3.4
块(上面不起作用)。使用
阻止或.htaccess
无效。如果您希望阻止任何IP,但只阻止列表中的IP,并为允许的IP提供基本登录提示,您可以执行以下操作(在.htaccess内):
要求全部拒绝
需要有效用户
要求ip 100.04.04.04
AuthBasicProvider文件
AuthType Basic
AuthName“安全文件夹登录”
AuthUserFile/htdocs/www/web\u projects/.htpasswd
对于多个IP,类似于以下内容的操作应该有效:
Require all denied
<RequireAll>
<RequireAny>
Require ip 78.53.160.0/19
Require ip 80.171.1.0/24
Require ip 80.171.2.0/23
Require ip 80.171.4.0/22
Require ip 80.171.8.0/21
Require ip 80.171.16.0/20
Require ip 80.171.32.0/19
Require ip 80.171.64.0/18
</RequireAny>
<RequireAll>
Require valid-user
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /htdocs/www/web_projects/.htpasswd
</RequireAll>
</RequireAll>
要求全部拒绝
要求ip 78.53.160.0/19
要求ip 80.171.1.0/24
要求ip 80.171.2.0/23
要求ip 80.171.4.0/22
要求ip 80.171.8.0/21
要求ip 80.171.16.0/20
要求ip 80.171.32.0/19
要求ip 80.171.64.0/18
需要有效用户
AuthBasicProvider文件
AuthType Basic
AuthName“安全文件夹登录”
AuthUserFile/htdocs/www/web\u projects/.htpasswd
出于某种原因,这也会在ip匹配时忽略身份验证。这里是-如果您的服务器启用了mod\u access\u compat
,您可以使用旧的Apache语法使其按预期工作。链接中的代码进行了IfModule
检查,以便当模块不存在时,它将恢复到较新的语法和忽略身份验证的行为。不幸的是,我们还没有找到最终的答案。
Require all denied
<RequireAll>
<RequireAny>
Require ip 78.53.160.0/19
Require ip 80.171.1.0/24
Require ip 80.171.2.0/23
Require ip 80.171.4.0/22
Require ip 80.171.8.0/21
Require ip 80.171.16.0/20
Require ip 80.171.32.0/19
Require ip 80.171.64.0/18
</RequireAny>
<RequireAll>
Require valid-user
AuthBasicProvider file
AuthType Basic
AuthName "Secure Folder Login"
AuthUserFile /htdocs/www/web_projects/.htpasswd
</RequireAll>
</RequireAll>