Qual é a melhor maneira de bloquear IPs de um servidor web apache2?

1

Estou me perguntando qual é a melhor maneira de bloquear determinados endereços IP (ou blocos inteiros de países como china, coreia do sul) de acessar meu servidor web apache2. Estou ciente dos métodos que usam

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

e coisas do tipo, mas se eu pensar corretamente, elas só poderão ser definidas dentro de <Directory> (e <Files> ou <Location> ).

Existe uma maneira correta de lidar com esse controle de acesso para todo o servidor?

    
por Matthias 22.12.2014 / 18:51

1 resposta

2

Eu vejo dois pontos na sua pergunta:

  1. " controle de acesso para todo o servidor ": você já conhece a solução, pois os limites por diretório podem ser aplicados com Directory no contexto do servidor-config (portanto, em todo o sistema e não relacionado a um host virtual específico) até "/", portanto, em todo o servidor, todo o sistema de arquivos. Por exemplo, é comum, dentro do httpd.conf, ver algo assim:

    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    
  2. " blocos inteiros de países como china, coreia do sul ": se você quiser que o seu Apache filtre solicitações HTTP com base nos países de origem, uma abordagem bastante eficaz é confiar na Serviços GeoIP . Quanto ao Apache, há um módulo mod_geoip2 que você pode instalar em sua própria instalação do Apache. Quando estiver em funcionamento, esse módulo cuidará, para cada solicitação HTTP, de atribuir uma variável de ambiente (GEOIP_COUNTRY_CODE) com base no código de país ISO 3166-1 correspondente. Essa variável de ambiente, posteriormente, pode ser verificada em relação a diretivas de filtragem comuns, para filtrar a solicitação. Um exemplo completo (junto com outros exemplos interessantes) é fornecido na página mod_geoip2 acima:

( de: link )

Bloqueio de um cliente com base no país

Este exemplo mostra como bloquear clientes com base no código do país definido pelo 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
por 22.12.2014 / 21:44