阻止来自 apache2 网络服务器的 IP 的最佳方法是什么?

阻止来自 apache2 网络服务器的 IP 的最佳方法是什么?

我在问自己,什么是阻止某些 IP 地址(或整个阻止来自中国、韩国等国家/地区的 IP 地址)访问我的 apache2 Web 服务器的最佳方法。我知道使用以下方法

Allow from apache.org Allow from .net example.edu

等等,但如果我认为正确的话,它们只能在<Directory>(和<Files><Location>)内定义。

是否有适当的方法来处理整个服务器的这种访问控制?

答案1

我从你的问题中看出了两点:

  1. 整个服务器的访问控制“:您已经知道解决方案,因为可以应用每个目录的限制目录服务器配置上下文中的指令(因此,是系统范围的,与特定虚拟主机无关)最高可达“/”,即服务器范围的整个文件系统。例如,在 httpd.conf 中,通常会看到类似以下内容:

    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    
  2. 来自中国、韩国等国家的整整一个街区“:如果您希望 Apache 根据来源国家/地区过滤 HTTP 请求,一种非常有效的方法是依靠GeoIP 服务。至于 Apache,有一个mod_geoip2 模块您可以将其安装在您自己的 Apache 安装上。一旦启动并运行,该模块将负责为每个 HTTP 请求分配一个基于相应 ISO 3166-1 国家代码的环境变量 (GEOIP_COUNTRY_CODE)。之后,可以根据常用过滤指令检查此类环境变量,以过滤请求。上面的 mod_geoip2 页面提供了一个完整的示例(以及其他有趣的示例):


从:http://dev.maxmind.com/geoip/legacy/mod_geoip2/

根据国家/地区阻止客户端

此示例向您展示如何根据 GeoIP 设置的国家代码来阻止客户端。

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry

# ... place more countries here
Deny from env=BlockCountry

相关内容