分类: LINUX apache 访问设置配置

分类: LINUX

 

在一次面试的时候被问到apache访问控制的问题。由于以前对apache的访问控制都是通过iptalbes来实现的,没有实际在apache上操作过访问控制。所以只知道个大概: 在主配置文件里的directory段里通过allow、deny等指令来实现。虽然答的也算对,但毕竟没有操作过,心理没底。所以今天就将apache 的访问控制详细操作记录下。以便以后使用。
 
apache2.2是通过模块 mod_authz_host来实现访问控制的。在2.0版本中此模块叫做 mod_access 。
 
下面以apache2.2版本来做介绍:
 
原理篇
 
Apache模块 mod_authz_host
 
说明 提供基于主机名、IP地址、请求特征的访问控制
状态 基本(B)
模块名 authz_host_module
源文件 mod_authz_host.c (2.0版本中为mod_access.c)
兼容性 仅在 Apache 2.1 及以后的版本中可用
 
mod_authz_host模块的指令用于<Directory> <Files> <Location>段以及.htaccess文件中来控制对服务器特定部分的访问。allow和deny指令指出允许那些客户以及不允许那些客户访问服务器。而 Order指令设置默认的访问状态并配置 AllowDeny指令怎样相互作用。
 
操作篇
 
首先,检查apache是否支持模块mod_authz_host ,如果不支持,重新编译安装以支持这个模块。
 
[root@localhost conf]# /usr/local/EDSV/apache/bin/apachectl -l | grep mod_authz_host.c
  mod_authz_host.c
 
然后设置apache的访问控制。下面以主配置文件里的<Directory>为例:
 
比如要对默认网站进行访问控制。默认网站的DocumentRoot为/usr/local/EDSV/apache/htdocs
 
要允许所有人访问,只拒绝一个IP或者IP段访问:
 
<Directory "/usr/local/EDSV/apache/htdocs">
 
   Order allow,deny
   Allow from all
   deny from 10.112.5.137
 
</Directory>
 
 
要拒绝所有人访问,只允许一个IP或者段访问。
 
 
<Directory "/usr/local/EDSV/apache/htdocs">
 
    Order deny,allow
    deny from all
    allow from 10.112.5.195
 
</Directory>
 
 
设置网站的默认访问状态:
 
<Directory /www>
Order Allow,Deny
</Directory>

这样将会禁止所有对/www目录的访问,因为默认状态将被设置为拒绝。

 
 

Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org

以上设置apache.org域中所有主机,除了foo.apache.org子域包含的主机被拒绝以外,其他都允许访问。而所有不在apache.org域中的主机都不允许访问,因为默认状态是拒绝对服务器的访问。

 

 

 

 

参考资料:http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_authz_host.html

你可能感兴趣的:(apache)