IP Location Block

Descripción

El plugin IP Location Block te permite bloquear el acceso a tu sitio dependiendo de la ubicación del visitante, a la vez que mantiene tu sitio seguro frente a ataques malintencionados. El plugin viene con métodos de protección inteligentes y potentes denominados «Prevención de vulnerabilidades de día cero de WP» y «Prevención de vulnerabilidades de metadatos de WP».

En combinación con esos métodos y con la geolocalización de direcciones IP, te sorprenderás al encontrar un cúmulo de intentos de acceso malintencionado o indeseable bloqueados en los registros de este plugin luego de varios días de instalación.

Nota: Este plugin está basado en «IP Geo Block», un plugin ya abandonado de tokkonopapa. He corregido diversos problemas y mejorado todo el código base.

Características

  • Privacidad por diseño:
    La dirección IP se encripta siempre durante el guardado en los registros / la caché. Además, puede anonimizarse y restringirse su envío a terceros como las API de geolocalización o el servicio WHOIS.

  • Immigration control:
    Access to the basic and important entrances into back-end such as wp-comments-post.php, xmlrpc.php, wp-login.php, wp-signup.php, wp-admin/admin.php, wp-admin/admin-ajax.php, wp-admin/admin-post.php will be validated by means of a country code based on IP address. It allows you to configure either whitelist or blacklist to specify the countires, CIDR notation for a range of IP addresses and AS number for a group of IP networks.

  • Zero-day Exploit Prevention:
    Unlike other security firewalls based on attack patterns (vectors), the original feature «WordPress Zero-day Exploit Prevention» (WP-ZEP) is focused on patterns of vulnerability. It is simple but still smart and strong enough to block any malicious accesses to wp-admin/*.php, plugins/*.php and themes/*.php even from the permitted countries. It will protect your site against certain types of attack such as CSRF, LFI, SQLi, XSS and so on, even if you have some vulnerable plugins and themes in your site.

  • Protección frente a intentos de acceso:
    Para impedir la piratería informática a través de XML-RPC mediante ataques de fuerza bruta y de fuerza bruta inversa, se limitará el número de intentos de acceso por IP incluso desde los países permitidos.

  • Minimiza la carga del servidor contra ataques de fuerza bruta:
    Puedes configurar este plugin como parte de los plugins imprescindibles, de tal forma que este plugin se cargue antes que los plugins regulares. Ello puede reducir la carga del servidor enormemente.

  • Prevención de descargas y subidas malintencionadas:
    Es posible bloquear solicitudes malintencionadas, como la exposición de wp-config.php o la subida de malware mediante plugins y temas vulnerables.

  • Bloquea robots y rastreadores maliciosos:
    Una lógica sencilla puede ayudar a reducir la cantidad de robots y rastreadores de origen dudoso que extraen información de tu sitio.

  • Compatibilidad con BuddyPress y bbPress:
    Puedes configurar este plugin para que un usuario registrado pueda acceder como miembro desde cualquier lugar mientras que una solicitud, ya sea un nuevo registro de usuario, recuperación de contraseña perdida, creación de nuevos debates y suscripción a comentarios puede bloquearse por país. Es apropiado para BuddyPress y bbPress para ayudar a reducir el spam.

  • Supresor de referentes para enlaces exterons:
    Cuando haces clic en un hipervínculo externo en las pantallas de administración, se eliminará el origen de referencia HTTP para eliminar cualquier huella de tu sitio.

  • Orígenes múltiples para las bases de datos de geolocalización de IP:
    En este plugin se pueden instalarbases de datos gratuitas GeoLite2 de MaxMind (requiere PHP 5.4.0 o superior) y bases de datos LITE de IP2Location. La información de las API REST de geolocalización y de WHOIS también puede estar disponible para realizar auditorías.
    Además, se pueden instalar bibliotecas de clases API dedicadas para CloudFlare y CloudFront como servicio de proxy inversa.

  • Respuesta personalizable:
    El código de respuesta HTTP puede establecerse como 403 Prohibido para denegar el acceso a las páginas, 404 No encontrado para ocultar páginas o también 200 OK para redirigir a la página superior.
    También puedes tener una página amigable (como 404.php) en el directorio de la plantilla de tu tema padre/hijo para ajustarse al diseño de tu sitio.

  • Registros de validación:
    Es posible gestionar los registros de validación para obtener información útil para auditar patrones de ataque.

  • Cooperation with full spec security plugin:
    This plugin is lite enough to be able to cooperate with other full spec security plugin such as Wordfence Security. See this report about page speed performance.

  • Extensibilidad:
    Puedes personalizar el comportamiento de este plugin usando add_filter() con el gancho de filtro predefinido. Revisa varios ejemplos prácticos en el samples.php integrado en este paquete.
    También puedes obtener la extensión IP Geo Allow de Dragan. Hace que las pantallas de administración sean estrictamente privadas con una forma más flexible que especificar las direcciones IP.

  • Prevención de autobloqueo y rescate sencillo:
    Los propietarios de la web preferirían no ser bloqueados. Este plugin evita algo tan triste, a menos que lo fuerces. Además, si llegase a ocurrir, puedes rescatarte fácilmente.

  • Desinstalación limpia:
    No quedará nada en tu preciosa base de datos mySQL después de la desinstalación. Así que no dudes en instalar y activar este plugin para probar su funcionalidad.

Atribución

Este paquete incluye la biblioteca GeoLite2 distribuida por MaxMind, disponible en MaxMind (requiere PHP 5.4.0 o superior), y también incluye las bibliotecas de código abierto de IP2Location disponibles en IP2Location.

Gracias también por proporcionar estos grandiosos servicios y estas API REST gratuitamente.

Desarrollo

Development of this plugin happens at IP Location Block

Toda colaboración siempre será bienvenida. O visita mi blog de desarrollo.

Problemas conocidos

Capturas

  • Plugin IP Location - Pestaña de ajustes
  • Plugin IP Location - Reglas de validación y comportamiento
  • Plugin IP Location - Ajustes de destino en el escritorio
  • Plugin IP Location - Ajustes de destino en la vista pública
  • Plugin IP Location - Ajustes de la API de geolocalización
  • Plugin IP Location - Ajustes de la caché de direcciones IP
  • Plugin IP Location - Pestaña de estadísticas
  • Plugin IP Location - Pestaña de registros
  • Plugin IP Location - Pestaña de búsqueda
  • Plugin IP Location - Pestaña de atribución

Instalación

Mediante el escritorio de WordPress

  1. Ve a «Añadir nuevo» en el escritorio de plugins
  2. Busca «IP Location Block»
  3. Haz clic en «Instalar ahora»
  4. Activa el plugin en el escritorio de plugins
  5. Relájate un rato y ve a «Ajustes» » «IP Location Block»
  6. Prueba el botón «Mejor configuración para el escritorio» al final de esta página de ajustes del plugin para una configuración sencilla.

Consulta en la documentación cuál es la configuración más adecuada para ti.

FAQ

¿El uso de este plugin es compatible con el RGPD?

Este plugin se ha diseñado según el principio de «Privacidad por diseño», así que puedes ejecutarlo y cumplir con el RGPD. Como protección frente a brechas de datos personales, en este plugin se encriptan las direcciones IP y también pueden anonimizarse por defecto. También proporciona algunas funciones, no solo para eliminarlas de forma manual, sino también para eliminarlas automáticamente cuando ha transcurrido un tiempo determinado.

Sin embargo, eso constituye una parte de los requerimientos de la RGPD y no garantiza que el sitio cumple con el RGPD. Consulta las notas de lanzamiento de la versión 3.0.11 para obtener más detalles.

¿Hay alguna forma de migrar desde IP Geo Block?

Sí. Si se detectan ajustes de IP Geo Block, verás la opción de migrar en Ajustes, en la sección «Ajustes del plugin». Esta copiará solo los ajustes de «IP Geo Block».

¿Este plugin es compatible con multisitio?

Sí. Puedes sincronizar los ajustes para todos los sitios de la red al activar para toda la red y activar los «Ajustes para toda la red» en la sección «Ajustes del plugin».

¿Este plugin funciona bien con plugins de almacenamiento en caché?

La respuesta corta es , especialmente para el propósito de seguridad, por ejemplo, bloqueo de accesos malintencionados mediante el escritorio y la vista pública.

Puedes encontrar la respuesta detallada y la lista de compatibilidad con plugins de caché en «Compatibilidad con plugins de caché».

Todavía tengo acceso desde países en la lista negra. ¿Funciona correctamente?

Definitivamente, SÍ.

Sometimes, a WordFence Security user would report this type of claim when he/she found some accesses in its Live traffic view. But please don’t worry. Before WordPress runs, WordFence cleverly filters out malicious requests to your site using auto_prepend_file directive to include PHP based Web Application Firewall. Then this plugin validates the rest of the requests that pass over Wordfence because those were not in WAF rules, especially you enables «Prevent Zero-day Exploit«.

Posiblemente se deba también a la precisión del código de país en las bases de datos de geolocalización. En realidad, existe el caso de que una misma dirección IP tenga un código de país diferente.

Para obtener más detalles, consulta «Todavía tengo acceso desde países en la lista negra».

¿Cómo puedo probar si este plugin funciona?

La forma más sencilla es utilizar una extensión de navegador de proxy gratuito.

Another one is to use http header browser addon.

Puedes añadir una dirección IP en la cabecera X-Forwarded-For para emular el acceso detrás del proxy. En ese caso, debes añadir HTTP_X_FORWARDED_FOR en «Claves $_SERVER para IP adicionales» en la pestaña «Ajustes».

Para obtener más detalles, revisa «Cómo probar la prevención de ataques».

¡Estoy bloqueado! ¿Qué debo hacer?

En primer lugar, busca una solución en Recuperación rápida del bloqueo en la página de acceso.

También puedes encontrar otra solución editando la sección de código «Emergent Functionality» hacia la parte final de ip-location-block.php. Este bloque de código puede activarse reemplazando /* (apertura de comentario multilínea) al comienzo de la línea por // (comentario de una sola línea), o * al final de la línea por */ (cierre de comentario multilínea).

