为了更好的控制对网站资源的访问,我可以为特定的网站目录添加访问授权。我们可以分别通过限制客户机的地址和用户访问权限两方面控制用户的访问。那么我们就分别讲解一下这两种控制方式,这两种控制方式都应用于httpd.conf配置文件中的目录区域<Directory 目录位置>......</Directory>范围内。
客户机地址限制
通过配置项order,Deny from,Allow from,根据客户机的主机名或IP地址来限制是否客户端访问。使用Order配置项时,可以设置为“allow,deny”或“deny,allow”,以决定主机应用“允许”,“拒绝”策略的先后顺序。
allow,deny:先允许后拒绝,默认拒绝所有未明确允许的客户机地址。
deny,allow:先拒绝后允许,默认允许所有未明确拒绝的客户机地址。
使用Allow和Deny配置项时,需要设置客户机地址以构成完整的限制策略,地址的形式可以是IP地址,网络地址,主机名,域名 ,使用名称“all”时表示任意地址。
如下设置网站的根目录为所有人可以访问。
[root@localhost /]#vim /usr/local/httpd/conf/httpd.conf
.....//省略部分内容
<Directory "/usr/local/httpd/htdocs">
......//省略部分内容
Order allow,deny //先允许后拒绝
Allow from all //允许所有地址
</Directory>
.....//省略部分内容
我们也可以拒绝某一个IP地址或者是某一个网段,设置如下:
[root@localhost /]#vim /usr/local/httpd/conf/httpd.conf
......//省略部分内容
<Directory ''/usr/local/httpd/htdocs">
......//省略部分内容
Order deny,allow //先拒绝后允许
Deny from 192.168.1.1 192.168.3.0/24 //拒绝192.168.1.1和192.168.3.0网段
</Directory>
......//省略部分内容
用户授权限制
httpd服务器支持使用摘要认证和基本认证两种方式。使用摘要认证需要在编译httpd之前添加“--enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证;而基本认证是httpd服务的基本功能,不需要预先配置特别的选项,所以在此主要讲解基本认证方式。
基于用户的访问控制包含认证和授权两个过程,
认证:指识别用户的身份的过程。
授权:允许特定用户访问特定目录区域的过程。
1、创建用户认证数据文件
httpd的基本认证通过校验用户名,密码组合来判断是否允许用户访问。使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账户。
使用htpasswd工具时,必须制定用户数据文件的地址,添加“-c”选项表示新建此文件。
如下创建一个名为webadmin的用户
[root@localhost /]#/usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin
New password: //提示输入密码
Re-type new password: //提示再次输入密码
Adding password for user webadmin
若省略“-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有的用户的密码。
注:使用htpasswd命令创建的用户文件和用户不是系统用户,而是专门供httpd服务客户端使用的。
2、添加用户授权配置
有了授权用户账户以后,还需要修改httpd.conf配置文件,在特定的目录区域中添加授权配置,以启用基本认证并设置允许那些用户访问。
列如:给网站的根目录设置只允许.awspwd文件中的用户访问,其余用户不能访问。
[root@localhost /]#vim /usr/local/httpd/conf/httpd.conf
......//省略部分内容
<Directory “/usr/local/httpd/htdocs”>
......//省略部分内容
AuthName "AWStats Directory"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
require valid-user
</Directory>
......//省略部分内容
在上述配置内容中,相关配置项的含义如下:
AuthName:定义受保护的领域名称。
AuthType:设置认证的类型,Basic表示基本认证。
AuthUserFile:设置用于保存用户账户,密码的认证文件路径。
require:要求只有认证文件中的合法用户才能访问,valid-user表示所有合法用户,若授权给单个用户,可改为指定的用户名(如:webamdin)
3、验证用户访问授权
再次访问web站点时则提示需要输入用户名和密码,只有输入正确的用户名和密码才可以访问。