使用 SetEnv 拒绝向 IPv4 地址提供服务

使用 SetEnv 拒绝向 IPv4 地址提供服务

我有两台服务器为一个网站运行负载平衡,它们具有相同的配置。

我想阻止从某个 IP 访问我的网站(假设它是 127.1.2.3)。

  <Directory "/var/www/html/example.com">
        AllowOverride all      
        SetEnvIf X-Forwarded-For ^127\.1\.2\.3 attacker
        Order Allow,Deny
        Allow from env=!attacker
        # ErrorDocument 403 http://google.com
        AddOutputFilterByType DEFLATE text/plain
        AddOutputFilterByType DEFLATE text/xml
        AddOutputFilterByType DEFLATE application/xhtml+xml
        AddOutputFilterByType DEFLATE text/css
        AddOutputFilterByType DEFLATE application/xml
        AddOutputFilterByType DEFLATE image/svg+xml
        AddOutputFilterByType DEFLATE application/rss+xml
        AddOutputFilterByType DEFLATE application/atom_xml
        AddOutputFilterByType DEFLATE application/x-javascript
        AddOutputFilterByType DEFLATE application/x-httpd-php
        AddOutputFilterByType DEFLATE application/x-httpd-fastphp
        AddOutputFilterByType DEFLATE application/x-httpd-eruby
        AddOutputFilterByType DEFLATE text/html
    </Directory>

以下是两台服务器中的 Apache 版本:

  • 阿帕奇/2.2.3
  • 阿帕奇/2.2.18

问题出现在运行 Apache 2.2.3 的服务器上。它不仅封锁了攻击者的 IP,还封锁了所有其他 IP。而使用相同配置,第二台服务器运行正常。

我查看了 Apache 文档以确保我的配置语法没有错误。我还运行了httpd -t,输出显示我的Syntax OK

我的配置可能存在什么问题env

答案1

所以您有两个版本的 Apache,并且您发现它在 2.2.3 上不起作用,但在 2.2.18 上起作用?

将 2.2.3 服务器升级到 2.2.18。

答案2

请使用这个配置:

SetEnvIf X-Forwarded-For "(,| |^)192\.168\.1\.1(,| |$)" attacker
Order Allow,deny
Deny from env=attacker
Allow From all

....

如果这不起作用,那么 Apache 2.2.3 版本太旧,该模块无法正常运行。

相关内容