apache的访问控制

认证是指任何识别用户身份的过程,以允许特定的用户访问特定的区域或信息。
相关模块  
mod_auth
mod_access
相关指令
Allow
AuthGroupFile
AuthName
AuthType
AuthUserFile
Deny
Options
Require
申明:·本文中讨论的指令应该被放进主服务器的配置文件 (通常在段) 或者针对单个目录的配置文件(.htaccess files)中。
         ·如果希望使用.htaccess文件, 则必须设置服务器以允许在这些文件中使用认证指令, 用AllowOverride指令指定哪些指令在针对单个目录的配置文件中有效。  
         ·既然本文讨论认证,就应该对AllowOverride这样设置:
                     AllowOverride AuthConfig 
          如果你希望把这些指令直接写入主服务器配置文件,当然就需要有对配置文件的写权限。而且,你需要对服务器的目录结构有所了解,以确定某些文件的位置。
一、启用认证    先介绍用密码来保护服务器上的目录。
1、首先需要建立一个密码文件。这个文件可以放在不能被网络访问的位置,以避免被下载。
     Apache在其安装目录的bin子目录中提供了叫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
2、然后,需要修改httpd.conf或.htaccess文件, 以指示服务器允许哪些用户访问并向用户索取密码。
例如,要保护 /usr/local/apache/htdocs/secret 目录, 则可以将下列指令写入(1)/usr/local/apache/htdocs/secret/.htaccess文件,或者(2)httpd.conf的 
AuthType Basic         选择对用户实施认证的方法, 最常用的是由mod_auth提供的Basic,但Basic认证方法并不加密来自用户浏览器的密码,不于高度敏感的数据。
ache在最近的版本中还有另一种更安全的认证方法, 即由mod_auth_digest提供的AuthType Digest。

AuthName "Restricted Files"     设置使用认证的领域,(1)此领域说明会出现在显示给用户的密码提问对话框中,(2)也帮助客户端程序确定应该输入哪个密码。
AuthUserFile /usr/local/apache/passwd/passwords    设置了密码文件, 也就是刚才我们已经用htpasswd建立的passwords。
Apache还支持把用户信息存入快速数据库, mod_auth_dbm模块提供了指令AuthDBMUserFile, 并可以用dbmmanage程序建立和操作这些数据库。 Apache模块数据库中还提供了其他许多认证选项。
Require user rbowen                 Require指令设置了允许访问的用户
注:Require 指令
说明: 选择哪个认证用户能访问某个资源 
语法: Require entity-name [entity-name] ... 
上下文: 目录, .htaccess 
覆盖项: AuthConfig 
状态: 核心 
模块: core 此指令选择那个认证用户能访问一个目录。其语法如下:
Require user userid [userid] ... 
只有指定的用户可以访问此目录。
Require group group-name [group-name] ... 
只有隶属于指定用户组的用户可以访问此目录。
Require valid-user 
所有有效用户都可以访问此目录。
Require必须伴随AuthName和AuthType指令,及诸如AuthUserFile和AuthGroupFile(用以定义用户和用户组)以确保其能够正确工作。如:
AuthType Basic
AuthName "Restricted Directory"
AuthUserFile /web/users
AuthGroupFile /web/groups
Require group admin
二、允许多人访问
上述指令只允许一个人(一个叫rbowen的用户)访问这个目录, 但是多数情况下,都需要允许多人访问,所以就要用到AuthGroupFile。
1、首先,需要建立一个组文件以确定组中的用户。 其格式很简单,可以用你喜欢的编辑器建立,例如:
GroupName: rbowen dpitts sungo rshersey 
它只是每组一行的一个用空格分隔的组成员列表。

2、向已有的密码文件中增加一个用户,可以输入:
htpasswd /usr/local/apache/passwd/password 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组中的成员都在密码文件中有一个相应的记录, 从而允许他们输入正确的密码以进入。
3、除了建立组文件,还有另一种途径允许多人访问,即使用如下指令:Require valid-user 
使用上述指令,而不是require user rbowen, 可以允许密码文件中的所有用户以正确的密码进行访问。 这里甚至允许列举各个组,而为每个组建立密码文件, 其优点是,Apache只需要校验一个文件,而缺点是,必须维护众多密码文件, 而且要确保AuthUserFile指令指定了一个正确的密码文件。
4、性能问题
由于采用了Basic认证的方法, 每次向服务器请求甚至刷新一个受保护的页面或图片时都必须校验用户名和密码, 为此,必须打开密码文件并逐行搜索用户名,因此,服务器响应速度会受一些影响, 其程度与密码文件大小成正比。 在这种情况下,可以考虑用其他认证方法。
三、其他认证方法
基于用户名和密码的认证只是方法之一,时常会有不需要知道来访者是谁, 只需要知道来自哪里的情况。

Allow和Deny指令可以允许或拒绝来自特定主机名或主机地址的访问, 同时,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可以组合Deny和Allow指令, 以保证在允许一个群体访问的同时,对其中的一些又加以限制:
Order deny,allow
Deny from all
Allow from dev.example.com 
上例首先拒绝任何人,然后允许来自特定主机的访问。
注:AuthUserFile 指令
说明: 设定一个文本文件名称,这个文件含有认证用的用户名、密码列表。 
语法: AuthUserFile 文件路径 
上下文: 目录, .htaccess 
覆盖项: AuthConfig 
状态: Base 
模块: mod_auth 
这个 AuthUserFile 指令设定一个文本文件名称,这个文件含有认证用的用户名、密码列表。文件路径 是存放用户文件的路径。 如果不是绝对路径 (也就是说, 如果不是以斜杠开始的 ), 则是相对 ServerRoot设置的服务器基础目录的相对路径。
用户文件的每一行包含一个用户名,后跟一个冒号,再跟一个加密过的密码。 如果文件中含有相同用户名, mod_auth 模块会用排列在最前面的那行定义来验证该用户的密码。
在二进制文件安装包中附带的,或可以在 src/support 中找到的命令 htpasswd 是用来维护密码文件的。参阅帮助文件可以获得更详细的说明。简单说:
以一个初始帐户 username 创建一个密码文件 Filename 。它会提示输入密码:
htpasswd -c Filename username 
增加或修改密码文件 Filename 中的帐号 username2 :
htpasswd Filename username2 
注意搜索很大的文本文件是 非常 缺乏效率的;应该使用 AuthDBMUserFile来替代它


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4929/showart_61954.html4.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值