【问题标题】:Apache RewriteMap directive with White List of IPs and IP Ranges带有 IP 和 IP 范围白名单的 Apache RewriteMap 指令
【发布时间】:2013-05-11 14:00:28
【问题描述】:

我正在尝试使用 Apache 中的 RewriteMap 指令来“白名单”(仅允许)某些 IP 范围和特定 IP 的混合。让我感到棘手的是,白名单将包含大量 IP,例如 131.132.*(或 CIDR 表示法中的 131.132.0.0/16)以及同一列表中的特定 IP。我的理解是,您不能在 mod_rewrite 中使用 CIDR 表示法,因为 RewriteConds 只是进行简单的文本字符串/字符比较(这是正确的吗?)。到目前为止,这是我为我的 RewriteMap 指令提出的,但不确定它是否会起作用。您是否认为以下内容可以将 131.132 中的 IP 范围列入白名单。. (131.132.0.0/16) ... 即开始范围 131.132.0.0 到结束范围 131.132.255.255) 和范围 121.122 .123.*(即开始范围 121.122.123.0 到结束范围 121.122.123.255)和特定 IP 111.112.113.114,并且会阻止所有其他 IP?此外,最后三个 RewriteCond 行(注意 RewriteCond 行是“OR'ed”)中的反向引用(%1、%2、%3、%4)是否可以正常引用所有引用的第一个 RewriteCond 行?

RewriteMap ipslist txt:"/path/to/whitelist.txt"
RewriteCond %{REMOTE_ADDR} ^(\d+)\.(\d+)\.(\d+)\.(\d+)$
RewriteCond ${ipslist:%1.%2.%3.%4|block} ^block$ [OR]
RewriteCond ${ipslist:%1.%2.%3.*|block} ^block$ [OR]
RewriteCond ${ipslist:%1.%2.*.*|block} ^block$
RewriteRule (.*) - [F]

####
#### in whitelist.txt file
####
111.112.113.114     allow
121.122.123.*       allow
131.132.*.*         allow

【问题讨论】:

  • 不幸的是,我只能在现场生产环境中进行测试,这让我很心痛。还是有点摸不着头脑。我的主要不确定性之一是 %1.%2.%3.%4 、 %1.%2.%3.* 和 %1.%2.*.* 的 RewriteCond 条件是否会找到白名单文件中的正确匹配条目。例如,如果一个请求来自 IP 121.122.123.101,它是否会在白名单文件中的 121.122.123.* 条目上找到匹配项并允许该条目通过。不确定最后两个 RewriteCond 指令中的“*”。感谢您对此提供的任何帮助。
  • 最后三个 RewriteCond 行中的反向引用(%1、%2、%3、%4 等)能否正常工作?到所有引用的第一个 RewriteCond 行?

标签: apache mod-rewrite whitelist rewritemap


【解决方案1】:

使用指令Require 的更简单的解决方案,尚未经过深入测试,但似乎有效:

Require ip 10.20.30.40/27 111.112.113.114 131.132

【讨论】:

    猜你喜欢
    • 2014-01-16
    • 2017-06-29
    • 2013-10-20
    • 2018-01-22
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    相关资源
    最近更新 更多