一 访问控制
1.访问控制的配置指令
Apache 使用下面的3 个指令配置访问控制:
Ø Order:用于指定执行允许访问规则和执行拒绝访问规则的先后顺序。
Ø Deny:定义拒绝访问列表。
Ø Allow:定义允许访问列表。
(1)Order,Order 指令有两种形式:
Ø Order Allow,Deny:在执行拒绝访问规则之前先执行允许访问规则,默认情况下将
会拒绝所有没有明确被允许的客户。
Ø Order Deny,Allow:在执行允许访问规则之前先执行拒绝访问规则,默认情况下将
会允许所有没有明确被拒绝的客户。
注意 :在书写Allow,Deny和Deny,Allow时,中间不能添加空格字符。
Deny 和Allow。Deny和Allow指令的后面需要跟访问列表,访问列表可以使用
如下的几种形式:
Ø All:表示所有客户。
Ø 域名:表示域内的所有客户,如jamond.net。
Ø IP 地址:可以指定完整的IP 地址或部分IP 地址。
Ø 网络/子网掩码:如192.168.1.0/255.255.255.255.0。
Ø CIDR规范:如192.168.1.0/24。
2.访问控制配置举例
下面将以查看服务器配置信息为例讲解访问控制的使用。
配置访问控制
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//将下面配置行前的“#”去掉
//由mod_info 模块生成服务器配置信息
SetHandler server-info
//先执行deny 规则再执行allow 规则
Order deny,allow
//拒绝所有的客户,只允许来自192.168.1.77 的访问
Deny from all
Allow from 192.168.1.77
#
//重新启动httpd
# service httpd restart
虽然上例中的访问控制是在Location 容器中设置的,但这种方法也
适用于其他容器,如Directory容器和Files 容器。
二 认证
(1)两种认证类型。在RFC 2617 中定义了两种认证方式,分别为:
Ø 基本(Basic)认证
Ø 摘要(Digest)认证
摘要认证比基本认证更加安全,但遗憾的是目前并非所有的浏览器都支持摘要认证,
所以大多数情况下用户只使用基本认证。本节主要介绍基本认证。
(2)认证的配置指令。所有的认证配置指令既可以出现在主配置文件的Directory 容
器中,也可以出现在./htaccess文件中。表7-4 列出了可用的认证配置指令。
Apache 的认证配置指令如下:
AuthName AuthName 领域名称 定义受保护领域的名称
AuthType AuthType Basic或Digest 定义使用的认证方式
AuthGroupFile AuthGroupFile 文件名 指定认证口令文件的位置
AuthUserFile AuthUserFile 文件名 指定认证组文件的位置
三 授权
当使用认证指令配置了认证之后,还需要为指定的用户或组进行授权。为用户或组进
行授权的指令是Require。Require指令的三种使用格式如表7-5 中的说明。
Apache的授权配置指令的使用格式
指令语法格式 说 明
Require user 用户名 [用户名] …… 授权给指定的一个或多个用户
Require group 组名 [组名] …… 授权给指定的一个或多个组
Require valid-user 授权给认证口令文件中的所有用户
四 管理认证口令文件和认证组文件
本节讲述基于文本文件的认证口令文件和认证组文件,关于基于数据库的认证口令文
件和认证组文件的相关内容请参考Apache 手册。
(1)管理认证口令文件
1)创建新的认证口令文件
可以使用如下命令,在添加一个认证用户的同时创建认证口令文件:
# htpasswd –c 认证口令文件名 用户名
2)修改认证口令文件
可以使用如下命令,向现存的口令文件中添加用户或修改已存在的用户的口令:
# htpasswd 认证口令文件名 用户名
3)认证口令文件的格式
与系统中的/etc/shadow 文件类似,认证口令文件中每一行包含一个用户的用户名和加
密的口令:
用户名:加密的口令
注意 《1》基于安全因素的考虑,认证口令文件和下面讲述的认证组文件不应该
与Web 文档存在于相同的目录下,建议存放在/var/www/目录或其子目录下,
也可以存放在配置目录/etc/httpd/目录或其子目录下。
《2》htpasswd 没有提供删除用户的选项,要想删除用户,可以直接使用文
本编辑器对认证口令文件进行编辑,删除指定用户的行即可。
(2)管理认证组文件。Apache 没有提供创建认证组文件的命令,它只是一个文本文
件,用户可以使用任何的文本编辑器创建并修改此文件。该文件中每一行的格式如下:
组名:用户名 用户名 ……
注意
在认证组文件中指定的用户名,必须先添加到认证口令文件中。
五 认证和授权配置实例
1.在主配置文件中配置认证和授权
下面举例说明具体的配置步骤。
操作步骤7.9 在主配置文件中配置认证和授权
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//添加如下的配置行
//不使用.htaccess 文件
AllowOverride None
//指定使用基本认证方式
AuthType Basic
//指定认证领域名称
AuthName "mypasswd"
//指定认证口令文件的存放位置
AuthUserFile /var/www/passwd/mypasswd
//授权给认证口令文件中的所有用户
require valid-user
#
//创建认证口令文件,并添加两个用户
# mkdir /var/www/passwd
# cd /var/www/passwd
# htpasswd -c mypasswd jiangtaodengni
New password:
Re-type new password:
Adding password for user osmond
# htpasswd mypasswd liangwu
New password:
Re-type new password:
Adding password for user jason
#
//将认证口令文件的属主改为apache
# chown apache.apache mypasswd
//重新启动httpd
# service httpd restart
//在客户端使用浏览器检测配置,
在.htaccess文件中配置认证和授权
下面举例说明具体的配置步骤。
下面是 在.htaccess文件中配置认证和授权
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//将/var/www/html/private 目录的访问权限设为
//允许在.htaccess 文件中使用认证和授权指令
AllowOverride AuthConfig
#
//重新启动httpd
# service httpd restart
//继续使用操作步骤7.8 中生成的认证口令文件
//接下来,在/var/www/html/private 目录下生成.htaccess 文件
# vi .htaccess
//添加如下内容
AuthType Basic
AuthName "mypasswd"
AuthUserFile /var/www/passwd/mypasswd
//授权给用户jiangtao 和liangwu
require user jiangtao liangwu
#
//在客户端使用浏览器检测配置,结果与图7-8 所示的一致
提示
通过以上例子可知使用两种方法都可以使指定的用户访问授权区,它们具有
相同的效果。具体使用哪种方法将由管理员做出权衡。
럃컊뿘훆ꆢ죏횤뫍쫚좨뗄ퟛ뫏펦폃
1.对访问控制和认证授权进行控制
在对一个容器(Directory或Files或Location)同时配置了访问控制和认证授权之后,
这两类指令是否都会起作用,将由一个指令进行控制,这个指令是Satisfy。Satisfy 指令
只有在对一个容器同时设置了访问控制和认证授权后才起作用。Satisfy 指令有两种可能的
取值:
Ø Satisfy all:访问控制和认证授权两类指令均起作用(默认值)。
第 Satisfy any:只要一类指令满足条件即可以访问。
下面举例说明Satisfy指令的使用。
2.配置指定的用户在指定的网段上访问资源
下面将以查看服务器运行状态信息为例说明Satisfy all的使用。
下面 配置指定的用户在指定的网段上访问资源
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//添加如下的配置行
SetHandler server-status
Order deny,allow
Deny from all
//允许192.168.1 网段内主机的访问
Allow from 192.168.1
//配置认证授权
AuthType Basic
AuthName "Admin"
AuthUserFile /var/www/passwd/mypasswd
AuthGroupFile /var/www/passwd/admingrp
require group admin
Satisfy all
#
//创建认证组文件并更改属主
# vi /var/www/passwd/admingrp
//添加下面的行
admin:jianggtao liangwu
# chown apache.apache /var/www/passwd/admingrp
#
//重新启动httpd
# service httpd restart
#
//在客户端使用浏览器检测配置,在192.168.1网段上的主机的访问结果如图7-9
所示
//而非192.168.1 网段的主机以及没有Admin 组身份的人都不能访问
3.允许网段内用户无条件访问而其他用户授权访问
只要将其中的Satisfy all改为Satisfy any就可以实现192.168.1网段内的用
户无需认证即可访问,而在外网上可以允许admin 组内的用户经过认证后访问。
阅读(1183) | 评论(0) | 转发(0) |