`
wangshaofei
  • 浏览: 282603 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Apache Web服务器访问控制机制全解析

阅读更多

Linux下的Aapche服务器提供了强大的访问控制功能,用户可以选择采用配置命令或者.htaccess文件的方式对其进行设置,本文将为大家介绍这两种方法。

一、使用访问控制常用配置指令进行访问控制

1.配置指令

Apache实现访问控制的配置指令包括如下三种:

(1)order指令:用于指定执行允许访问控制规则或者拒绝访问控制规则的顺序。order只能设置为Order allow,deny或Order deny,allow,分别用来表明用户先设置允许的访问地址还是先设置禁止访问的地址。Order选项用于定义缺省的访问权限与Allow和Deny语句的处理顺序。Allow和Deny语句可以针对客户机的域名或IP地址进行设置,以决定哪些客户机能够访问服务器。Order语句设置的两种值的具体含义如下:

◆allow, deny:缺省禁止所有客户机的访问,且Allow语句在Deny语句之前被匹配。如果某条件既匹配Deny语句又匹配Allow语句,则Deny语句会起作用(因为Deny语句覆盖了Allow语句)。

◆deny, allow:缺省允许所有客户机的访问,且Deny语句在Allow语句之前被匹配。如果某条件既匹配Deny语句又匹配Allow语句,则Allow语句会起作用(因为Allow语句覆盖了Deny语句)。

(2)allow指令:指明允许访问的地址或地址序列。如allow from all指令表明允许所有IP来的访问请求。

(3)deny指令:指明禁止访问的地址或地址序列。如deny from all指令表明禁止所有IP来的访问请求。

2.应用实例

下面举几个简单的例子对上述order、allow和deny命令的使用进行示范。

(1)在下面的例子中,admin.org域中所有主机都允许访问网站,而其他非该域中的任何主机访问都被拒绝,因为Deny在前,Allow在后,Allow语句覆盖了Deny语句:

  1. Order Deny,Allow   
  2. Deny from all  
  3. Allow from admin.org  

(2)下面例子中,admin.org域中所有主机,除了db.admin.org子域包含的主机被拒绝访问以外,都允许访问。而所有不在admin.org域中的主机都不允许访问,因为缺省状态是拒绝对服务器的访问(Allow在前,Deny在后,Deny语句覆盖了Allow语句):

  1. Order Allow,Deny  
  2. Allow from admin.org  
  3. Deny from db.admin.org  

二、使用.htaccess文件进行访问控制

任何出现在配置文件httpd.conf中的指令都可能出现在.htaccess文件中。该文件在httpd.conf文件的AccessFileName指令中指定,用于进行针对单一目录的配置(注意:该文件也只能设置对目录的访问控制)。作为系统管理员,可以指定该文件的名字和可以通过该文件内容覆盖的服务器配置。当站点有多组内容提供者并希望控制这些用户对他们的空间的操作时该指令非常有用。

值得特别注意的是:除了可以使用.htaccess文件针对单一目录进行访问控制配置外,该文件还可以在不重新启动Apache服务器的前提下使配置生效,因而使用起来非常方便。

使用该文件进行访问控制,需要经过如下两个必要的步骤:

(1)在主配置文件httpd.conf中启用并控制对.htaccess文件的使用。

(2)在需要覆盖主配置文件的目录下(也就是需要单独设定访问控制权限的目录)生成.htaccess文件,并对其进行编辑,设置访问控制权限。

1. 启用并控制对.htaccess文件的使用

启用并控制对.htaccess文件的使用,首先需要使用AccessFileName参数在主配置文件中配置如下配置语句方可:

  1. AccessFileName .htaccess  
  2. < Files  ~ “^\.htaccess” >  
  3.     Order allow,deny  
  4.     Deny from all  
  5. </ Files >  

2. 在.htaccess文件中使用指令进行控制

要限制.htaccess文件能够覆盖的内容,须要使用AllowOverride指令。该指令可以进行全局设置或者单个目录设置。要配置默认可以使用的选项,须要使用Options指令。例如,在httpd.conf文件中,可以采用上述指令建立的对/var/www/icons目录的访问控制权限的清单,如下所示:

  1. < Directory  "/var/www/icons" >  
  2.     Options Indexes MultiViews  
  3.     AllowOverride None  
  4.     Order allow,deny  
  5.     Allow from all  
  6. </ Directory >  

以下为各种指令的使用介绍:

(1)AllowOverrides指令

AllowOverrides指令指定.htaccess文件可以覆盖的选项。可以对每个目录进行设置。例如,可以对主要文档root和UserDir目录的覆盖有不同的标准。该功能对于用户目录特别有用,在这些目录中用户没有访问主服务器配置文件的权限。

AllowOverrides可以设置为All、None或者Option、FileInfo、AuthConfig、Indexes以及Limit.选项的组合。这些选项含义如下:

◆Options:文件可以为该目录添加没有在Options指令中列出的选项。

◆FileInfo:.htaccess文件包含修改文档类型信息的指令。

◆AuthConfig:.htaccess文件可能包含验证指令。

◆Limit:.htaccess文件可能包含allow、deny、order指令。

◆Indexes:控制目录列表方式。

◆None:禁止处理.htaccess文件。

◆All:表示读取以上所有指令内容。

Options指令

Options可以为None、All或者任何Indexes、Includes、FollowSymLinks、ExecCGI或者MultiViews的组合。MultiViews不包含在All中,必须显式指定。这些选项解释如下:

◆ None:该目录没有启用任何可用的选项。

◆All:该目录启用了所有选项,除了MultiViews。

◆Indexes:当Index.html文件或者另一个DirectoryIndex文件不存在时,目录中的文件列表将作为HTML页产生,显示给用户。

◆Includes:该目录允许服务器侧包含(SSI)。如果允许包含但是不允许在包含中有exec选项,则可以写为IncludesNoExec。基于安全的原因,对于没有完全控制权限的目录,如UserDir目录,该选项是一个很好的主意。

◆FollowSymLinks:允许访问符号链接到文档目录的目录。这种方法不好,不要将整个服务器全部设置为该选项。对某个目录可以这样设置,但是在仅当有足够的理由时才这样设置。该选项是一个潜在的安全隐患,因为允许Web用户跳出文档目录以外,并且可能潜在地允许用户访问文件系统的分区,而这些地方是不希望其他人访问的。

◆ExecCGI:即使该目录不是ScriptAlias化的目录,也在其中允许CGI程序。

◆MultiViews:该选项是mod_negotiation模块的一部分。当客户请求的文档没有找到时,服务器试图计算最适合客户请求的文档。

3. 使用.htaccess文件实例

下面以一个简单的例子来示范如何使用.htaccess文件:

(1)在Apache服务器的文档根目录下生成一个测试目录,并创建测试文件,使用如下命令即可:

  1. #cd /var/www/html  
  2. #mkdir rhel5  
  3. #cd rhel5  
  4. #touch rhel5.a  
  5. #touch rhel5.b  

(2)修改Apache服务器的主配置文件如下,添加如下语句:

  1. < Directory  “/var/www/html/rhel5” >  
  2.     AllowOverride Options  
  3. </ Directory >  

(3)在生成的测试目录/var/www/html/rhel5下生成.htaccess文件,并添加如下语句:

  1. Options –Indexes 

(4)重新启动Apache服务器即可,可以看到在未配置.htaccess文件前用户可以使用客户端浏览器浏览文件,而配置文件后用户无法浏览,如图1和2所示。另外,值得注意的是:这里的重启Apache服务器是因为步骤(2)中对主配置文件进行了修改,而不是因为修改了.htaccess文件,因为前面提到过,.htaccess文件的配置修改并不需要重新启动Apache服务器。

图1 未使用访问控制前访问目录情况示意

图1 未使用访问控制前访问目录情况示意

图2 使用访问控制后访问目录情况

图2 使用访问控制后访问目录情况

原文链接:http://netsecurity.51cto.com/art/201102/245666.htm

分享到:
评论

相关推荐

    Apache web 服务器 部署

    "Apache web 服务器部署" 在本文档中,我们将详细介绍 Apache web 服务器的部署过程,包括安装 Apache 服务器、PHP 服务器、MySQL 数据库和 Tomcat 服务器,并将它们整合起来。 一、安装 Apache 服务器 在安装 ...

    Apache Web服务器配置与使用工作笔记

    ### Apache Web服务器配置与使用工作笔记 #### 一、Apache Web服务器简介 Apache HTTP Server(简称Apache)是一款开放源码的Web服务运行平台,在互联网上有着广泛的使用。它是由Apache软件基金会的一个开源项目...

    Apache服务器支持JSP解析

    Apache HTTP Server是世界上最流行的Web服务器软件之一,用于发布静态网页和动态内容。首先,你需要安装Apache服务器,通常选择适合操作系统的默认安装选项。然后,通过命令行或者控制面板检查Apache的版本,确保它...

    网络技术实验APACHE架设WEB服务器.pdf

    接下来,将从几个方面详细解析Apache Web服务器的架设过程及相关知识点。 1. Apache Web服务器简介 Apache Web服务器是由Apache软件基金会开发的一个自由开放源代码的Web服务器软件,它能够运行在几乎所有广泛使用...

    Apache服务器手册_Web服务器.pdf

    Apache服务器手册详细介绍了如何安装、配置、运行和管理Apache Web服务器。Apache是世界上最流行的开源Web服务器软件之一,以其高性能、高可靠性和可定制性而闻名。在手册中,作者狄登峰系统地讲解了Apache的各个...

    简单搭建WEB服务器 简单搭建WEB服务器 简单搭建WEB服务器

    1. 安装Web服务器软件:根据你的操作系统和需求选择合适的Web服务器,如在Linux系统中安装Apache,可以使用命令行工具如`apt-get`或`yum`进行安装。 2. 配置Web服务器:配置文件通常位于服务器安装目录下,如Apache...

    实战Nginx:取代Apache的高性能Web服务器+张宴.扫描版

    《实战Nginx:取代Apache的高性能Web服务器》是一本深度探讨Nginx技术的书籍,作者张宴通过丰富的实践经验和深入的技术解析,为读者揭示了Nginx作为高性能Web服务器的优势及其应用策略。这本书主要涵盖了以下几个...

    实战Nginx取代Apache的高性能Web服务器.rar

    《实战Nginx取代Apache的高性能Web服务器》一书,主要探讨了如何利用Nginx这一现代、高性能的Web服务器来替代传统的Apache服务器,以提升网站的运行效率和响应速度。Nginx以其异步非阻塞的I/O模型、模块化设计以及...

    apache服务器

    (1) Apache HTTP Server(简称Apache)是一个开放源码的web服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Apache HTTP服务器是一个模块化的服务器...

    apache web服务器

    Apache Web服务器是世界上最广泛使用的开源Web服务器之一,以其强大的功能、稳定性和高度的可扩展性而闻名。这个压缩包文件可能包含了一系列与配置Apache服务器相关的文件和文档,特别是针对JSP(JavaServer Pages)...

    Apache+Tomcat服务器集群配置详细步骤

    ### Apache+Tomcat服务器集群配置详细步骤 #### 一、引言 在现代Web开发中,随着业务规模的不断扩大和用户需求的日益增长,单一服务器往往难以满足高性能、高可靠性的要求。为了应对这一挑战,通常采用Apache+...

    实验_Linux下的web服务器.doc

    - 使用命令检查系统是否已安装Web服务器软件包,如`httpd`或`apache`。 - 配置文件通常位于`/etc/httpd/conf/httpd.conf`,在此处可修改服务器的基本设置。 - `Listen 80`定义了Web服务器监听的默认端口。 - `...

    Linux下的Apache服务器

    随着NCSA Web服务器的主要开发者离开,使用该服务器的用户开始分享他们的补丁程序,这促使Apache Group成立,并在此基础上开发出了Apache Web服务器。Apache服务器自发布以来,迅速成为全球最受欢迎的Web服务器之一...

    [实战Nginx_取代Apache的高性能Web服务器].张宴.扫描版-new2

    ### 实战Nginx:取代Apache的高性能Web服务器 #### Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发。自2004年公开发布以来,...

    基于Linux系统下Apache软件的Web服务器设置.pdf

    总结,配置Apache在Linux下的Web服务器涉及访问控制策略、用户认证机制以及虚拟主机的设置。这些配置对于管理和维护一个安全且多站点的Web服务环境至关重要。正确理解和应用这些知识点,能帮助IT专业人士构建高效、...

    Web服务器的组建与.ppt

    本章将详细介绍如何组建和配置两种常见的Web服务器:IIS(Internet Information Services)和Apache。 **初识Web服务器** Web服务器,也称为WWW服务器,是用于提供网页信息和服务的基础平台。它的工作流程主要包括...

Global site tag (gtag.js) - Google Analytics