Criando um servido de DNS-over-HTTPS (DoH)

Neste tutorial vamos aprender como criar um servidor para consultar o DNS através de HTTPS, usando o Google DNS-over-protocolo HTTPS e IETF DNS-over-HTTPS (RFC 8484).

O Google Chrome já a partir da versão 78 irá implantar o DNS-over-HTTPS (DoH), criptografando as solicitações de DNS.

Pressupõe que você tenha um servidor DNS em funcionamento (eu uso o bind9).

Estou utilizando Debian 10 (Instalação limpa) para fazer esta instalação

Também será necessário configurar o seu ambiente Golang, veja aqui como proceder

Com o Golang já preparado vamos instalar alguns pacotes necessários para compilação:

Vamos usar o projeto m13253/DNS-over-HTTPS.

Agora vamos configurar o servidor DoH, seu arquivo de configuração fica em /etc/dns-over-https/doh-server.conf
Supondo que você esteja instalando no mesmo servidor de DNS, vamos apenas alterar o upstream para usar as consultar para localhost (127.0.0.1:53).

Vamos ativa-lo na inicialização do sistema e restartar o serviço.

Verifique se o serviço esta rodando

Perfeito nosso doh-server já está rodando!

Instalação de configuração do Apache2 com um domínio virtual utilizando o Let’s Encrypt para criptografar nossa conexão HTTPs.

Vou editar a configuração padrão do servidor web, informado meu real ServerName, no exemplo “doh.remontti.com.br“, e ErrorDocument quando um IP não autorizado acessar ser redirecionado.

Faça as devidas alterações, não esqueça de alterar em Require ip para os IPs que você vai autorizar as conexões.

Por segurança recomendo remover a assinatura do servidor, para isso edite:

Para que quando alguém (autorizado) acessar seu endereço DoH não veja aquela tela Default do Apache2, vamos remover o /var/www/html/index.html e criar uma index mais legal 😛

Geramos o certificado

Agora já é possível acessar “doh.remontti.com.br” com HTTPS, faça um teste se seu domínio esta respondendo corretamente. Teste também seu HTTP2 em https://tools.keycdn.com/http2-test

Para evitar que o certificado expire faça um script e colocando ele no cron para que o mesmo renove automaticamente.

Adicione

De permissão de execução:

Adicione ao cron e restarte o cron

Altere algumas configuração no 000-default-le-ssl.conf criado pelo Let’s Encrypt para trabalhar como um proxy do nosso DoH

Adicione as entradas destacadas:

Restar o apache

Configuramos o apache para encaminhar solicitações para nosso servidor DoH. Agora vamos fazer alguns testes.
O servidor DoH retorna em formato JSON, e para testar apenas abra no seu navegador:
https://doh.remontti.com.br/dns-query?name=remontti.com.br&type=A
Ou já que você está com o terminal aberto digite:

Vai retornar:

Legal, nosso DoH esta funcionando!

Configure seu navegador
Bem, no Firefox, isso é bem fácil, entre no menu Preferências, role até o final e clique em Configurar Conexão… em seguida marque a caixa Ativar DNS sobre HTTPS selecione Personalizado e informe o endereço do seu servidor DoH https://doh.exemplo.com.br/dns-query

No linux a versão que utilizei foi uma beta, pois na estável ainda não aparecia a opção.

Já no Chrome Versão Dev 79.0.3921.0 no linux não consegui testar, pois a opção aparece como: Not available on your platform.

Agora basta navegar! E para ter certeza que ele realmente ta fazendo as consulta em seu DoH Server, verifique os logs do seu apache:


Parabéns você concluiu!

O que você vai acontecer quando o DoH estiver ativado?
Quando o DoH está ativado, você não notará nada. O Firefox e o Chrome implementaram extensos mecanismos de fallback para situações em que o DoH pode cair, como um provedor de DNS que não oferece suporte a DoH.

Quais navegadores suportam o DoH?
Por enquanto, os únicos principais navegadores programados para oferecer suporte ao DoH são o Mozilla Firefox e Chrome 78 ou superior (embora, especialmente, o Chrome para iOS e o Chrome para Linux não suportem esse recurso ainda). Resta saber se o Safari da Apple seguirá o exemplo.

Ambos os navegadores se o DoH não funcionar como planejado simplesmente retornará ao método padrão de pesquisa de DNS.

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *