zoukankan      html  css  js  c++  java
  • apache认证、授权、访问控制

    认证对象:某一个网站目录。

    启用认证

    1.即用AllowOverride指令指定哪些指令在针对单个目录的配置文件中有效:AllowOverride AuthConfig

    2.设置密码登录访问某个站点或者文件等

    先介绍用密码来保护服务器上的目录。
    
    首先需要建立一个密码文件。这个文件应该放在不能被网络访问的位置,以避免被下载。例如,如果/usr/local/apache/htdocs以外的空间不能被网络访问,那么可以考虑把密码文件放在/usr/local/apache/passwd目录中。
    
    Apache在其安装目录的bin子目录中提供了htpasswd工具,用于建立密码文件,可以这样使用:
    
    htpasswd -c /usr/local/apache/passwd/passwords rbowen 
    
    htpasswd会要你输入密码,并要求重新输入以进行确认:
    
    # htpasswd -c /usr/local/apache/passwd/passwords rbowen
    New password: mypassword
    Re-type new password: mypassword
    Adding password for user rbowen 
    
    如果htpasswd不在搜索路径中,则必须使用完整路径,如:/usr/local/apache/bin/htpasswd
    
    然后修改httpd.conf或.htaccess文件,指示服务器允许哪些用户访问并向用户索取密码。若要保护/usr/local/apache/htdocs/secret目录,则可以将下列指令写入/usr/local/apache/htdocs/secret/.htaccess或者httpd.conf的<Directory /usr/local/apache/apache/htdocs/secret>段。
    
    AuthType Basic
    AuthName "Restricted Files"
    AuthUserFile /usr/local/apache/passwd/passwords
    Require user rbowen 

    对应的实际测试效果:

    </VirtualHost>
    <VirtualHost *:80>
        ServerName  127.0.0.1
        DocumentRoot "E:/wamp/www/"
        ErrorLog "E:/wamp/logs/www-error.log"
        CustomLog "E:/wamp/logs/www-access.log" common
      <Directory "E:/wamp/www/">
        Options Indexes FollowSymLinks
        #AllowOverride all
       
        AllowOverride AuthConfig
    AuthType Basic
    AuthName "test authconfig"
    AuthUserFile E:/wamp/bin/apache/Apache2.2.21/htpasswd/passwords
    Require user rbowen


       
        Order allow,deny
        Allow from all
        </Directory>  

    </VirtualHost>

    3允许多个人访问:

    如果想允许多人访问,那么就必须建立一个组文件以确定组中的用户。其格式很简单,可以用你喜欢的编辑器建立,例如:

    GroupName: rbowen dpitts sungo rshersey

    它只是每组一行的一个用空格分隔的组成员列表。

    向已有的密码文件中增加一个用户,可以输入:

    htpasswd /usr/local/apache/passwd/passwords dpitts

    程序的提示和上面的一样,但是它会追加到已有的文件中,而不是建一个新文件(参数 -c 可以强制建立新的密码文件)。

    现在,需要将.htaccess文件修改成这样:

    AuthType Basic
    AuthName "By Invitation Only"
    AuthUserFile /usr/local/apache/passwd/passwords
    AuthGroupFile /usr/local/apache/passwd/groups
    Require group GroupName

    现在,GroupName组中的成员都在password文件中有一个相应的记录,从而允许他们输入正确的密码进行访问。

    除了建立组文件,还有另一种途径允许多人访问,就是使用如下指令:

    Require valid-user

    使用上述指令,而不是 Require user rbowen ,可以允许密码文件中的所有用户使用正确的密码进行访问。通过为每个组建立一个密码文件,这里甚至允许列举各个组,其优点是Apache只需要检查一个文件(而不是两个),其缺点是,必须维护众多密码文件,而且要确保AuthUserFile指定了一个正确的密码文件

    ps:上述如果人多的话,认证需要耗费时间。

    4其他:

    AllowDeny指令可以允许或拒绝来自特定主机名或主机地址的访问,同时,Order指令告诉Apache处理这两个指令的顺序,以改变过滤器。

    这些指令的用法:

    Allow from address

    address可以是一个IP地址(或者IP地址的一部分),也可以是一个完整的域名(或者域名的一部分),还可以同时指定多个IP地址和域名。

    比如,要拒绝不受欢迎的兜售垃圾的站点:

    Deny from 205.252.46.165

    这样,这个指令所管辖的区域将拒绝所有来自该地址的访问。除了指定IP地址,也可以指定域名,如:

    Deny from host.example.com

    另外,还可以指定地址或域名的一部分来阻止一个群体:

    Deny from 192.101.205
    Deny from cyberthugs.com moreidiots.com
    Deny from ke

    Order可以组合DenyAllow指令,以保证在允许一个群体访问的同时,对其中的一些又加以限制:

    Order deny,allow
    Deny from all
    Allow from dev.example.com

    只列出Allow指令不会得到你想要的结果,因为它在允许指定对象访问的同时并不禁止其他未列出的对象的访问。所以上例使用的方法是:首先拒绝任何人,然后允许来自特定主机的访问。

  • 相关阅读:
    HEOI2018——welcome to NOI2018
    【HEOI 2018】Day2 T2 林克卡特树
    【康托展开】
    【省选模拟测试3】
    【BZOJ 2850】巧克力王国
    【BZOJ 3569】 DZY Loves Chinese II
    【BZOJ 4652】【NOI 2016】循环之美
    【BZOJ 3534】: [Sdoi2014]重建
    mysql 的研究
    mysql 的研究
  • 原文地址:https://www.cnblogs.com/legend-song/p/5256216.html
Copyright © 2011-2022 走看看