Isso pode ser usado para bloquear completamente o acesso ao seu fórum de determinados países ou redes, por exemplo, para prevenção de fraudes ou para cumprir sanções.
O plugin utiliza o banco de dados MaxMindDB que já está disponível no Discourse.
Configuração
Habilite o plugin
Adicione todas as redes que você deseja bloquear a geo_blocking_asn_blocklist. Prefixe os números com AS, por exemplo, AS12345.
Adicione todos os países e regiões que você deseja bloquear a geo_blocking_country_region_blocklist. Os seguintes formatos são aceitos:
Nome completo do país (por exemplo: Bélgica)
Código ISO do país (por exemplo: JP para Japão)
Nome completo do país seguido por um ponto e depois o nome da região (por exemplo: Suíça.Jura).
Vou tentar isso imediatamente. Como pude perder isso
Preciso bloquear geograficamente alguns países e AS, mas por razões óbvias não posso usar o Varnish para esta tarefa como com meus outros sites. Isso resolve essa dor de cabeça, se ainda estiver operacional.
Obrigado por desenvolver este plugin útil, Richard.
Fiz algumas modificações menores para adaptá-lo ao meu caso de uso: bloquear URLs específicas para usuários em certas regiões. O que fiz foi, em add_model_callback(:application_controller, :before_action), adicionar mais algumas regras de correspondência com request.fullpath, por exemplo:
Descobri que este bloqueio geográfico em nível de URL funciona se eu acessar a URL digitando-a diretamente na barra de navegação do navegador. No entanto, se eu navegar para a URL clicando nela na página inicial do Discourse, isso não funciona. (mas depois de pressionar F5 para atualizar a página, ela é bloqueada).
Você poderia me dar algum conselho para corrigir este problema? Obrigado.
Você precisaria adicionar algum código Ember que também interceptasse o roteador.
No entanto, acho que você precisaria adotar uma abordagem diferente aqui. Este plugin não foi criado para uma filtragem tão específica.
Provavelmente funcionaria muito melhor criar um plugin separado que tenha um mecanismo para adicionar/remover usuários a grupos com base em sua geolocalização, e então você poderia aproveitar a segurança de grupo existente para restringir ou permitir o acesso a partes específicas do fórum.
Ok, obrigado pela dica. Eu não estava levando em conta os nós de saída e não tenho ideia de onde os nós de saída estavam nas conexões, a leitura do “qual meu IP” foi suficiente para mim, correspondeu à região/país que estava sendo testado para bloqueio geográfico.
Então, inverta, bloqueei a zona da zona em que estou localizado e não usei uma VPN, usei um dispositivo diferente onde posso testar a rede fixa e celular, e ainda nada acontece, nenhum bloqueio geográfico entra em vigor como esperado ao conectar.
Por favor, entenda que um proxy, VPN ou Tor sempre será capaz de contornar esse tipo de mecanismo. O plugin não deve bloqueá-los. O bloqueio geográfico é feito por razões legais ou para bloquear o acesso de um visitante casual.
Obrigado por este ótimo plugin.
Se o propósito é prevenir spam ou países indesejados de acessar páginas públicas, ele poderia também prevenir scans de bots maliciosos para uma instância privada do Discourse?
Se sua instância for privada (ou seja, exigir login), os bots não poderão acessá-la de qualquer maneira (a menos que tenham sido especialmente criados para criar uma conta e fazer login).
Scrapers são uma coisa diferente, porque eles roubam conteúdo. Bots de spam que são um problema em instâncias públicas são um problema totalmente semelhante para fóruns privados. É por isso que temos IA escaneando conteúdo.
Para mim, o bloqueio geográfico corta uma boa quantidade de chamadas e logins indesejados. Posso usá-lo porque tenho um fórum totalmente finlandês [1], mas um global não pode usá-lo, é claro.
Cada “knocker” aumenta a carga para o servidor web, mas o Discourse é diferente do mundo PHP. Um bot pode facilmente causar um efeito do tipo DDoS no WordPress, e então o bloqueio geográfico pode ser uma parte da estratégia de defesa. Mas o Discourse é muito mais imune a isso, eu acho.
Mas contra bots de spam, o bloqueio geográfico não ajuda se todos os países precisarem ser permitidos.
o tradutor pode mudar essa situação, se estiver pronto para produção um dia ↩︎
Obrigado pela sua resposta, de fato eles não receberão nenhum dado, mas eu ainda os vejo nos logs do nginx e eles ainda geram conexões indesejadas, então instalei esta ferramenta fácil para banir conexões para o vps de certos países antes mesmo que cheguem à instância do discourse do docker GitHub - friendly-bits/geoip-shell: User-friendly and versatile geoblocker for Linux
Sim, essa é uma ótima ferramenta. Observe que isso causa um bloqueio “rígido”, enquanto o plugin lhe dá uma mensagem agradável e configurável que você pode mostrar aos usuários bloqueados.