/**
 * Invalidate blocking behavior in case yourself is locked out.
 *
 * How to use: Activate the following code and upload this file via FTP.
 */
/* -- ADD '/' TO THE TOP OR END OF THIS LINE TO ACTIVATE THE FOLLOWINGS -- */
function ip_location_block_emergency( $validate, $settings ) {
    $validate['result'] = 'passed';
    return $validate;
}
add_filter( 'ip-location-block-login', 'ip_location_block_emergency', 1, 2 );
add_filter( 'ip-location-block-admin', 'ip_location_block_emergency', 1, 2 );
// */

Ten en cuenta que deberás usar un editor apropiado.

Después de guardarlo y subirlo a /wp-content/plugins/ip-location-block/ en tu servidor mediante FTP, podrás volver a acceder como administrador.

Recuerda que debes subir el original después de la reconfiguración para desactivar esta característica.

Este artículo también puede ayudarte.

¿Debo activar todas las selecciones para mejorar la seguridad?

Sí. A grandes rasgos, la estrategia de este plugin tiene la siguiente estructura:

  • Bloqueo por país
    Bloquea solicitudes malintencionadas desde fuera de tu país.

  • Impedir vulnerabilidades de día cero
    Bloquea solicitudes malintencionadas desde tu país.

  • Forzar la carga del núcleo de WordPress
    Bloquea la consulta que no ha sido cubierta en las dos anteriores.

  • Firmas incorrectas en la consulta
    Bloquea la consulta que no ha sido cubierta en las tres anteriores.

