Cargando



Nginx - Módulo GeoIP

En este tutorial veremos como bloquear el tráfico hacia nuestros servidores tomando la dirección IP como filtro para permitir o no el acceso a través del módulo GeoIP.


may 31 2014 22:15
Profesional
jun 02 2014 12:28
Existen momentos en los que nuestra aplicación nos interesa que solo sea visible para un determinado lugar o un determinado número de equipos, con esto podemos garantizar que nuestros recursos van a estar disponibles para quienes nos interesa verdaderamente.

Para lograr este bloqueo puede haber una variedad de técnicas, pero una de las más sencillas es a través de la dirección IP, con este dato podemos bloquear terminales en particular, ISPs e incluso países, todo esto simplemente configurando algunas opciones en Nginx.

Módulo GeoIP

Al momento de determinar que un grupo de IPs no debería ser capaz de ver nuestro servidor por la causa que determinemos, podemos bloquear su acceso a nuestro servidor, para lograr esto existen muchas formas, pero una de las más completas es a través de la utilización del módulo GeoIP.

¿Qué hace?
Este módulo al tenerlo activo en nuestro servidor Nginx nos permite identificar el país del cual accede el cliente gracias a una base de datos pre-compilada con toda esta información. Para la identificación esta base de datos según la IP del cliente lo identifica con un código de 3 caracteres que representan al país, con ello podemos construir reglas interesantes para proteger nuestro servidor.


Además del módulo GeoIP, también podemos utilizar en conjunto el módulo geo que nos permite establecer una interfaz básica para asociar variables basadas en las direcciones IP de las conexiones con los clientes.

Ejemplo Práctico

Imaginemos que por un momento estamos construyendo una infraestructura para un banco suizo, aquí vamos a necesitar que las partes públicas sean visibles para efectos del SEO en los buscadores, sin embargo solo queremos que quien pueda acceder pertenezca al país.

Adicionalmente debemos establecer una serie de exclusiones ya que hemos contratado un servicio de auditoría que se va a asegurar que nuestro servicio esté de la forma adecuada, para esto se va a establecer una variable para tal fin, que por defecto estará definida como 0 impidiendo que sea visible el sitio y solo después de pasar las comprobaciones necesarias se coloca en 1 para permitir el acceso al servicio.

Veamos cómo nos debería quedar nuestro archivo de configuración en la siguiente imagen:

nginx_bloque_trafico_dir.jpg


Funcionamiento
El funcionamiento es muy sencillo de entender, primero establecemos la ubicación de nuestra base de datos de IPs luego con el módulo geo establecemos las exclusiones pertinentes, si nos fijamos dentro de este grupo colocamos la dirección del localhost, para que podamos tener acceso desde nuestro propio servidor. Finalmente comparamos el código del país, si es el adecuado establecemos que puede acceder, en el caso que no pueda acceder lo enviamos directamente a un estado 403 de acceso no permitido.


Ya con esto hemos protegido nuestro servidor utilizando la dirección IP del cliente como elemento discriminatorio, lo interesante de esto es que podemos hacer una selección totalmente personalizada de quien puede o no acceder al servicio, permitiendo así la posibilidad de generar más capas de seguridad.

¿Te ayudó este Tutorial?


1 Comentarios

Buenas, te comento trabajo en una escuela y deseo bloquear el acceso a facebook desde el servidor nginx corriendo en windows xp. saludos
No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X