Olá, uma parte do mundo! @ Pedro Silva | Friday, Jun 23, 2017 | 2 minutes read | Update at Friday, Jun 23, 2017

O desafio de ter um site alojado em casa passa por uma segurança reforçada em relação aos serviços disponíveis online. GeoIP é uma forma de proteção que se pode aplicar a um site, restringindo os requests de http(s). GeoIP também pode ser utilizado para redirecionar.

Existem varias formas e métodos de realizar um filtro através da localização geográfica. O serviço Nginx com o modulo http_geoip_module apresenta uma boa forma de o fazer.

O modulo http_geoip_module tem como função ler a base de dados GeoIP, criar a variável do país do visitante e aplicar as regras definidas, que podem ser permitir a visita, bloquear ou redirecionar.

O exemplo é para Debian e pressupõe-se que já se encontra instalado o serviço Nginx com o respectivo modulo http_geoip_module ativo. Caso contrario seguir os passos até “Adicionar a linha do modulo”

Para verificar se o modulo esta presente:

$ sudo nginx -V

Instalação do modulo http_geoip_module:

$ sudo apt-get update
$ sudo apt-get install nginx-module-geoip

Editar o ficheiro de configuração do Nginx:

$ sudo nano /etc/nginx/nginx.conf

Adicionar a linha do modulo:

load_module “modules/ngx_http_geoip_module.so”;

Neste exemplo todos os países ficam interditos com excepção PT, BE e US. O oposto também é possível alterando para “default yes;” e todos os países são aceites com excepção dos declarados PT, BE e US.

Adicionar as variáveis no bloco “http” antes de “includes”:

geoip_country /usr/share/GeoIP/GeoIP.dat; map $geoip_country_code $allowed_country { default no; PT yes; BE yes; US yes;}

Instalação da base de dados GeoIP:

$ cd /usr/share/GeoIP/
$ sudo wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
$ sudo gunzip GeoIP.dat.gz

Até agora só criamos o método de detecção da variável do visitante, a leitura da base de dados e as regras aplicar. Para executar estas três condições temos de editar ficheiro VHost do site.

Editar o ficheiro VHost do site:

$ sudo nano /etc/nginx/sites-enabled/omeusite.com.conf

Adicionar as linhas no bloco “server”:

if ($allowed_country = no) { return 444; }

Reiniciar o serviço Nginx:

$ sudo systemctl restart nginx

And that’s pretty much it!! ;)

© 2016 - 2025 coisas do Pedro

Powered by Hugo with theme Dream.

avatar

coisas do Pedro“Os únicos interessados em mudar o mundo são os pessimistas, porque os otimistas estão encantados com o que há...” José Saramago