apache认证、受权、访问控制

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

启用认证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 ide


   
    Order allow,deny
    Allow from all
    </Directory>   工具

</VirtualHost>测试

3容许多我的访问:网站

若是想容许多人访问,那么就必须创建一个组文件以肯定组中的用户。其格式很简单,能够用你喜欢的编辑器创建,例如:ui

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指令不会获得你想要的结果,由于它在容许指定对象访问的同时并不由止其余未列出的对象的访问。因此上例使用的方法是:首先拒绝任何人,而后容许来自特定主机的访问。