Complemento de bloqueo geográfico

Resumen: Plugin de bloqueo geográfico para Discourse

:link: GitHub: GitHub - communiteq/discourse-geo-blocking
:arrow_right: Instalar: Sigue la guía de instalación de plugins.
:moneybag: Cliente: Este plugin ha sido patrocinado por Sketchfab.

Características

Esto se puede usar para bloquear completamente el acceso a tu foro para ciertos países o redes, por ejemplo, para prevención de fraudes o para cumplir con sanciones.

El plugin utiliza la base de datos MaxMindDB que ya está disponible en Discourse.

Configuración

  • Habilita el plugin
  • Agrega todas las redes que deseas bloquear a geo_blocking_asn_blocklist. Prefija los números con AS, por ejemplo AS12345.
  • Agrega todos los países y regiones que deseas bloquear a geo_blocking_country_region_blocklist. Se aceptan los siguientes formatos:
    • Nombre completo del país (por ejemplo: Bélgica)
    • Código ISO del país (por ejemplo: JP para Japón)
    • Nombre completo del país seguido de un punto y luego el nombre de la región (por ejemplo: Suiza.Jura).

  • Si habilitas geo blocking detailed reason, el mensaje de error contendrá el país/región o la red que causó el bloqueo del usuario.

versus

  • Para probar el plugin, puedes verificar geo blocking log blocked y/o geo blocking log allowed e inspeccionar /logs en tu foro.

Para una lista completa de países y regiones compatibles, consulta list_of_countries_and_regions.txt.

Atención y Advertencias

Si los visitantes anónimos están siendo bloqueados, aún podrían obtener una versión en caché de la página de inicio durante aproximadamente un minuto.

La página de error no contiene temas “Populares” y “Recientes” porque eso filtraría contenido a un usuario bloqueado.

25 Me gusta

¡Gracias por la rápida respuesta en este proyecto, Richard!

4 Me gusta

Gracias. Muy útil.

1 me gusta

Lo intentaré de inmediato. ¿Cómo pude pasarme esto :woozy_face:?

Necesito bloquear geográficamente algunos países y AS, pero por razones obvias no puedo usar Varnish para esta tarea como con mis otros sitios. Esto soluciona ese dolor de cabeza, si es que sigue operativo.

Sí, el plugin todavía se mantiene y funciona.

2 Me gusta

Gracias por desarrollar este útil plugin, Richard.

Hice algunas modificaciones menores para adaptarlo a mi caso de uso: bloquear ciertas URL para usuarios en ciertas regiones. Lo que hice fue, en add_model_callback(:application_controller, :before_action), añadir algunas reglas de coincidencia más con request.fullpath, por ejemplo:

return unless request.fullpath.start_with?(*SiteSetting.topic_geo_blocking_exact_paths.split('|'))

Encuentro que este geo-bloqueo a nivel de URL funciona si accedo a la URL escribiéndola directamente en la barra de navegación del navegador. Sin embargo, si navego a la URL haciendo clic en ella desde la página de inicio de Discourse, esto no funciona. (pero después de presionar F5 para actualizar la página, se bloquea).

¿Podrías darme algún consejo para solucionar este problema? Gracias.

1 me gusta

Tendrías que añadir algo de código Ember que intercepte el router también.

Sin embargo, creo que tendrías que adoptar un enfoque diferente aquí. Este plugin no fue creado para un filtrado tan específico.

Probablemente funcionaría mucho mejor crear un plugin separado que tenga un mecanismo para añadir/eliminar usuarios a grupos basándose en su geolocalización, y luego podrías aprovechar la seguridad de grupo existente para restringir o permitir el acceso a partes específicas del foro.

3 Me gusta

Este es un plugin útil, pero ¿qué podría impedir que funcione como se espera? En primer lugar, el plugin se instaló sin problemas, ese no es el problema.

Configuré algunos países bloqueados y luego probé usando una VPN para acceder desde esos países, pero no encontré ninguna advertencia de bloqueo.

¿Quizás la VPN es el problema? ¿No todas las VPN son iguales?

Este plugin no se espera que bloquee VPN.

Excepto que, obviamente, bloqueará los nodos de salida de VPN en geografías bloqueadas.

1 me gusta

Ok, gracias por ese consejo. No estaba teniendo en cuenta los nodos de salida y no tengo idea de dónde estaban los nodos de salida en las conexiones, la lectura de “cuál es mi IP” era suficiente para mí, coincidía con la región/país que se estaba probando con bloqueo geográfico.

Así que, inviértelo, he bloqueado la zona en la que me encuentro y no he usado una VPN, uso un dispositivo diferente en el que puedo probar tanto la red fija como la celular, y todavía no pasa nada, no se activa el bloqueo geográfico como se esperaba al conectarme.

Por favor, entienda que un proxy, VPN o Tor siempre podrá eludir este tipo de mecanismos. El plugin no está diseñado para bloquearlos. El bloqueo geográfico se realiza por razones legales o para bloquear el acceso a visitantes casuales.

¿Hiciste esto?

1 me gusta

5 publicaciones se dividieron en un nuevo tema: Problemas con MaxMindDB

Parece que esto está usando el ícono antiguo fa-user en lugar de user. Eso da muchos errores.

2 Me gusta

Corregido, ¡gracias por informarnos!

4 Me gusta

Gracias por este gran plugin.
Si su propósito es prevenir spam o que países no deseados lleguen a páginas públicas, ¿podría para una instancia privada de Discourse prevenir también los escaneos de bots maliciosos?

1 me gusta

Un poco de ambos, pero depende. Oficialmente prohíbe países no deseados, pero no hace ninguna diferencia entre humanos y bots, probablemente.

Si tu instancia es privada (es decir, requiere inicio de sesión) entonces los bots no pueden acceder de todos modos (a menos que hayan sido especialmente diseñados para crear una cuenta e iniciar sesión).

Y ya tenemos bots que crean cuentas :man_shrugging:

Los scrapers son algo diferente, porque roban contenido. Los bots de spam que son un problema en las instancias públicas son un problema totalmente similar para los foros privados. Por eso tenemos IA escaneando contenido.

Para mí, el bloqueo geográfico elimina una buena cantidad de llamadas y inicios de sesión no deseados. Puedo usarlo porque tengo un foro totalmente finlandés [1], pero uno global no puede usarlo, por supuesto.

Cada golpe aumenta la carga para el servidor web, pero Discourse es diferente al mundo PHP. Un bot puede causar fácilmente un efecto tipo DDoS en WordPress, y entonces el bloqueo geográfico podría ser una parte de la estrategia de defensa. Pero Discourse es mucho más inmune a eso, supongo.

Pero contra los bots de spam, el bloqueo geográfico no ayuda si se deben permitir todos los países.


  1. el traductor puede cambiar esa situación, si algún día está listo para producción ↩︎

Gracias por tu respuesta, sí, efectivamente no obtendrán ningún dato, pero todavía los veo en los registros de nginx y todavía genera conexiones no deseadas, así que he instalado esta herramienta fácil para bloquear las conexiones al vps desde ciertos países antes de que llegue a la instancia de discourse de docker GitHub - friendly-bits/geoip-shell: User-friendly and versatile geoblocker for Linux

1 me gusta

Sí, es una gran herramienta. Tenga en cuenta que eso causa un bloqueo “duro”, mientras que el plugin te da un mensaje agradable y configurable que puedes mostrar a los usuarios bloqueados.

2 Me gusta