On this page
Apache 模块 mod_authz_host
Description: | 基于主机(名称或 IP 地址)的组授权 |
---|---|
Status: | Base |
Module Identifier: | authz_host_module |
Source File: | mod_authz_host.c |
Compatibility: | forward-dns 提供程序已在 2.4.19 中添加 |
Summary
mod_authz_host实现的授权提供程序是使用Require指令注册的。可以在<Directory>,<Files>或<Location>节以及.htaccess文件中引用该指令,以控制对服务器特定部分的访问。可以根据 Client 端主机名或 IP 地址来控制访问。
通常,访问限制指令适用于所有访问方法(GET
,PUT
,POST
等)。在大多数情况下,这是所需的行为。但是,可以通过将指令括在<Limit>节中来限制某些方法,而使其他方法不受限制。
要求指令
在授权阶段使用 Apache 的Require指令来确保允许或拒绝用户访问资源。 mod_authz_host 使用ip
,host
,forward-dns
和local
扩展授权类型。也可以使用其他授权类型,但可能需要加载其他授权模块。
这些授权提供者影响哪些主机可以访问服务器的区域。可以通过主机名,IP 地址或 IP 地址范围控制访问。
从 v2.4.8 开始,主机 require 指令支持expressions。
Require ip
ip
提供程序允许根据远程 Client 端的 IP 地址来控制对服务器的访问。指定Require ip ip-address
时,如果 IP 地址匹配,则允许访问请求。
完整的 IP 地址:
Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205
主机允许访问的 IP 地址
部分 IP 地址:
Require ip 10.1
Require ip 10 172.20 192.168.2
IP 地址的前 1 到 3 个字节,用于子网限制。
网络/网络掩码对:
Require ip 10.1.0.0/255.255.0.0
网络 a.b.c.d 和网络掩码 w.x.y.z。有关更细粒度的子网限制。
网络/ nnn CIDR 规范:
Require ip 10.1.0.0/16
与前面的情况类似,除了网络掩码由 nnn 个高 1 位组成。
请注意,以上最后三个示例完全匹配同一组主机。
可以如下所示指定 IPv6 地址和 IPv6 子网:
Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48
注意:由于 IP 地址是在启动时解析的,因此在请求时不会评估表达式。
Require host
host
提供程序允许根据远程 Client 端的主机名来控制对服务器的访问。指定Require host host-name
时,如果主机名匹配,则允许访问该请求。
一个(部分)域名
Require host example.org
Require host .net example.edu
名称匹配或以该字符串结尾的主机被允许访问。仅匹配完整的组件,因此上面的示例将匹配foo.example.org
但不匹配fooexample.org
。无论HostnameLookups指令的设置如何,此配置都将导致 Apache 对 Client 端 IP 地址执行双向反向 DNS 查找。它将对 IP 地址进行反向 DNS 查找,以找到关联的主机名,然后对主机名进行正向查找,以确保其与原始 IP 地址匹配。仅当正向和反向 DNS 一致且主机名匹配时,才允许访问。
Require forward-dns
forward-dns
提供程序允许基于简单主机名来控制对服务器的访问。指定Require forward-dns host-name
时,允许访问与host-name
对应的所有 IP 地址。
与host
提供程序相反,此提供程序不依赖于反向 DNS 查找:它只是查询 DNS 以获取主机名,并允许 Client 端的 IP 匹配。因此,它仅适用于主机名,不适用于域名。但是,由于不使用反向 DNS,因此它将与使用动态 DNS 服务的 Client 端一起使用。
Require forward-dns bla.example.org
从名称bla.example.org
解析 IP 的 Client 端将被授予访问权限。
forward-dns
提供程序已在 2.4.19 中添加。
Require local
如果满足以下任一条件,则local
提供程序允许访问服务器:
Client 端地址匹配 127.0.0.0/8
Client 地址是:: 1
连接的 Client 端和服务器地址都相同
这提供了一种便捷的方法来匹配源自 localhost 的连接:
Require local
Security Note
如果要将内容代理到服务器,则需要注意,Client 端地址将是代理服务器的地址,而不是 Client 端的地址,因此在这种情况下使用Require
指令可能无法实现您的意思。有关此问题的一种可能的解决方案,请参见mod_remoteip。