在apache 2.4中结合对子文件夹的ip和用户身份验证限制

时间:2014-11-20 15:27:04

标签: 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>

现在我希望子文件夹/ secure /需要有效的用户登录

<webroot>/secure/.htaccess看起来像

<RequireAll>
    Require all granted
    Require user user1 user2 user3
    AuthBasicProvider file
    AuthType Basic
    AuthName "Secure Folder Login"
    AuthUserFile /securePath/userAuth
</RequireAll>

我仍然可以在没有用户身份验证的情况下从IP 1.2.3.4访问/保护。感觉apache与IP匹配Require ip 1.2.3.4指令(在implicid RequireAny内部)并且不关心可能的额外限制。

2 个答案:

答案 0 :(得分:2)

如果您希望阻止任何IP但只阻止列表中的IP,并提供基本登录提示允许的IP,您可以执行类似(在.htaccess内):

Require all denied
<RequireAll>
    Require valid-user
    Require ip 100.04.04.04
    AuthBasicProvider file
    AuthType Basic
    AuthName "Secure Folder Login"
    AuthUserFile /htdocs/www/web_projects/.htpasswd
</RequireAll>

对于多个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>

答案 1 :(得分:0)

至少位置(位置,目录,文件和.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>

低于 vhost配置中的<Location />Require ip 1.2.3.4</Location> (上面不起作用)。使用<Directory>阻止或.htaccess无效。