Prueba el botón «Mejor configuración para el escritorio» al final de esta página de ajustes del plugin para una configuración sencilla. Revisa también más detalles en «La mejor práctica de ajustes de destino».

¿Este plugin valida todas las solicitudes?

Por desgracia, no. Este plugin no puede manejar las solicitudes que no son analizadas por WordPress. En otras palabras, un archivo independiente (PHP, CGI o alguno ejecutable) no relacionado con WordPress no puede ser validado por este plugin, incluso si se encuentra en el directorio de instalación de WordPress.

Sin embargo, hay excepciones: Cuando activas «Forzar la carga del núcleo de WordPress» para el Área de plugins o el Área de temas, se vuelve posible bloquear un archivo PHP independiente. A veces, este tipo de archivos presenta algunas vulnerabilidades. Esta función protege tu sitio frente a estas situaciones.

¿Cómo puedo resolver «Lo siento, tu solicitud no se puede aceptar»?

Si te encuentras con ese mensaje, consulta la documentación para resolver tu problema de bloqueo.

Si no puedes resolver el problema, házmelo saber en el foro de soporte. Tus registros en este plugin y en «Información sobre la instalación» en «Ajustes del plugin» serán de gran ayuda para resolver el problema.

¿Cómo puedo corregir el error «No se puede escribir»?

Al activar las opciones de «Forzar la carga del núcleo de WordPress, este plugin intentará configurar .htaccess en los directorios /wp-content/plugins/ y /wp-content/themes/ para proteger tu sitio frente a los ataques malintencionados de los plugins y temas OMG.

Sin embargo, algunos servidores no asignan permisos de lectura/escritura de .htaccess a WordPress. En ese caso, puedes configurar manualmente los archivos .htaccess en lugar de activar las opciones de «Forzar la carga del núcleo de WordPress».

Consulta «¿Cómo puedo corregir los problemas de permisos?» para corregir este error.

Reseñas

