Apache基于规则的访问控制

Apache提供了许多工具,允许管理员控制对服务器提供的特定资源的访问。 您可能已经熟悉基于身份验证的访问控制,这需要访问者在访问资源之前对服务器进行身份验证。
相比之下,Apache的基于规则的访问控制允许您指定哪些访问者在非常细微的级别访问哪些资源。 您可以创建规则,阻止来自Web服务器的指定IP范围,或者访问特定资源,甚至访问特定的虚拟主机。
基于规则的访问控制的最基本的使用是对通过网络连接可访问的资源施加严格的限制。 在默认Apache配置中,Web服务器拒绝所有用户访问系统上的所有文件。 然后Apache允许管理员允许访问特定资源。
这些访问规则的附加用途包括阻止恶意流量的特定IP范围,并且在许多其他可能性中将对给定资源或资源组的访问限制为“内部用户”。

基于规则的访问控制的示例



下面是一个基本规则的例子:

  1. Order Deny,Allow
  2. Deny from all
  3. Allow from 192.168.2.101

Order Deny,Allow指令告诉Web服务器在Allow规则之前应该处理“Deny”规则。
Deny from all指令告诉Web服务器所有用户被拒绝访问给定资源。 此规则优先执行。
Allow from指令告诉Web服务器应该允许源自IP地址192.168.2.101的请求。 这是最后处理,并表示拒绝所有规则的例外。
简而言之,除192.168.2.101之外的所有主机都被拒绝访问此资源。

其他访问控制规则



您可以通过修改和扩展上面的示例为资源指定精细的访问控制规则。 以下注释和建议提供了对这些访问控制系统可能实现的一些更高级功能的深入了解。

控制指定范围IP的访问

如果要控制指定范围IP地址的访问,而不是单个地址,Apache允许使用以下语法:

  1. Order Deny,Allow
  2. Deny from all
  3. Allow from 192.168
  4. Allow from 10

上述语句允许以192.168和10开头的所有地址。这些IP范围通常保留给本地网络,不是公共可路由地址。 如果使用这些访问控制规则,将只允许来自本地的流量。
这是访问规则的另一个示例:

  1. Order Allow,Deny
  2. Allow from all
  3. Deny from 185.201.1

此规则允许任何人访问给定资源,然后拒绝以185.201.1开头的所有IP地址的访问。 此语句将覆盖源自185.201.1.0到185.201.1.255的IP地址范围的所有流量。
当创建访问控制规则时,特别是那些使用Allow from all指令的规则,应该非常确定这些指令位于正确的上下文中。

高级访问控制

尽管基于IP地址设置访问控制规则是控制访问的最简单的方法,但Apache提供了许多其他方法。
首先,Apache允许管理员根据请求者的主机名来允许或拒绝访问。 这会强制Apache对执行请求的主机名执行反向DNS(rDNS)查找,然后根据此信息允许或拒绝访问。 考虑这个例子:

  1. Order Deny,Allow
  2. Deny from all
  3. Allow from hostname.example.com

Apache仅允许来自具有hostname.example.com的有效rDNS的计算机的请求访问此配置中的资源。
其次,可以在HTTP会话中围绕环境变量构建访问规则。 这允许您根据变量(例如浏览器(用户代理)和引荐来源)允许和拒绝对资源的访问。 让我们来看下面的例子:
SetEnvIf Referer searchenginez.com search_traffic
Order Deny,Allow
Deny from all
Allow from env=search_traffic
此访问控制规则与Apache的mod_setenvif结合使用。 首先,如果请求referrer匹配searchenginez.com,则设置环境变量search_traffic。 接下来,拒绝所有主机访问资源。 最后,设置了允许访问资源环境变量为search_traffic的请求。 有关设置和使用环境变量的更多信息,请参考mod_setenvif的官方Apache文档。

标签:Apache 发布于:2019-11-21 15:56:38