为了限制对许多(+100)虚拟主机的访问,我使用语句Require forward-dns authorized-ips.mydomain.tld

这使我能够以简单而集中的方式轻松管理通过 DNS 添加和删除 IP 地址。

几年来它一直运行良好。

直到最近,我还在使用 IPv4。

我希望最终切换到双栈 IPv4/IPv6,甚至完全切换到 IPv6。

问题是它forward-dns与 IPv6 地址的比较非常严格。

有没有办法使用该
forward-dns指令来比较 IPv6 的子网而不是完整地址?

附言:我知道可以使用Require ip 2001:db8:2:1::/64,但在这种情况下,我将失去基于 DNS 的管理的所有优势。


最佳答案
1

现在不再需要 NAT,客户端可以拥有自己的地址进行端到端通信。然而,这意味着一个名称无法容纳更多的 IP Require forward-dns

如果您同时控制正向和反向 DNS,则可以执行Require host .client.example.net 以该标签结尾的反向 DNS 之类的操作,并通过正向查找进行验证,然后继续。

您提到您不喜欢 httpd 配置文件中的 IP 地址。为了完整起见,它们可以是网络: Require ip 2001:db8:2:1::/64 请注意,地址空间足够大,一个站点可以拥有所需的任意数量的 /64,并且每个站点都可以容纳任意数量的主机。如果客户端自然组织成相对较少的子网,那么这只会是一个相当短的允许列表。

由于 mod_authz_host 目前可以工作,forward-dns并且host正在处理完整 IP 地址,而不是网络。forward-dns允许从该 DNS 名称检索的多个 IP 中的多个主机。 host允许通过部分名称匹配进行多个。探索如何更改代码以适应从 DNS 解析网络。维护您对 mod_authz_host 的修改或启动新模块。

Include指令在目录上下文中起作用。您可以为每个Require使用的唯一文件创建一个通用文件。只需在一个地方更新即可。

IP 地址不是强身份验证。用户不提供凭证,只提供可以伪造的 IP 标头。IP 允许列表可以针对您意想不到的网络流量提供健全性检查。但是,任何实际的用户身份证明都需要真实的身份验证。

1

  • 如何使用面向连接的协议(如 TCP)轻松伪造 IP 地址?它仍然不是强身份验证,但不像直接依赖 IP 那么弱。


    –