同样可以用特有命令Deny、Allow指定某些用户可以访问哪些用户不能访问提供定灵活性当Deny、Allow起用时用命令Order决定Deny和Allow合用顺序如下所示:
1、 拒绝某类地址用户对服务器访问权(Deny)
如:Deny from all
Deny from test.cnn.com
Deny from 204.168.190.13
Deny from 10.10.10.0/255.255.0.0
2、 允许某类地址用户对服务器访问权(Allow)
如:Allow from all
Allow from test.cnn.com
Allow from 204.168.190.13
Allow from 10.10.10.0/255.255.0.0
Deny和Allow指令后可以输入多个变量
3、简单配置例子:
Order Allow, Deny
Allow from all
Deny fromwww.test.com
指想让所有人访问Apache服务器但不希望来自www.test.com任何访问
Order Deny, Allow
Deny from all
Allow from test.cnn.com
指不想让所有人访问但希望给test.cnn.com网站WebSite来访
概括讲用户认证就是验证用户身份真实性如用户帐号是否在数据库中及用户帐号所对应密码是否正确;用户授权表示检验有效用户是否被许可访问特定资源在Apache中几乎所有安全模块实际上兼顾这两个方面从安全角度来看用户认证和授权相当于选择性访问控制
建立用户认证授权需要 3个步骤:
1、建立用户库
用户名和口令列表需要存在于文件(mod_auth模块)或数据库(mod_auth_dbm模块)中基于安全原因该文件不能存放在文挡根目录下如存放在/usr /local/etc/httpd下users文件其格式和UNIX口令文件格式相似但口令是以加密形式存放应用htpasswd可以用来添加或更改:
htpasswd –c /usr/local/etc/httpd/users martin
-c表明添加新用户martin为新添加用户名在执行过程中两次输入口令回答用户名和口令添加到users文件中产生用户文件有如下形式:
martin:WrU808BHQai36
jane:iABCQFQs40E8M
art:FadHN3W753sSU
第域是用户名第 2个域是用户密码
2、配置服务器保护域
为了使Apache服务器能够利用用户文件中用户名和口令信息需要设置保护域(Realm)个域实际上是站点部分(如个目录、文档等)或整个站点只供部分用户访问在相关目录下.htaccess文件或httpd.conf ( acces.conf ) 中<Directory>段中由AuthName来指定被保护层域在.htaccess文件中对用户文件有效用户授权访问及指定域保护有如下指定:
AuthName “restricted stuff”
Authtype Basic
AuthUserFile /usr/local/etc/httpd/users
Require valid-user
其中AuthName指出了保护域域名(Realm Name)valid-user参数意味着user文件中所有用户都是可用旦用户输入了个有效用户/口令时同个域内其他资源都可以利用同样用户/口令来进行访问同样可以使两个区别区域共用同样用户/口令
3、告诉服务器哪些用户拥有资源访问权限
如果想将资源访问权限授予组客户可以将他们名字都列在Require的后最好办法是利用组(group)文件组操作和标准UNIX组概念类似任个用户可以属于个和数个组这样就可以在配置文件中利用Require对组赋予某些权限如:
Require group staff
Require group staff admin
Require user adminuser
指定了个组、几个组或个用户访问权限
需要指出是当需要建立大批用户帐号时那么Apache服务器利用用户文件数据库将会极大地降低效率这种情况下最好采用数据库格式帐号文件譬如 DBM数据库格式文件还可以根据需要利用db格式(mod_auth_db)数据文件或者直接利用数据库如:mSQL(mod_auth_msql)或DBI兼容数据库(mod_auth_dbi)
DBM 文件是种简单而标准用于加快读取效率保存信息思路方法文件中存放每个记录由两个部分组成部分:键和值由于DBM格式使得和键相关信息非常有效在Web用户认证中这里键将是用户名而和该键相关值将是该用户经过加密口令信息从DBM文件中查找用户名和口令要比从个纯文本文件中查找有效得多对于有很多用户站点这种思路方法将大大提高用户认证效率
1、在Apache服务器中增加DBM模块
在默认条件下Apache不使用DBM文件来完成用户认证因此编译时定要加入可选DBM认证模块重新配置Apache服务器文件去掉其中注释行
#Module dbm_auth_module mod_auth_dbm.o前“#”并重新编译但是在编译的前需要指出Apache DBM位置
2、创建DBM用户文件(假设文件名为users)
Apache提供了个“dbmmanage”用于创建和管理DBM文件其中:
Dbmmanage /usr/local/etc/httpd/usersdbm 创建DBM文件
Dbmmanage /usr/local/etc/httpd/users adduser martin hamster 新增用户
Dbmmanage /usr/local/etc/httpd/usersdbm delete martin 删除用户
Dbmmanage /usr/local/etc/httpd/usersdbm view 显示DBM中所有用户
有了DBM数据库文件还要替换目录访问控制即将Apache配置文件(access.conf)中AuthUserFile部分替换成:AuthUserFile /usr/local/etc/usersdbm 告诉Apache现在用户文件是DBM格式
最新评论