Use o módulo mod_geoip. link
Por exemplo:
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
Eu tenho um site que não quero que seja visto por países inteiros. O site está sendo executado em um servidor LAMP. Como posso conseguir isso?
Use o módulo mod_geoip. link
Por exemplo:
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
Você pode usar a condição REMOTE_ADDR de rewrite_mod para redirecionar os usuários banidos para uma única página descrevendo o fato de que eles não podem entrar, ou simplesmente dar a eles um erro 403.
RewriteCond %{REMOTE_ADDR} ^123\.123\.123\.[0-9]{3}$
RewriteRule .* ...
Para obter o intervalo de IPs de um país, obtenha o banco de dados Maxmind por exemplo.
Verifique o IP e determine qual país o hospeda e, em seguida, bloqueie-o. Claro que não é preciso, mas é alguma coisa. Geralmente eu não sou fã de fazer isso; mas talvez seja necessário por algum motivo legal.
Você pode filtrar os endereços IP do ISP do país. Há um monte de banco de dados de geolocalização, para ajudá-lo a identificar o país dos usuários por ip.
Eu encontrei este site, que afirma banir país,
IMO, a melhor maneira de bloquear usando o arquivo .htaccess
Você pode usar serviços como este:
para extrair informações sobre quais intervalos IP pertencem a quais países e bloqueá-los. Tenha em mente que se você bloquear muitos intervalos em um site de alto tráfego, poderá ver uma utilização pesada em seus firewalls.
Tags lamp php apache-2.2 blocking