¿Tu sitio web está siendo atacado constantemente por bots, spammers o hackers? Dependiendo de la frecuencia de los ataques, puede ser aconsejable bloquear la dirección IP del atacante, ya que esto puede tener un impacto significativo en tu tráfico y ancho de banda.
Todos los planes de Kinsta vienen con una «Herramienta de Bloqueo de IP» gratuita que bloquea el acceso a tu sitio desde una dirección IP específica o un rango de direcciones IP. Este artículo describe varias formas de bloquear direcciones IP, incluyendo la herramienta de bloqueo de IP.
¿Preparado?
Comencemos.
Cómo identificar una dirección IP problemática
WordPress es un CMS dinámico, lo que significa que las páginas sin caché son generadas a petición de los PHP worker. Dado que el procesamiento de esta solicitud no almacenada en caché requiere una cantidad mucho mayor de recursos de CPU y RAM que una solicitud almacenada en caché, es posible que una persona maliciosa envíe un gran número de solicitudes y haga que el servidor deje de responder.
En estas situaciones problemáticas, una forma de reducir la carga de tu servidor es bloquear la dirección IP infractora.
En el panel de control de análisis de MyKinsta puedes ver una lista de las principales direcciones IP que han accedido a tu sitio. Dirígete a Analítica > Geo & IP y desplázate hacia abajo hasta la sección ‘IPs Principales de Cliente’.
Si ves una dirección IP que hace más peticiones que otras direcciones IP, digamos de 5 a 10 veces más, investiga para ver si esa dirección IP es un bot o un spammer. La forma más fácil de comprobar si hay direcciones IP maliciosas es utilizar un comprobador de reputación como CleanTalk o Spamhaus.
Si el comprobador de reputación identifica una dirección IP como bot o spammer, la siguiente acción que puedes tomar es bloquear la dirección IP en cuestión. Ten en cuenta que si el comprobador de reputación no incluye una dirección IP como maliciosa, es posible que simplemente no esté registrada en la base de datos.
Si sospechas que la dirección IP en cuestión está causando el HTTP 502 error o que el servidor se caiga por completo, intenta bloquear la dirección IP para ver si eso mejora la situación.
Cómo bloquear una dirección IP con MyKinsta
La herramienta de bloqueo de IP del panel de control MyKinsta te permite bloquear tanto direcciones IP individuales como rangos de direcciones IP sin tener que editar los archivos de configuración de tu servidor web. Si te alojas con Kinsta, te recomendamos que utilices la herramienta IP Deny para bloquear direcciones IP.
Para bloquear una dirección IP en MyKinsta, dirígete a Sitios > Tu Sitio > IP Deny.
A continuación, haz clic en el botón «Añadir dirección IP» situado en la parte superior derecha de la página.
En la ventana modal «Añadir direcciones IP restringidas» puedes añadir direcciones IPV4, direcciones IPV6 y rangos de direcciones IP CIDR (Classless Inter-Domain Routing) a la lista de bloqueo. Los rangos CIDR son útiles para bloquear un rango secuencial de direcciones IP (por ejemplo, de 127.0.0.1 a 127.0.0.255). Para generar un rango CIDR válido, recomendamos utilizar una herramienta como ésta.
Estos son algunos ejemplos de direcciones IP a bloquear
- Dirección IPV4: 5.140.141
- Dirección IPV6: 2001:0db8:0a0b:12f0:0000:0000:0000:0001
- Rango CIDR: 0.0.1/32
Una vez que hayas añadido las direcciones IP que deseas bloquear, haz clic en el botón «Añadir direcciones IP».
Verás las direcciones IP que se han añadido a tu lista de bloqueo. En esta página, puedes acceder a dos acciones «Editar» y «Eliminar» desde la columna «Acciones». Editar te permite actualizar las direcciones IP y los rangos. La acción «Eliminar» permite borrar las direcciones IP bloqueadas.
Cómo bloquear una dirección IP en Cloudflare
Si eres un usuario de Cloudflare, puedes bloquear direcciones IP y rangos de IP utilizando la herramienta «Reglas de Acceso IP» en el panel de control de Cloudflare.
En tu panel de control de Cloudflare, dirígete a Cortafuegos> Herramientas.
Para crear una nueva regla de acceso a la IP, introduce una dirección IP, selecciona la acción «Bloquear», selecciona «Este sitio web» o «Todos los sitios web de mi cuenta» para aplicar la regla a todos los dominios de Cloudflare y haz clic en «Añadir».
Las reglas de acceso que hayas añadido aparecerán en la lista de «Reglas de Acceso IP». Aquí puedes modificar la regla de acceso cambiando la acción, añadiendo una nota o eliminando la regla.
Además de la acción «Bloqueo», Cloudflare admite las acciones «Desafío», «Lista de permitidos» y «Desafío de JavaScript». Dependiendo de tu propósito, puedes utilizar estas acciones en lugar de «Bloquear».
Bloqueo de rangos de IP, países y ASN en Cloudflare
Las reglas de acceso a IP de Cloudflare no solo admiten direcciones IP individuales, sino también rangos de IP, nombres de países y ASN (Números de Sistemas Autónomos).
- Para bloquear en un rango de IP, especifica un rango CIDR en el valor de la regla de acceso a IP.
- Para bloquear por país, especifica el Alpha-2 letras código de ese país.
- Para bloquear en un ASN (una lista de IP gestionadas por un único operador de red), especifica un ASN que empiece por «AS».
Cómo bloquear una dirección IP en Nginx
Si tu sitio está alojado en un servidor web Nginx, puedes bloquear la dirección IP directamente en la configuración de tu servidor web. Este método no es tan fácil de usar como la herramienta de denegación de IP de MyKinsta o el método de cortafuegos de Cloudflare para bloquear IP, pero es la única opción en ciertas situaciones.
Para bloquear una dirección IP con Nginx, accede por SSH a tu servidor y abre el archivo de configuración de Nginx con el editor de texto nano
.
nano /etc/nginx/nginx.conf
Bloqueo de una sola dirección IP con Nginx
Para bloquear una única dirección IP (IPV4 o IPV6) en Nginx, utiliza la directiva deny
de la siguiente manera
deny 190.60.78.31;
deny 4b73:8cd3:6f7b:8ddc:d2f9:31ca:b6b1:834e;
Bloqueo del rango de IP CIDR con Nginx
Para bloquear el rango de IP CIDR en Nginx, utiliza la siguiente directiva
deny 192.168.0.0/24;
Técnicas avanzadas de bloqueo de IP en Nginx
Para bloquear el acceso a un directorio específico (por ejemplo, dominio.com/directorio-secreto/), utiliza la siguiente directiva de Nginx
location /secret-directory/ {
deny 192.168.0.0/24;
}
La directiva deny
toma el valor all
, que es útil para bloquear todas las direcciones IP de un sitio. Esto es útil si quieres bloquear todas las direcciones IP a tu sitio; la directiva deny all;
se utiliza a menudo junto con allow
para permitir solo ciertas direcciones IP y bloquear otras.
location /secret-directory/ {
allow 192.168.0.0/16;
deny all;
}
Guarda la configuración de Nginx y recarga Nginx
Cuando hayas terminado de editar el archivo en nano, pulsa Ctrl+O para guardar los cambios y Ctrl+X para salir de nano.
Para habilitar la nueva regla de bloqueo de IP, es necesario recargar la configuración de Nginx con el siguiente comando
sudo systemctl reload nginx
Cómo bloquear una dirección IP en Apache
Si tu sitio está alojado en el Apache servidor web puedes bloquear las direcciones IP directamente en la configuración del servidor web; para bloquear las direcciones IP en Apache, debes utilizar un archivo .htaccess. El archivo .htaccess permite aplicar reglas específicas a un directorio concreto. Para aplicar las reglas a todo tu sitio, debes colocar el archivo .htaccess en el directorio raíz de su sitio.
En primer lugar, accede por SSH a tu servidor, navega hasta el directorio raíz de tu sitio y crea un archivo .htaccess con el siguiente comando
touch .htaccess
A continuación, abre el archivo .htaccess en un editor de texto nano
.
nano .htaccess
Las reglas exactas para bloquear IPs dependen de si estás usando Apache 2.2 o 2.4, así que las reglas para ambas versiones están listadas aquí. Cuando edites tu archivo .htaccess, utiliza las reglas que correspondan a la versión de Apache de tu sitio.
Bloqueo de una sola dirección IP en Apache
Para bloquear una única dirección IP (IPV4 o IPV6) en Apache, utiliza la siguiente regla
# Apache 2.2
order allow, deny
allow 192.168.0.0
deny from all
#Apache 2.4
Require all granted
Require not ip 192.168.0.0
Bloqueo de rangos de IP CIDR con Apache
# Apache 2.2
order allow, deny
allow 192.168.0.0/16
deny from all
#Apache 2.4
Require all granted
Require not ip 192.168.0.0/16
Resumen
Dependiendo de la configuración de tu sitio, existen diferentes maneras de bloquear direcciones IP para que no lleguen a tu sitio. Si eres un usuario de Kinsta, te recomendamos que utilices la herramienta de bloqueo de IP integrada (Deny IP) en MyKinsta.
Si tu sitio no está alojado en Kinsta, te recomendamos que lo protejas con Cloudflare, que te permite crear tus propias reglas de acceso a la IP para bloquear direcciones IP, rangos, etc. Si no puedes configurar Cloudflare para tu sitio, puedes implementarlo directamente en el archivo de configuración de tu servidor web con reglas para bloquear IP.