在一次面试的时候被问到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模块的指令用于 段以及.htaccess文件中来控制对服务器特定部分的访问。allow和deny指令指出允许那些客户以及不允许那些客户访问服务器。而
指令设置默认的访问状态并配置
和
指令怎样相互作用。
操作篇
首先,检查apache是否支持模块mod_authz_host ,如果不支持,重新编译安装以支持这个模块。
[root@localhost conf]# /usr/local/EDSV/apache/bin/apachectl -l | grep mod_authz_host.c mod_authz_host.c
|
然后设置apache的访问控制。下面以主配置文件里的为例:
比如要对默认网站进行访问控制。默认网站的DocumentRoot为/usr/local/EDSV/apache/htdocs
要允许所有人访问,只拒绝一个IP或者IP段访问:
Order allow,deny
Allow from all
deny from 10.112.5.137
要拒绝所有人访问,只允许一个IP或者段访问。
Order deny,allow
deny from all
allow from 10.112.5.195
设置网站的默认访问状态:
Order Allow,Deny
这样将会禁止所有对/www
目录的访问,因为默认状态将被设置为拒绝。
Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org
以上设置apache.org域中所有主机,除了foo.apache.org子域包含的主机被拒绝以外,其他都允许访问。而所有不在apache.org域中的主机都不允许访问,因为默认状态是拒绝对服务器的访问。
参考资料:
阅读(4158) | 评论(0) | 转发(0) |