Bloquear IPs por país en cPanel con .htaccess
¿Por qué bloquear países en tu hosting?
Si tienes una web, es muy probable que hayas notado intentos de acceso sospechosos, comentarios spam o ataques de fuerza bruta. Muchos de estos ataques provienen de países donde no tienes clientes ni visitas. Bloquear IPs por país es una de las medidas de seguridad más efectivas y simples que puedes aplicar en tu hosting.
Imagina que tienes una tienda online que solo vende en España y Latinoamérica. ¿Por qué permitir conexiones desde países con altas tasas de ciberataques? Bloquear el tráfico no deseado reduce la carga del servidor, mejora la velocidad de tu web y disminuye drásticamente el riesgo de intrusiones.
La buena noticia es que no necesitas ser un experto en seguridad para hacerlo. Con cPanel y un archivo llamado .htaccess, puedes configurar la geolocalización de manera rápida y sin instalar plugins pesados. Te lo explico paso a paso, como si estuvieras hablando con un amigo técnico.
¿Qué es .htaccess y por qué es tan poderoso?
El archivo .htaccess es un archivo de configuración que vive en la raíz de tu sitio web (generalmente en la carpeta public_html). Le dice al servidor Apache cómo manejar las solicitudes. Piensa en él como un portero con una lista de invitados: puede dejar entrar a casi todos, pero también puede rechazar a personas específicas o a grupos enteros.
Lo mejor de .htaccess es que funciona a nivel de servidor, antes de que cualquier script de tu web (como WordPress) se ejecute. Esto significa que si bloqueas un país, el visitante ni siquiera carga tu página. Es rápido, eficiente y ahorra recursos.
¿Cuándo usar .htaccess para bloquear países?
- Cuando tienes una web local o regional.
- Cuando detectas ataques recurrentes desde ubicaciones concretas.
- Cuando quieres proteger áreas administrativas (como
/wp-admin). - Cuando tu web está en español y no te interesa tráfico internacional no cualificado.
Requisitos previos antes de empezar
Antes de lanzarte a editar archivos, verifica estos tres puntos:
- Tu hosting usa Apache o LiteSpeed. Si usas Nginx puro, esto no funcionará. La mayoría de los planes de cPanel usan Apache o LiteSpeed, así que es muy probable que estés listo.
- Tienes acceso a cPanel. Necesitarás entrar al Administrador de Archivos o usar FTP.
- Conoces el código de país ISO 3166-1 alpha-2. Por ejemplo,
ESpara España,MXpara México,CNpara China,RUpara Rusia,USpara Estados Unidos. Lo verás en dos letras.
Bloquear IPs por país en cPanel: el método paso a paso
Este es el proceso completo. No te saltes ningún paso, son sencillos pero importantes.
Paso 1: Accede al Administrador de Archivos de cPanel
- Inicia sesión en tu cPanel (normalmente en
tudominio.com/cpanel). - Busca la sección Archivos y haz clic en Administrador de Archivos.
- Se abrirá una ventana; selecciona Documento raíz para el dominio (o
public_html) y haz clic en Ir.
[WARNING]
Si tu web usa un subdominio o una carpeta específica, el archivo.htaccessdebe estar en la raíz de esa instalación. Si usas WordPress, normalmente espublic_html/.htaccess.
Paso 2: Haz una copia de seguridad de tu .htaccess actual
Esto es crítico. Un error en .htaccess puede tumbar tu web. Haz clic derecho sobre el archivo .htaccess y selecciona Copiar. Nómbralo algo como .htaccess.bak o descárgalo a tu PC.
Paso 3: Edita el archivo .htaccess
- Haz clic derecho sobre
.htaccessy selecciona Editar. - Se abrirá un editor de texto. Puede que te pida confirmar la codificación; déjala como está (UTF-8).
Paso 4: Añade el código de bloqueo por país
El código que vas a usar es un bloque de reglas mod_rewrite + mod_alias. Aquí tienes un ejemplo funcional:
# Bloquear países no deseados
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:CF-IPCountry} ^(RU|CN|KP|IR|SY)$ [NC,OR]
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} ^(RU|CN|KP|IR|SY)$ [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Explicación del código:
RewriteCondson las condiciones. Aquí comprobamos dos cabeceras:CF-IPCountry(si usas Cloudflare) yGEOIP_COUNTRY_CODE(el módulo de geolocalización de Apache).^(RU|CN|KP|IR|SY)$es la lista de códigos de país a bloquear. Cambia estos códigos por los que necesites.[NC]significa que no distingue entre mayúsculas y minúsculas.[OR]es un "O" lógico: si se cumple una condición o la otra.RewriteRule ^(.*)$ - [F,L]devuelve un error 403 (Prohibido) y detiene el proceso. El visitante ve una página en blanco o un mensaje de acceso denegado.
Paso 5: Guarda y prueba
- Haz clic en Guardar cambios.
- Cierra el editor.
- Ve a tu web en una ventana de incógnito. Debería cargar con normalidad.
- Para probar el bloqueo, usa un servicio de proxy o VPN de uno de los países bloqueados (por ejemplo, una VPN rusa). Verás un error 403.
[TIP]
Si usas Cloudflare, el códigoCF-IPCountryes más fiable que el de Apache puro, porque Cloudflare ya identifica el país del visitante. Si no usas Cloudflare, asegúrate de que tu hosting tenga instalado el módulomod_geoip. Si no lo tiene, el bloqueo no funcionará. Puedes preguntar a tu proveedor de hosting.
htaccess geolocalización avanzada: bloquear solo el panel de administración
Quizás no quieras bloquear todo tu sitio, sino solo proteger el acceso a /wp-admin (el panel de administración de WordPress). Esto es muy útil si todos tus administradores están en un mismo país.
Ejemplo: bloquear el acceso a wp-admin excepto para México y España
# Proteger wp-admin por país
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/wp-admin [NC]
RewriteCond %{HTTP:CF-IPCountry} !^(MX|ES)$ [NC]
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} !^(MX|ES)$ [NC]
RewriteRule ^ - [F,L]
Qué hace este código:
- Si la URL contiene
/wp-admin, se activa la regla. - Si el país del visitante no es México (
MX) ni España (ES), se le bloquea con un 403. - Los administradores legítimos podrán entrar sin problema.
[WARNING]
Ten mucho cuidado con esto. Si te equivocas con el código de tu propio país, podrías quedarte fuera de tu panel. Siempre ten una copia de seguridad y acceso por FTP para revertir los cambios si algo falla.
Cómo bloquear países en WordPress sin tocar .htaccess
Si editar archivos te da miedo, existen alternativas más amigables para bloquear país wordpress. Aunque el artículo se centra en .htaccess, te menciono las opciones porque a veces son más prácticas:
- Plugins de seguridad como Wordfence, iThemes Security o All in One WP Security. Estos tienen secciones de "Firewall" donde puedes bloquear países desde un panel visual.
- CDN como Cloudflare. En la sección "Firewall" → "Country" puedes bloquear países con un clic, sin tocar código.
- WAF (Web Application Firewall) de tu hosting. Muchos hosts ofrecen reglas predefinidas.
Ventajas de los plugins:
- No necesitas conocimientos técnicos.
- Actualizaciones automáticas.
- Registros de intentos bloqueados.
Desventajas:
- Consumen recursos del servidor (más memoria y CPU).
- Pueden ralentizar tu web si no están bien configurados.
Mi recomendación: si tu web es pequeña o mediana, usa .htaccess para un bloqueo limpio y ligero. Si necesitas funcionalidades más avanzadas (como reportes detallados), entonces un plugin es mejor.
Errores comunes y cómo solucionarlos
1. Bloqueas tu propio país por error
Revisa bien los códigos ISO. Por ejemplo, España es ES, no SP. México es MX, no ME. Un error de este tipo te dejará sin acceso.
Solución: Mantén siempre una conexión FTP alternativa (por ejemplo, desde tu móvil con datos móviles si tu IP es de otro país) para poder editar el archivo y corregir el error.
2. El bloqueo no funciona
Si añades el código y los visitantes del país bloqueado siguen entrando, puede ser porque:
- Tu servidor no tiene
mod_geoipinstalado. - Estás usando un CDN (como Cloudflare) y la IP real del visitante está oculta. En ese caso, la cabecera
CF-IPCountryes la correcta. - El archivo
.htaccessno se está leyendo (permisos incorrectos). Asegúrate de que tenga permisos644.
3. Error 500 en tu web
Esto suele pasar por una sintaxis incorrecta en .htaccess. Revisa que no haya espacios extra o líneas duplicadas.
Solución: Usa el archivo de respaldo que creaste. Sube el .htaccess.bak y renómbralo a .htaccess.
4. Quieres bloquear más de 10 países
No hay límite técnico, pero el código se vuelve largo y difícil de mantener. Te sugiero agruparlos por regiones o usar una base de datos de IPs.
Preguntas frecuentes (FAQ)
¿Bloquear países afecta mi SEO?
No. Google y otros buscadores no penalizan por bloquear países. De hecho, si tu web es local, mejora tu SEO porque los usuarios que llegan son más relevantes y la tasa de rebote baja. Eso sí, asegúrate de que los motores de búsqueda (Googlebot) no estén bloqueados. Googlebot suele rastrear desde Estados Unidos. Si bloqueas EE.UU., podrías impedir que Google indexe tu web.
[INFO]
Para evitar problemas con Google, no bloquees países donde estén los principales rastreadores. Si necesitas bloquear EE.UU., usa la regla de bloquear solo/wp-adminy no el sitio completo.
¿Puedo combinar .htaccess con otras medidas de seguridad?
Por supuesto. Bloquear países es solo una capa. Te recomiendo combinarlo con:
- Autenticación de dos factores en tu panel de WordPress.
- Cambiar la URL de login de WordPress.
- Limitar intentos de acceso.
- Usar HTTPS en todo el sitio.
¿Qué pasa si mi hosting usa Syspanel en lugar de cPanel?
Si tu hosting usa Syspanel (conocido anteriormente como HestiaCP), el proceso es similar pero el acceso cambia. Para entrar al panel de control, conecta al puerto 2106 (por ejemplo, https://tudominio.com:2106). Una vez dentro, busca la sección de "Archivos" o "Gestionar archivos" y edita el .htaccess desde la raíz del dominio. El resto del código es idéntico.
[TIP]
En Syspanel, el archivo.htaccesstambién se encuentra enpublic_html. Si no lo ves, activa la opción "Mostrar archivos ocultos" en el administrador de archivos.
¿Es mejor bloquear por IP individual o por país?
Depende del caso:
- Por IP individual: ideal si tienes una lista corta de IPs problemáticas.
- Por país: ideal si quieres bloquear un gran volumen de tráfico no deseado de una sola vez.
Puedes combinar ambos: primero bloqueas el país y luego, si quieres, añades IPs concretas que quieras permitir dentro de ese país.
¿Cuánto tarda en hacer efecto el bloqueo?
Es inmediato. En cuanto guardas el archivo .htaccess, el servidor aplica las reglas. No necesitas reiniciar nada.
Consejos finales de seguridad para tu hosting
Bloquear países es una gran medida, pero no lo es todo. Aquí van mis recomendaciones de oro para mantener tu web segura:
- Actualiza siempre tu WordPress, plugins y temas. Las vulnerabilidades se explotan en horas.
- Usa contraseñas fuertes y cámbialas cada 3 meses.
- Activa la autenticación de dos factores para todos los usuarios administradores.
- Haz copias de seguridad semanales (o diarias si actualizas contenido con frecuencia). Guárdalas en un lugar externo, como Google Drive o un servicio de backup.
- Revisa los registros de acceso de tu cPanel una vez al mes. Busca patrones extraños: muchos intentos de login, IPs que no reconoces, etc.
- Considera usar Cloudflare en su plan gratuito. Te da protección DDoS, CDN y la cabecera
CF-IPCountryque hace que el bloqueo por país sea mucho más preciso.
Resumen rápido: bloquear IPs por país con .htaccess
- Entra a cPanel → Administrador de Archivos.
- Ve a
public_html. - Respalda tu
.htaccess. - Edita el archivo.
- Pega el código que te enseñé.
- Guarda y prueba.
Si algo sale mal, restaura el respaldo. Es un proceso reversible y sin riesgo si sigues los pasos.
Espero que esta guía te haya sido útil. Si tienes dudas, déjalas en los comentarios o contacta con tu proveedor de hosting. La seguridad de tu web es cosa seria, pero con estas herramientas básicas ya estás un paso por delante de los atacantes. ¡Manos a la obra!
