16.5.1 访问控制
设置访问控制是提高Apache服务器安全级别最有效的手段之一,但在介绍Apache的访问控制指令前,先要介绍一下Diretory段。Diretory段用于设置与目录相关的参数和指令,包括访问控制和认证,其格式如下所示。
<Diretory 目录的路径>
目录相关的配置参数和指令
</Diretory>
每个Diretory段以<Diretory>开始,以</Diretory>结束,段作用于<Diretory>中指定的目录及其里面的所有文件和子目录。在段中可以设置与目录相关的参数和指令,包括访问控制和认证。Apache中的访问控制指令有以下3种。
1.Allow指令
Allow指令用于设置哪些客户端可以访问Apache,命令格式如下所示。
Allow from [All/全域名/部分域名/IP地址/网络地址/CIDR地址]…
q All:表示所有客户端。
q 全域名:表示域名对应的客户端,如www.domain.com。
q 部分域名:表示域内的所有客户端,如domain.com。
q IP地址:如172.20.17.1。
q 网络地址:如172.20.17.0/255.255.255.0。
q CIDR地址:如172.20.17.0/24。
%注意:Allow指令中可以指定多个地址,不同地址间通过空格进行分隔。
2.Deny指令
Deny指令用于设置拒绝哪些客户端访问Apache,格式跟Allow指令一样。
3.Order指令
Order指令用于指定执行访问规则的先后顺序,有两种形式:
q Order Allow,Deny:先执行允许访问规则,再执行拒绝访问规则。
q Order Deny,Allow:先执行拒绝访问规则,再执行允许访问规则。
%注意:编写Order指令时,Allow和Deny之间不能有空格存在。
现在,假设网站中有一个名为security_info的目录,因为是一个保存有机密信息的目录,所以网站管理员希望该目录只能由管理员自己的机器172.20.17.55来查看,其他用户都不能访问。可以通过以下步骤实现。
(1)打开httpd.conf配置文件并添加以下内容:
#使用Diretory段设置/usr/local/apache2/htdocs/secure_info目录的属性
<Directory "/usr/local/apache2/htdocs/secure_info">
Options Indexes FollowSymLinks
AllowOverride None
#使用Order参数设置先执行拒绝规则,再执行允许规则
Order deny,allow
#使用Deny参数设置拒绝所有客户端访问
Deny from all
#使用Allow参数设置允许172.20.17.55客户端访问
Allow from 172.20.17.55
</Directory>
(2)保存后重启Apache服务。
在IP地址为172.20.17.55的机器上直接打开浏览器访问http://demoserver/security_info/进行测试,结果如图16.28所示。在其他机器上访问的结果如图16.29所示。
图16.28 172.20.17.55客户端可以正常访问
图16.29 其他客户端访问被拒绝
可以看出,访问控制的目的已经达到。