Estou ajudando a administrar um site que foi bloqueado por motivos políticos pela mesma agência russa que já tentou bloquear o Telegram (RosKomNadzor). Esta não é a primeira vez que isso acontece, e anteriormente apenas mudaríamos o domínio, mas isso tem suas próprias implicações e perda de leitores.
Eles estão bloqueando apenas o nome de domínio, não o IP (estamos usando Cloudflare de qualquer maneira). Estamos usando HTTPS, mas os ISPs ainda conseguem, de alguma forma, obter as informações de DNS sobre uma solicitação vinda de seus clientes. Tecnicamente, podemos sugerir aos nossos leitores que configurem seu /etc/hosts
, mas essa não é uma opção viável.
Existe algo que possa ser feito do lado do nosso servidor para criptografar/ofuscar as informações de DNS sem que os usuários façam alterações/instalem software? Ou esperar que o DNS sobre HTTPS se torne a nossa única opção?
Da Rússia com amor.
Infelizmente, contornar a censura é melhor abordado no lado do cliente, portanto, não há muitas configurações do lado do servidor que possam ajudar com isso. Você pode aconselhar seus usuários a usar uma VPN, Tor e/ou DNS público com DNS sobre HTTPS ( RFC 8484 ) ou DNS sobre TLS ( RFC 7858 ).
Você supõe que o método de censura tem algo a ver com o DNS, mas você realmente testou isso? Você sabia que a indicação do nome do servidor (SNI, RFC 6066, 3 ) no ClientHello não é criptografada e também pode ser usada para bloquear a conexão TLS? Felizmente, o TLS Encrypted Client Hello ( draft-ietf-tls-esni-09 ) está a caminho e pode ajudar com isso. Mais leituras sobre o assunto:
( Geralmente não adicionamos saudações às nossas postagens de perguntas e respostas, mas sua referência 007 é dourada! )
A maioria dos provedores russos implementam solicitações da Inquisição interceptando o tráfego DNS e alterando-o rapidamente (e é muito fácil, pois não é criptografado), usando efetivamente o esquema man-in-the-middle, por exemplo, todos os ISPs afiliados à Ertelecom são usando este método. Nesse caso (que pode ser facilmente determinado apenas comparando o IP resolvido do lado do cliente versus o IP real) nada pode ser feito do lado do servidor: mesmo que você implemente o DNSSEC e as respostas assinadas comecem a fluir, toda essa técnica funcionará está quebrando completamente a pilha de resolução de nomes do lado do cliente, quando se trata de seu domínio (no entanto, isso é puramente uma teoria, mas você pode facilmente provar que estou errado; se estiver).
Infelizmente, todas as soluções disponíveis para contornar o DNS MitM precisam ser aplicadas ao lado do cliente, não ao do servidor.
Sabe-se que a censura imposta pelo governo russo usa falsificação de DNS (é assim que alguns sites pornográficos são bloqueados).
Eles também usam filtros de pacotes baseados em endereço/intervalo IP (é assim que eles tentaram e falharam em bloquear o Telegram).
Uma ideia: nome de domínio baseado em tempo!
RosComNadzor é uma agência governamental, então eles devem ser um pouco lentos para responder.
DOS-los! Exemplo:
etc...
Você precisará de um novo nome de domínio toda semana (US$ 10) e seus adoráveis burocratas RosKomNadzor não são muito ativos.
Seus usuários devem se lembrar de adicionar a data do último domingo ao nome de domínio. Se as coisas piorarem, você também pode ir mais rápido e um pouco mais caro (você também pode negociar um preço melhor para tantos domínios).
Em algum momento, eles também podem adaptar seus procedimentos ao seu esquema. Você tem que mudá-lo apenas um pouco.
Disponibilize seu conteúdo através do IPFS! https://ipfs.io/ É uma versão descentralizada da internet. Onde cada cliente que visita seu site, armazena cópias do seu conteúdo em sua máquina.
Não, porque as solicitações de DNS são processadas por servidores de nomes dedicados e, como tal, não são roteadas pelo seu servidor web.
Bastante; O DNS-over-HTTPS foi projetado para aumentar a privacidade, impedir a censura e impedir ataques como os que você descreveu. Ele é suportado por versões recentes do Google Chrome e Firefox (pelo menos na área de trabalho), portanto, em teoria, a maioria dos seus usuários já deve poder usá-lo.
Você poderia fazer o que o Telegram fez. Requer fazer um aplicativo móvel fora do site. Então você pode alterar seu endereço IP sempre que bloqueado e enviar o novo para o aplicativo por uma notificação push, que é um canal que não pode ser inspecionado e censurado, apenas desabilitado completamente, o que o RKN não está disposto a fazer.
Ignorando a censura de DNS
Adquira várias dúzias de nomes de domínio de diferentes registradores, ou mais, se puder pagar. Configure HTTPS e CDN em todos esses domínios. Certifique-se de que seu site aceite todos esses domínios nas configurações do host virtual. Dê a diferentes lotes de usuários lugares diferentes para aprender os nomes de domínio alternativos em sites compartilhados como github e gitlab em contas diferentes. Isso significa que se um dos usuários for uma toupeira, apenas uma porcentagem de seus usuários será bloqueada.
Este método não é perfeito, nenhuma solução única será. Talvez a censura seja mais lenta do que sua base de usuários pegando os novos nomes de domínio.
Como outros mencionaram, você também pode incentivar seus usuários a utilizar o Tor se não estiver bloqueado em seu país. Isso significa que você teria que permitir o Tor em suas configurações de CDN.