12 de mayo de 2023
I finally got rid of all the Russian and Chinese spam factories filling up our mail boxes daily. Great work, thank you very much.
8 de abril de 2023
I installed the plugin yesterday and added GeoIP2. Thus far it is working to keep Russia, Ukraine, and India away from my website.
4 de julio de 2022 1 respuesta
I think that the plugin is great if you install it on a simple site where you wont be using forms or active user involvement with content. Otherwise it is still buggy. It is not possible to set up exceptions. Well, it is, but they don´t work and makes this plugin useless in many cases. Other problem that came from its predecessor is, that often plugin will block your self when updating page content, forms and similar. So you have to deactivate it to do the work on the site. And finally it seems to be also abandoned, as the developer hasn't replied to any support tickets for over a month.
29 de enero de 2022
I am glad, that I found this plugin. I tested it from VPN server and it works great. And it is free. Thank you.
3 de noviembre de 2021
The official IP2Location WP plugin states that it doesn't work with cache plugins. So I almost gave up. But this plugin (IP Location Block) seems to do everything as it should even with cache, while utilizing IP2Location database (among others). I have to give it 5/5.
10 de septiembre de 2021
Thank you for providing an up to date version of IP Geo Block, and with easy migration of IP Geo Block's settings!
Leer todas las 11 reseñas

Colaboradores y desarrolladores

«IP Location Block» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

«IP Location Block» ha sido traducido a 2 idiomas locales. Gracias a los traductores por sus contribuciones.

Traduce «IP Location Block» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

1.1.5

Hot fix: Deploy procedure hotfix

1.1.4

Improvement: Codebase improvements
Improvement: Drop the IP-API.com for now until we refactor the settings and make it possible to support apis that can be used with and without key.
Bug fix: Fix array to string conversion when using the IPInfoDB provider
Improvement: Refactor the search tab backend procedure

1.1.3

Bug fix: Re-write the download_zip procedure to improve the external ip database download
Bug fix: Improved logged-in user detection when validation timing is enabled, fixes blocking issues in admin, undefined constants, etc.
Improvement: Disable restrict_api by default so the external APIs will be enabled by default

1.1.2

Hot fix: Fix issues with downloading local databases

1.1.1

Hot fix: Fix fatal error caused by removed constant still in use

1.1.0

Feature: Introducing premium IP Location Block REST API
Improvement: Introduced new design for the provider table in Settings
Improvement: Make action and filter names readable by IDEs
Bug fix: Fix a bug that prevented uninstalling the plugin
Bug fix: Fix various warnings triggered in PHP8+

1.0.7

Corrección rápida: Se corrige IPv6.php, se añade compatibilidad con PHP 7.4 y superior.

1.0.6

Corrección rápida: Se corrigen los ajustes del administrador y las páginas de estadísticas del plugin, que estaban dañados.

1.0.5

Corrección de fallo: Se corrige el bucle de la respuesta 307 Redirección.
Corrección de fallo: Se corrige la información cron errónea en los ajustes del administrador.
Corrección de fallo: Se corrigen las advertencias de clave de array no definida en PHP8.
Corrección de fallo: Se corrige el IP_LOCATION_BLOCK_AUTH no definido en algunos entornos.

1.0.4

Corrección de fallo: Se corrigieron fallos relacionados con la característica de bloqueo de ASN.
Corrección de fallo: Se vuelve a lanzar la descarga de la base de datos de ASN una vez que la característica de ASN se activa desde los ajustes.
Mejora: Se ha mejorado la migración desde el proceso heredado, se anulan los ajustes no utilizados.

1.0.3

Mejora Se añade la opción «Migrar desde IP Geo Block» si se detectan ajustes de IP Geo Block. Esto copiará los ajustes de IP Geo Block.
Mejora: Se han reemplazado las llamadas jQuery.trim() obsoletas por String.trim().
Corrección de fallo: Se corrige el error al borrar el enlace de emergencia con el botón «Borrar el enlace actual».

1.0.2

Corrección de fallo: Se corrige la opción mu-plugins.

1.0.1

Mejora: Se elimina la API de ipdata.co.
Corrección de fallo: Se ha corregido la herramienta de búsqueda.

1.0.0

Mejora: Se ha añadido compatibilidad con PHP 8.
Mejora: Se ha añadido compatibilidad con bases de datos de GeoLite2 de Maxmind con una clave API.
Mejora: Se ha reemplazado Google Maps por OSM/Leaflet.
Mejora: Se ha actualizado la biblioteca DNS2 para ser compatible con PHP 8.
Corrección de fallo: Se han corregido los errores del proveedor IP2Location. Actualización a la última versión.
Corrección de fallo: Se han corregido varios errores detectados en los registros de errores provocados por las nuevas versiones de PHP.
Corrección de fallo: Se ha corregido la API de ipinfo.io.
Corrección de fallo: Se ha corregido la API de ipdata.co.