Cómo bloquear IPs por país en cPanel (con .htaccess)
¿Por qué bloquear tráfico por país en tu web?
Cuando gestionas un sitio web, es probable que recibas visitas de todo el mundo. Pero, seamos sinceros: no todo ese tráfico es bienvenido. De hecho, una gran parte de los ataques informáticos, intentos de fuerza bruta, scraping de contenido y comentarios spam provienen de rangos de IPs concentrados en países específicos.
Bloquear IPs por país en cPanel es una de las medidas de ciberseguridad más efectivas y sencillas de implementar. No solo reduces la superficie de ataque, sino que también ahorras ancho de banda y mejoras el rendimiento general de tu servidor.
En esta guía extensa, te explicaré paso a paso cómo hacerlo usando el archivo .htaccess, sin necesidad de plugins ni conocimientos avanzados de programación. Al final, tendrás tu sitio blindado contra regiones no deseadas.
¿Qué es .htaccess y por qué es tan poderoso?
El archivo .htaccess es un archivo de configuración a nivel de directorio que usan los servidores web Apache (y algunos compatibles). Es un pequeño archivo de texto que te permite modificar el comportamiento del servidor sin tocar la configuración global.
Con .htaccess puedes:
- Redirigir URLs
- Proteger directorios con contraseña
- Comprimir archivos
- Bloquear IPs específicas
- Bloquear rangos de IPs
- Bloquear países completos
La ventaja de usar .htaccess para bloquear IPs por país es que no requiere instalar nada adicional en cPanel. Solo necesitas acceso al Administrador de archivos o a un cliente FTP.
Requisitos previos antes de empezar
Antes de lanzarte a modificar el archivo .htaccess, asegúrate de cumplir estos requisitos:
- Tener acceso a cPanel de tu hosting.
- Tu servidor debe usar Apache o LiteSpeed (la mayoría de los hostings compartidos lo hacen).
- Tener una copia de seguridad de tu .htaccess actual. Esto es crítico, un error podría tirar tu web.
- Conocer la ISO 3166-1 alpha-2 de los países que quieres bloquear (por ejemplo,
CNpara China,RUpara Rusia,BRpara Brasil).
[WARNING]
Antes de modificar .htaccess, descarga una copia de seguridad del archivo original. Si algo sale mal, podrás restaurarlo en segundos desde cPanel.
Método 1: Bloquear IPs por país usando GeoIP y .htaccess
El método más fiable es usar el módulo mod_geoip de Apache. Muchos hostings lo tienen activado. Para comprobarlo, puedes crear un archivo de prueba con el siguiente contenido:
<?php phpinfo(); ?>
Súbelo a tu web y búscalo en el navegador. Si aparece una sección llamada GeoIP, el módulo está activo. Si no aparece, ve al Método 2 (con listas de IPs).
Paso 1: Accede al Administrador de archivos de cPanel
- Inicia sesión en tu cPanel.
- Busca la sección Archivos y haz clic en Administrador de archivos.
- Navega hasta la carpeta
public_html(o la carpeta raíz de tu dominio). - Busca el archivo
.htaccess. Si no lo ves, activa la opción Mostrar archivos ocultos (en el botón de ajustes, arriba a la derecha).
Paso 2: Edita el archivo .htaccess
Haz clic derecho sobre .htaccess y selecciona Editar. Se abrirá un editor de texto.
Paso 3: Añade el bloque de código para GeoIP
Copia y pega el siguiente bloque al principio del archivo (después de la línea RewriteEngine On si existe):
# Bloquear países específicos usando GeoIP
<IfModule mod_geoip.c>
GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE BR BlockCountry
Order allow,deny
Allow from all
Deny from env=BlockCountry
</IfModule>
Explicación línea por línea:
GeoIPEnable On: activa el módulo.SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry: asigna la variableBlockCountrya las visitas de China (CN).- Repite esa línea para cada país que quieras bloquear. Solo cambia el código de país.
Order allow,deny: primero permite todo, luego niega lo marcado.Deny from env=BlockCountry: bloquea a los visitantes que tengan esa variable.
[INFO]
Puedes añadir tantos países como necesites. Solo asegúrate de usar el código ISO de dos letras en mayúsculas. Por ejemplo:US(Estados Unidos),GB(Reino Unido),FR(Francia),IN(India), etc.
Paso 4: Guarda y prueba
Guarda el archivo y visita tu web desde una VPN o desde un dispositivo que no esté en el país bloqueado. Si tu IP real está en un país bloqueado, te aparecerá un error 403.
Método 2: Bloquear IPs por país con listas de rangos y .htaccess (sin GeoIP)
Si tu hosting no tiene activado mod_geoip, no te preocupes. Existe un método alternativo que usa listas de rangos de IPs por país.
La idea es: descargar un archivo con todas las IPs de un país y añadirlas al .htaccess. Es algo más laborioso, pero funciona perfectamente.
Paso 1: Obtén las listas de IPs por país
Existen proyectos gratuitos que actualizan listas de rangos de IPs por país. Uno de los más conocidos es IP2Location LITE y Country IP Blocks.
Puedes descargarlas directamente desde:
https://www.ip2location.com/free/ip-address-block-by-countryhttps://github.com/herrbischoff/country-ip-blocks
Busca el país que quieres bloquear y descarga el archivo en formato .txt o .cidr.
Paso 2: Convierte las listas a formato .htaccess
Las listas suelen venir en formato CIDR (por ejemplo: 192.168.1.0/24). Para usarlas en .htaccess, necesitas convertirlas a líneas Deny from.
Puedes hacerlo manualmente o con un script. Si tienes pocas IPs, hazlo a mano. Si son muchas, usa un convertidor online o un pequeño script en Python.
Paso 3: Añade las líneas al .htaccess
Dentro de tu archivo .htaccess, añade al final:
# Bloquear rangos de IPs de países específicos
Order allow,deny
Allow from all
Deny from 1.0.0.0/24
Deny from 1.0.1.0/24
Deny from 1.0.2.0/23
# ... y así sucesivamente con todas las IPs
[TIP]
No añadas más de 500 líneas de una vez. Si el archivo es demasiado grande, el servidor podría ralentizarse. Es mejor dividir el bloqueo en varios archivos o usar un firewall adicional.
Cómo bloquear IPs de países específicos en cPanel sin tocar .htaccess
Si no te sientes cómodo editando código, cPanel ofrece una alternativa gráfica. Aunque no bloquea por país directamente, puedes usar la herramienta IP Blocker para bloquear rangos concretos que pertenezcan a esos países.
Paso 1: Ve a la sección Seguridad
En cPanel, busca IP Blocker dentro del grupo Seguridad.
Paso 2: Añade los rangos
Introduce la IP o rango que quieras bloquear. Por ejemplo, si quieres bloquear una IP china concreta: 180.76.15.10. O un rango completo: 180.76.15.0/24.
Paso 3: Guarda
Haz clic en Agregar. El bloqueo se aplica al instante.
[INFO]
Esta herramienta es útil si ya identificaste IPs maliciosas de un país concreto. No es tan elegante como bloquear todo un país, pero es más fácil de gestionar para principiantes.
Errores comunes al bloquear IPs por país y cómo solucionarlos
1. Bloqueé mi propia IP
Es el error más habitual. Si estás en el país que bloqueaste, te quedarás fuera de tu web. Para evitarlo, antes de guardar, añade tu IP a una lista blanca.
# Permitir mi IP específica
SetEnvIf REMOTE_ADDR "123.456.789.0" AllowCountry
Allow from env=AllowCountry
2. El módulo GeoIP no está activo
Si usas el Método 1 y no funciona, verifica que el módulo esté activo. Puedes hacerlo con el archivo phpinfo() que mencionamos antes. Si no está, usa el Método 2.
3. El archivo .htaccess se corrompe
Un error de sintaxis puede provocar un error 500 en toda tu web. La solución es restaurar la copia de seguridad que hiciste al principio. Desde cPanel, sube el archivo original o usa la opción Restaurar del Administrador de archivos.
4. Bloqueo demasiado amplio
Algunos países tienen IPs compartidas con servicios en la nube (como AWS o Google Cloud). Si bloqueas todo un país, podrías bloquear servicios legítimos que usan esas infraestructuras.
[WARNING]
Revisa siempre si tu proveedor de correo, pasarela de pagos o servicios externos usan IPs del país que vas a bloquear. Podrías romper funcionalidades críticas.
Preguntas frecuentes (FAQ) sobre bloquear IPs por país en cPanel
¿Puedo bloquear IPs por país si mi hosting usa Syspanel en lugar de cPanel?
Sí. Syspanel (el panel que antes se llamaba HestiaCP) también permite gestionar el servidor, aunque la interfaz es distinta. Para bloquear IPs por país en Syspanel, tendrás que acceder por el puerto 2106 (por ejemplo: https://tudominio.com:2106). Dentro, usa el Administrador de archivos o edita el .htaccess directamente desde la terminal. El proceso es el mismo que en cPanel, solo cambia el panel.
¿Bloquear IPs por país afecta al SEO?
No directamente. Google no penaliza por bloquear países. Sin embargo, si bloqueas un país donde tienes audiencia objetivo, perderás tráfico y potencialmente posicionamiento en ese mercado. Asegúrate de bloquear solo países que no son relevantes para tu negocio.
¿Es mejor usar un plugin de WordPress?
Si usas WordPress, existen plugins como Wordfence o iQ Block Country que hacen lo mismo sin tocar .htaccess. Son más fáciles de usar, pero consumen más recursos. Para sitios pequeños, es una buena opción. Para sitios grandes, el .htaccess es más eficiente.
¿Con qué frecuencia debo actualizar las listas de IPs?
Las listas de IPs cambian constantemente. Los proveedores de servicios de Internet (ISP) reasignan rangos. Si usas el método de listas estáticas, actualízalas al menos una vez al mes. Si usas GeoIP, el módulo se actualiza automáticamente si tu hosting lo mantiene al día.
¿Puedo bloquear países en un servidor con Nginx?
Este artículo está enfocado en Apache y .htaccess. Si tu servidor usa Nginx, no existe .htaccess. Deberías usar reglas de configuración en el bloque de servidor. Te recomiendo buscar una guía específica para Nginx o usar un firewall como Cloudflare, que permite bloqueo geográfico desde su panel.
Conclusión y mejores prácticas finales
Bloquear IPs por país en cPanel con .htaccess es una técnica poderosa para mejorar la ciberseguridad de tu sitio. No solo reduces el riesgo de ataques, sino que también optimizas los recursos del servidor.
Para resumir, los pasos clave son:
- Haz una copia de seguridad de tu .htaccess.
- Decide si usarás el módulo GeoIP (más simple) o listas de IPs (más compatible).
- Añade el código correspondiente.
- Prueba el bloqueo con una VPN.
- Monitorea el tráfico para ver si hay falsos positivos.
[TIP]
Combina el bloqueo por país con otras medidas de seguridad: contraseñas fuertes, autenticación en dos pasos, firewall de aplicación web y actualizaciones periódicas. La seguridad nunca debe depender de una sola capa.
Ahora que ya sabes cómo hacerlo, ¿qué esperas para blindar tu web? Si tienes dudas, revisa las FAQ o contacta con tu proveedor de hosting para confirmar si tienen activado el módulo GeoIP. ¡Tu servidor te lo agradecerá!
