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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
访问控制,不限时长
云解析 DNS,旗舰版 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:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
4月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
233 3
|
4月前
|
运维 负载均衡 安全
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
162 0
|
3月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
78 3
|
3月前
|
JSON JavaScript 前端开发
蓝桥杯web组赛题解析和杯赛技巧
本文作者是一位自学前端两年半的大一学生,在第十五届蓝桥杯Web组比赛中获得省一和国三。文章详细解析了比赛题纲,涵盖HTML、CSS、JavaScript、Echarts和Vue等技术要点,并分享了备赛技巧和比赛经验。作者强调了多写代码和解题思路的重要性,同时提供了省赛和国赛的具体流程及注意事项。希望对参赛者有所帮助。
156 3
|
3月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
133 4
|
3月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
112 2
|
4月前
|
前端开发 开发者 容器
构建响应式Web界面:Flexbox与Grid布局的深度解析
【10月更文挑战第11天】本文深入解析了CSS3中的Flexbox和Grid布局,探讨了它们的特点、应用场景及使用方法。Flexbox适用于一维布局,如导航栏;Grid布局则适用于二维布局,如复杂网格。通过示例代码和核心属性介绍,帮助开发者灵活构建响应式Web界面。
71 5
|
4月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
65 3
|
5月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
81 1
|
4月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
37 0

推荐镜像

更多