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).
Lo intentaré de inmediato. ¿Cómo pude pasarme esto ?
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.
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:
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.
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.
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?
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.
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?
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).
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.
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
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.