Cómo restringir el acceso a mi web desde algunos países usando .htaccess

Publicado
Actualizado
Engagements 0 Comentario

Para restringir o bloquear el acceso de uno o varios paises con tu archivo .htaccess de forma fácil y sin tener que agregar miles de líneas con los rangos de IP, puedes usar la librería geoip de apache y php solo con usar el código del país que deseas bloquear tienes todo el trabajo hecho, para instalarla debemos ejecutar los siguientes comandos en nuestro servidor:

sudo apt-get install php-geoip
        cd /usr/share/GeoIP/
        sudo wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
        sudo gunzip GeoLiteCity.dat.gz 
        sudo apt-get install -y geoip-bin geoip-database libgeoip-dev libgeoip1 libapache2-mod-geoip

Luego editar el #archivo geoip.conf 

sudo vim /etc/apache2/mods-available/geoip.conf

Reemplazar el contenido por el siguiente:

<IfModule mod_geoip.c>
           GeoIPEnable On
           GeoIPScanProxyHeaders On
           GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
           GeoIPDBFile /usr/share/GeoIP/GeoLiteCity.dat
        </IfModule>

Luego guardar y agregar en el archivo .htaccess del sitio que quieres restringir el acceso

GeoIPEnable On
        SetEnvIf GEOIP_COUNTRY_CODE <CODIGO_PAIS> DenyCountry
        Deny from env=DenyCountry

Ejemplo para restringir el acceso desde Rusia y Corea

GeoIPEnable On
        SetEnvIf GEOIP_COUNTRY_CODE KR DenyCountry
        SetEnvIf GEOIP_COUNTRY_CODE RU DenyCountry
        Deny from env=DenyCountry

Reiniciar el servicio de apache

sudo /etc/init.d/apache2 restart

Puedes consultar el listado de los códigos de cada país en el siguiente link: https://es.wikipedia.org/wiki/ISO_3166-1

NOTA: El servicio de apache lo debes reiniciar solo la primera vez debido a la instalación realizada, luego puedes hacer los cambios que quieras en tu archivo .htaccess sin necesidad de reiniciar nuevamente el servicio.

Comentarios