Plugin de bloqueio geográfico

Resumo: Plugin de Geo Bloqueio para Discourse

:link: GitHub: GitHub - communiteq/discourse-geo-blocking
:arrow_right: Instalar: Siga o guia de instalação de plugins.
:moneybag: Cliente: Este plugin foi patrocinado pela Sketchfab.

Funcionalidades

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).

  • Se você habilitar geo blocking detailed reason, a mensagem de erro conterá o país/região ou rede que causou o bloqueio do usuário.

versus

  • Para testar o plugin, você pode verificar geo blocking log blocked e/ou geo blocking log allowed e inspecionar os /logs do seu fórum.

Para uma lista completa de países e regiões suportados, veja list_of_countries_and_regions.txt.

Atenção e Observações

Se visitantes anônimos forem bloqueados, eles ainda poderão ver uma versão em cache da página inicial por cerca de um minuto.

A página de erro não contém tópicos “Populares” e “Recentes”, pois isso vazaria conteúdo para um usuário bloqueado.

25 curtidas

Obrigado pela rápida conclusão deste projeto, Richard!

4 curtidas

Obrigado. Muito útil

1 curtida

Vou tentar isso imediatamente. Como pude perder isso :woozy_face:

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.

Sim, o plugin ainda é mantido e está funcionando.

2 curtidas

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:

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

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.

1 curtida

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.

3 curtidas

Este é um plugin útil, mas o que pode impedir que ele funcione como esperado? Primeiro, o plugin foi instalado sem problemas, esse não é o problema.

Configurei alguns países bloqueados e depois testei usando uma VPN para acessá-lo por meio desses países, mas não encontrei avisos de bloqueio.

Talvez a VPN seja o problema. Nem todas as VPNs são iguais?

Este plugin não deve bloquear VPNs.

Exceto que, obviamente, ele bloqueará os nós de saída de VPN em geografias bloqueadas.

1 curtida

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.

Você fez isso?

1 curtida

5 posts foram divididos em um novo tópico: Problemas com MaxMindDB

Parece que isso está usando o ícone fa-user antigo em vez de user. Isso causa muitos erros.

2 curtidas

Corrigido, obrigado por relatar!

4 curtidas

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?

1 curtida

Um pouco dos dois, mas depende. Oficialmente ele bane países indesejados, mas não faz diferença entre provavelmente humanos e bots.

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).

E já temos bots que criam contas :man_shrugging:

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.


  1. 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

1 curtida

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.

2 curtidas