从apache2 web服务器阻止IP的最好方法是什么?

我问自己最好的办法是阻止某些IP地址(或来自中国,韩国等国家的整个块)访问我的apache2 web服务器。 我知道使用的方法

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

和这样的事情,但如果我认为正确的话,他们只能在<Directory> (和<Files><Location> )中定义。

有没有适当的方式来处理整个服务器的访问控制?

我在你的问题上看到两点:

  1. 对整个服务器的访问控制 ”:你已经知道了解决scheme,因为每个目录的限制可以在服务器configuration上下文中使用Directory指令(所以系统范围内而不涉及特定的虚拟主机) “,所以整个文件系统的服务器范围。 作为一个例子,在httpd.conf中通常会看到像这样的内容:

     <Directory /> Options FollowSymLinks AllowOverride None </Directory> 
  2. 来自中国,韩国等国家的整个街区 ”:如果您希望您的Apache过滤来自发起国的HTTP请求,相当有效的方法是依靠GeoIP服务 。 至于Apache,有一个mod_geoip2模块 ,你可以在你自己的Apache安装上安装。 一旦启动并运行,对于每个HTTP请求,这样的模块将会小心地根据相应的ISO 3166-1国家代码分配一个环境variables(GEOIP_COUNTRY_CODE)。 之后,可以根据常用过滤指令来检查此类环境variables,以过滤请求。 在上面的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