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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
访问控制,不限时长
简介:

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

原文请见: http://netsecurity.51cto.com/art/201102/245666.htm

 

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 使用访问控制后访问目录情况















本文转自samsunglinuxl51CTO博客,原文链接: http://blog.51cto.com/patterson/501580,如需转载请自行联系原作者


相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
1月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
143 7
|
2月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
88 3
|
3月前
|
安全 网络协议 应用服务中间件
AJP Connector:深入解析及在Apache HTTP Server中的应用
【9月更文挑战第6天】在Java Web应用开发中,Tomcat作为广泛使用的Servlet容器,经常与Apache HTTP Server结合使用,以提供高效、稳定的Web服务。而AJP Connector(Apache JServ Protocol Connector)作为连接Tomcat和Apache HTTP Server的重要桥梁,扮演着至关重要的角色
90 2
|
1月前
|
消息中间件 存储 负载均衡
Apache Kafka核心概念解析:生产者、消费者与Broker
【10月更文挑战第24天】在数字化转型的大潮中,数据的实时处理能力成为了企业竞争力的重要组成部分。Apache Kafka 作为一款高性能的消息队列系统,在这一领域占据了重要地位。通过使用 Kafka,企业可以构建出高效的数据管道,实现数据的快速传输和处理。今天,我将从个人的角度出发,深入解析 Kafka 的三大核心组件——生产者、消费者与 Broker,希望能够帮助大家建立起对 Kafka 内部机制的基本理解。
77 2
|
4月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
4月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
3月前
|
分布式计算 Java Apache
Apache Spark Streaming技术深度解析
【9月更文挑战第4天】Apache Spark Streaming是Apache Spark生态系统中用于处理实时数据流的一个重要组件。它将输入数据分成小批次(micro-batch),然后利用Spark的批处理引擎进行处理,从而结合了批处理和流处理的优点。这种处理方式使得Spark Streaming既能够保持高吞吐量,又能够处理实时数据流。
76 0
|
4月前
|
负载均衡 应用服务中间件 Apache
Nginx与Apache的终极对决:揭秘Web服务器界的“速度与激情”!你不可不知的性能霸主如何颠覆传统,震撼互联网的根基!
【8月更文挑战第13天】互联网技术发展中,Web服务器至关重要,Nginx与Apache是最广泛使用的两种。Apache历史悠久,但Nginx以轻量级和高性能脱颖而出。Nginx采用事件驱动架构,高效处理大量并发连接,而Apache使用进程驱动,高并发下资源消耗大。以餐厅为例,Nginx像大堂经理同时处理多个顾客需求,远比Apache为每位顾客分配服务员更高效。性能测试显示Nginx处理能力远超Apache。此外,Nginx配置简洁灵活,尤其在负载均衡方面表现突出。尽管Apache适合动态内容处理,但在快速变化的互联网环境中,Nginx因其独特优势成为许多开发者和企业的首选。
69 7
|
4月前
|
数据库连接 Apache Java
【独家揭秘】图书管理系统的奇幻之旅:一文看透Apache Wicket如何从想法萌芽到服务器上翩翩起舞?
【8月更文挑战第31天】本文通过实战案例,详细介绍从概念到部署的Apache Wicket应用开发全流程。以在线图书管理系统为例,涵盖应用概念定义、项目创建、架构设计、首页编写、数据库交互及应用部署等关键步骤。通过Maven或Gradle引入Wicket依赖,设计包结构,并使用JPA或Hibernate处理数据持久化。最终,将应用配置并部署到Tomcat或Jetty服务器,帮助你全面掌握Wicket开发技巧。
53 0
|
4月前
|
监控 Linux 测试技术

推荐镜像

更多