En este post vamos a aprender a bloquear o limitar el acceso por países a WordPress para aumentar la seguridad de nuestra página web y combatir los ataques de fuerza bruta que provengan de países concretos.
Si utilizas Wordfence u otra herramienta que te permita monitorizar peticiones y ataques a tu web te habrás dado cuenta de que los usuarios de ciertos países sólo acceden a un tipo concreto de páginas de WordPress.
¿Qué estará haciendo un usuario de un país como Rusia, Corea, Malasia intentando ir al login de mi página web? ¡Nada bueno seguro!
Normalmente las páginas a las que intentan acceder son el login o registro de WordPress y al archivo XML-RPC.
Y no es casualidad ya que son conocidas vulnerabilidades o partes de WordPress por las que intentaran colarte spam, inyectar código, robar datos, acceder a tu panel de administración o simplemente reventar por los aires tu página web.
Aquí te dejo una captura de las estadísticas de Wordfence donde se puede ver el Top de países por número de ataques bloqueados.
Así que hoy te voy a enseñar a bloquear países en WordPress para que los usuarios de ciertos países no puedan acceder a la totalidad de tu web o solo a la parte de administración de WordPress.
Configurar el bloqueo de países en WordPress
Podemos implementar esta medida en WordPress mediante plugins de seguridad para bloquear países como Wordfence y IP Geo Block y también podemos bloquear países mediante el archivo htaccess.
IP Geo Block
IP Geo Block es un plugin gratuito, muy completo con más de 10000 instalaciones activas que nos permite bloquear países según su código de país y también:
- Crear lista blanca de países
- Crear lista negra de países
- Bloquear el acceso a la parte de administración (Proteger el Backend)
- Bloquear el acceso a la parte pública de la web (Proteger el Frontend)
- Ver estadísticas y logs de los bloqueos.
Configurar el bloqueo de países en Ip Geo Block
Una vez instalado vamos a Ajustes > IP Geo Block para empezar a configurarlo.
Primero vamos a configurar las reglas de validación donde crearemos una lista blanca y negra de países.
Lo más recomendable es poner en la lista blanca el país desde nos conectamos normalmente y en la lista negra los países que hemos detectado que nos está llegando ataques constantemente.
Primero pulsaremos el botón “Scan Your Country Code”.Esta opción nos mostrará el código del país desde nos estamos conectando.
Después configuramos la lista blanca y negra de los países. La lista blanca serán los países que no se van a bloquear o que tendrán el acceso permitido.
Y en la lista negra configuraremos los países que queremos bloquear.
Simplemente en el desplegable de la opción “Matching rule” elegimos Whitelist y Blacklist.
E introducimos el código de cada país separado por comas en la opción “Whitelist of country code” o “Blacklist of country code” según lo queramos bloquear o no.
Podemos encontrar los códigos de los países en el link que hay debajo de la opción o aquí.
Por ejemplo el código ES representa a España y RU a Rusia.
ZZ es el código para países desconocidos, útil si los hackers están ocultando el país desde donde se conectan y por defecto viene configurado en la lista negra.
En la opción “Whitelist of extra IP addresses prior to country code (CIDR)” podemos configurar la lista blanca por IP, para introducir nuestra propia ip o la ip de los servidores de servicios externos que utilicemos, como por ejemplo la IP de los servidores del plugin Jetpack.
Con la opción “Response Code” podemos simular el error que se mostrará a los usuarios de países restringidos. Por defecto está configurado en 403 Forbidden.
“Max number of failed login attempts per IP address” esta opción configura el número de intentos de sesión fallidos que una IP puede cometer antes de ser bloqueada.
Configurar el bloqueo de países a la zona de administración
Una vez configuradas estas opciones vamos a configurar las opciones para el bloqueo por países del Back End.
En estas opciones podemos elegir quien tendrá acceso a las diferentes partes del BackEnd según la lista blanca o negra de los países que hemos configurado anteriormente.
Simplemente tenemos que marcar las casillas de verificación “Block by country” para activar el bloqueo en cada opción.
Admin área y login form protegen la zona de administración y los login de WordPress de acceso y registro de usuarios y el formulario de perdida de contraseña.
Por defecto vienen marcadas y es recomendable tenerlas para tener la configuración mínima de seguridad de este plugin.
Comment Post, esta opción protege los formularios de los cometarios, no está marcada por defecto ya que si utilizamos un sistema de comentarios externo que no sea el original de WordPress podemos dejar sin acceso a su sistema.
XML-RPC esta opción activa l protección del archivo xmlrpc de WordPress que se encarga de los pingbacks y también es utilizado por aplicaciones móviles y algunos plugin como Jetpack.
Con este tipo de opciones hay que tener cuidado si tienes muchos países en la lista negra, ten en cuenta que si utilizas servicios externos con sus propios servidores pueden verse afectados y estos servicios pueden dejar de funcionar.
O también puedes incluir las IP de los servidores de los servicios externos en la lista blanca de IP.
Y con estas reglas ya será suficiente para tener asegurado el login y el archivo XML-RPC que son las partes más atacadas de una instalación de WordPress.
Admin Ajax es un archivo utilizado para múltiples servicios tanto para visitantes como para administradores y muchos de los temas y plugin lo utilizan para funcionar correctamente, así que te recomiendo que no actives el bloqueo para esta opción para un correcto funcionamiento de tu sitio web.
Con las opciones plugins y Themes área podemos deshabilitar el acceso por países a las carpetas de nuestro servidor donde se encuentran nuestros plugin y temas.
Configurar el bloqueo de países a la zona pública de nuestra web
En el apartado Front-end target settings de las opciones del plugin puedes configurar el bloqueo a la parte pública de tu web.
Es decir los visitantes de los países de la lista negra ya sean bots o humanos no podrán ver el contenido de tu web.
Esta parte de la configuración es opcional y no se suele configurar ya que normalmente queremos que todo el mundo pueda ver el contenido de nuestra web.
Simplemente la activamos, elegimos si se usan las normas de validación que hemos creado al principio o si creamos una lista blanca o negra específica para la parte pública.
Podemos elegir que toda nuestra web no se muestre o las páginas en concreto queremos que no se vean.
Y ya hemos terminado de configurar el plugin, como ves es muy completo, podemos ver estadísticas y log en las diferentes pestañas y si lo queremos desinstalar sin que deje rastro en la base de datos podemos utilizar la opción “Remove all settings at uninstallation”.
Puedes encontrar más información sobre este plugin en la página web de Ip Geo Block.
Bloquear países con WORDFENCE
Con la versión Premium de Wordfence también podemos bloquear el acceso por países a nuestra página web desde Wordfence > Blocking > Country Blocking.
Es bastante sencillo de configurar, solo hay que elegir si se bloquea el acceso al formulario de inicio de sesión, al resto de la web o a las dos partes.
Y marcamos los países a bloquear desde el listado de países.
Como opción avanzada podemos crear una puerta trasera por si vamos de viaje, que consiste en configurar una URL oculta que cuando accedemos a ella se instalará una cookie en el navegador con la cual podemos saltarnos el bloqueo de país.
Puedes leer más acerca de la configuración de países en Wordfence en la documentación oficial de Wordfence.
Bloquear países mediante el archivo htaccess
También podemos bloquear países mediante el archivo htaccess , sin la necesidad de utilizar plugins.
No te recomiendo que bloquees países con este método si no sabes exactamente lo que estás haciendo y por si acaso antes de tocar el archivo .htaccess crea una copia de seguridad.
Simplemente hay que denegar el acceso los rangos de IP de los países en el archivo .htaccess que se encuentra normalmente en la raíz de tu servidor.
Podemos generar una lista con los rangos de las IP de los países y las reglas necesarias para bloquearlas en Countryipblocks
Elegimos el país a bloquear y seleccionamos .htaccess Deny para que genere las reglas para denegar países o .htaccess Allow para las reglas de países permitidos y copiamos y pegamos el código con la lista de ip dentro del archivo .htaccess.
La única pega que tiene este método es que las direcciones Ip asociadas a los países se van actualizando en el tiempo y deberemos actualizar la lista y el archivo htaccess cada cierto tiempo.
Recomendaciones del bloqueo de países
Bloquear países es una medida avanzada de seguridad que no debemos implementar a la ligera por diversos motivos y en la mayoría de los casos con tener configurados los intentos de inicio de sesión es más que suficiente para tener una web segura.
Si aún así quieres utilizar los bloqueos de acceso a WordPress por países te recomiendo:
- No ser muy restrictivo, bloquea países solo si detectas gran cantidad de inicios de sesión fallidos procedentes de un determinado país.
- No bloquear a EEUU ni países de Europa ya que servicios legítimos dejarán de funcionar o crearan errores, como los rastreadores de los buscadores, plugins que trabajan desde servidores externos como Jetpack y Akismet, o servicios como Paypal.
- No bloquear ningún país de la zona pública si utilizas Google Adwords, ya que este servicio no lo permite.
- Si estás bloqueando los países con el archivo .htaccess actualiza las direcciones IP.
¡Muchas gracias por el post! No sabía cómo bloquear ni limitar el acceso por países a WordPress. Me han parecido súper interesantes las recomendaciones finales. Un abrazo
¡Muchas gracias por compartir! Como siempre, un post muy interesante y constructivo. ¡Un saludo!
Como siempre, muy buen artículo. ¡Comparto!
Hola
Ip geo block me ha dejado bloqueado y tirado, no te dan asistencia y he aplicado sus instrucciones que están en su página y no me ha dado resultado llevo 3 días intentando resolver el problema y como te digo totalmente solo
Puse el problema en el foro de wordpress y le escribí al autor y ni flores
Gracias por tu pagina, es muy buena, solo quería aclarar este tema de ip geo block, no lo recomiendoG
Hola Gerardo, gran post, estaba pensando en instalarlo, pero me espero por si acaso, leyendo el comentario de Gomz me he echado para atrás, de hecho lo había instalado siguiendo tu post y al ver el comentario lo he desactivado por si acaso, porfa Gomz, cuenta si has podido solucionarlo y si hebéis detectado donde ha estado el problema. Muchas gracias por anticipado
Hola chicos, perdón por tardar en contestar. Si os da problemas el plugin probar a borrarlo por ftp y borrar las bases de datos del plugin para que todo vuelva a la normalidad.
Y repito, bloquear países en WordPress es una media que no debemos poner a lo loco, únicamente es necesaria si tenemos demasiados ataques a nuestra web de un país en concreto.
Super post !!!!!!!! thanks
IP Geo Block no funciona, deja pasar a los atacantes como si no estuviera instalado
Mi problema es que estoy recibiendo un montón de trafico directo desde estados unidos. Trafico con porcentaje de rebote de 99% y tiempo medio de estancia en la web de menos de 1 segundo. Por eso me estoy plateando bloquear EEUU pero claro, como dices en tu post puede ser que bloquee a Google y eso no mola
Al menos que no estés bajo un ataque, los bots que vienen de EEUU suelen ser los bots de todo tipo de herramientas y servicios que utilizamos en una web y que tienen sus servidores en EEUU incluido Google, por ejemplo, bots de rastreo y de herramientas que analizan tu web, bots de web RSS, incluso algunos plugins de caché usan bots para precargar la caché.
No son maliciosos, pero hay que tenerlos en cuenta y saber que van a aparecer en las estadísticas de Google Analytics aunque puedes filtrarlos para tener una visión más real del tráfico de usuarios real.
Excelente post. Muy productivo, Saludos desde colombia.