Con el curso del tiempo cuando tenemos un sitio en vivo utilizando Nginx nos vamos dando cuenta de algunos comportamientos extraños por parte de algunas direcciones IP, generalmente estas direcciones pertenecen a robots o a agentes maliciosos que atacan nuestro servicio.
Si bien hemos visto como bloquear el acceso y el trafico utilizando el módulo GeoIP, también existe una forma más sencilla y directa de realizar este tipo de bloqueos, gracias a esto si no tenemos el módulo GeoIP disponible podemos hacer un buen set de reglas que nos permitan regular el acceso a nuestro sitio.
Lista Negra
El llevar la administración de un servidor conlleva que tengamos ciertas políticas que garanticen la seguridad de nuestros datos además de velar por el correcto rendimiento de nuestros recursos, un obstáculo que enfrentamos son los ataques y las consultas masivas por parte de bots, scripts exploradores o también de agentes maliciosos.
Por las causas anteriores debemos manejar una lista negra que nos permita bloquear direcciones IP que sabemos que tienen una estructura y que no pertenecen a tráfico orgánico para nuestros sitios servidos por Nginx.
Para construir estas listas negras podemos realizar bloqueos por IP o por conjunto de direcciones IP, de esta forma podremos paliar un poco la situación y tener un desarrollo del servicio más saludable.
¿Cómo Construir la Lista Negra?
Para construir nuestra lista negra debemos utilizar las reglas deny y allow de forma que podamos especificar los rangos de las IPs a bloquear o simplemente colocar direcciones específicas, esto debemos hacerlo con mucho cuidado ya que podemos bloquear a más usuarios de los deseados si no colocamos la regla correctamente.
Veamos en la siguiente imagen un código ejemplo de cómo hacer una configuración básica de bloqueo de acceso:
En el código vemos como utilizamos deny para especificar una IP particular y luego con allow especificamos un rango de direcciones utilizando la sub-mascara /24, este ejemplo es muy utilizado cuando estamos segmentando un servicio dentro de una red local, de forma que un departamento no pueda conectarse al servicio que hospeda Nginx.
Para finalizar este tutorial vemos que realizar este tipo de bloqueo es muy sencillo y no dependemos de otros módulos, gracias a esto con una instalación estándar o reducida de Nginx podremos implementar nuestras políticas de seguridad.