【问题标题】:Ban IPs from text file using htaccess使用 htaccess 禁止文本文件中的 IP
【发布时间】:2016-05-27 11:57:43
【问题描述】:

我已阅读并了解如何使用 htaccess 阻止 ip:

order deny,allow
deny from 111.222.33.44
deny from 55.66.77.88
...
allow from all

但我的黑 IP 列表包含数千个 IP。 我将所有 IP 保存到 blacklist.txt 文件中。

我可以使用 htaccess 调用 blacklist.txt 并阻止存储在此文件中的所有 IP 吗?如果有,怎么做?

【问题讨论】:

    标签: .htaccess ip text-files block


    【解决方案1】:

    您可以尝试使用RewriteMap 的变体。您需要访问 server/vhost 配置,因为该指令仅在那里有效。然后,您可以在 htaccess 文件中使用地图。

    假设您的 blacklist.txt 文件如下所示:

    111.222.33.44  deny
    55.66.77.88    deny
    192.168.0.1    allow
    

    您可以像这样定义地图:

    RewriteEngine On
    RewriteMap access txt:/path/to/blacklist.txt
    

    然后在您的 htaccess 中,您可以调用地图:

    RewriteEngine On 
    RewriteCond ${access:%{REMOTE_ADDR}} deny [NC]
    RewriteRule ^ - [L,F]
    

    条件调用映射并检查远程地址是否映射到单词“拒绝”,如果是,则重写规则彻底禁止访问。

    如果您的 blacklist.txt 只是 IP 列表,并且您不想在每个 IP 之后添加“拒绝”,则需要调用程序映射类型并编写一个脚本,像这样:

    #!/bin/bash
    
    while true
    do
        read INPUT
        MATCH=`grep $INPUT /path/to/blacklist.txt`
        if [ -z "$MATCH"  ]; then
            echo "allow"
        else
            echo "deny"
        fi
    done
    

    哪些无限循环读取输入并 greps blacklist.txt 文件。如果IP在文件中,则输出“拒绝”,否则输出“允许”。然后你会像这样创建地图:

    RewriteEngine On
    RewriteMap access prg:/path/to/blacklist.txt
    

    检查地图的重写规则也不例外。

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      相关资源
      最近更新 更多