DNSCrypt (Português)
DNSCrypt é um software que criptografa o tráfico DNS entre o usuário e o provedor DNS reverso e previne ataques de espionagem, falsificação ou man-in-the-middle.
Contents
Instalação
Instale dnscrypt-proxy dos repositórios oficiais.
Configução
Por padrão, dnscrypt-proxy é pré-configurado em /etc/conf.d/dnscrypt-proxy
e serve de parâmetro de configuração para dnscrypt-proxy.service
para aceitar requisições em 127.0.0.1
para um servidor OpenDNS. Veja esta lista de servidores DNS reverso para alternativas.
Com esta configuração será necessário alterar seu arquivo resolv.conf
e alterar sua atual lista de DNS reverso por localhost:
nameserver 127.0.0.1
Você deve prevenir que outros programas reescrevam-no, veja resolv.conf#Preserve DNS settings (em inglês) para detalhes.
Iniciando
Disponível como um serviço systemd: dnscrypt-proxy.service
Dicas
DNSCrypt com cache DNS local
É recomendado executar DNSCrypt com cache DNS, caso contrário cada requisição será enviada ao servidor DNS reverso. Importante observar que se o Domínio mudar de endereço durante o tempo de vida do cache o registro local estará desatualizado. Abaixo temos dois exemplos de configuração para Unbound e dnsmasq.
Configuração para Unbound
Configure Unbound e adicione as seguintes linhas no fim da seção server
em /etc/unbound/unbound.conf
:
do-not-query-localhost: no forward-zone: name: "." forward-addr: 127.0.0.1@2053
Inicie o serviço systemd unbound.service
. Então configure DNSCrypt para combinar o novo IP e porta forward-zone
do Unbound em /etc/conf.d/dnscrypt-proxy
:
DNSCRYPT_LOCALIP=127.0.0.1 DNSCRYPT_LOCALPORT=2053
Reinicie dnscrypt-proxy.service
e unbound.service
para que as modificações tenham efeito.
Configuração para dnsmasq
Configure dnsmasq como cache local DNS. Segue configuração básica:
/etc/dnsmasq.conf
no-resolv server=127.0.0.2#2053 listen-address=127.0.0.1
Se você configurou DNSCrypt para usar DNS reverso com validação DNSSEC habilitada, certifique de habilitar, também, em dnsmasq:
/etc/dnsmasq.conf
proxy-dnssec
Configure DNSCrypt DNSCRYPT_LOCALIP
apontando para o servidor dnsmasq 127.0.0.2
e DNSCRYPT_LOCALPORT
para sua respectiva porta (também no servidor dnsmasq) #2053
:
/etc/conf.d/dnscrypt-proxy
DNSCRYPT_LOCALIP=127.0.0.2 DNSCRYPT_LOCALPORT=2053
Reinicie dnscrypt-proxy.service
e dnsmasq.service
para que as modificações tenham efeito.
Enable EDNS0
Extension Mechanisms for DNS (inglês) que, dentre outras coisas, permite a um cliente especificar o tamanho de um pacote de resposta sobre UDP.
Adicione o que se segue ao seu arquivo /etc/resolv.conf
:
options edns0
Você talvez deseje adicionar o seguinte argumento a dnscrypt-proxy:
--edns-payload-size=<bytes>
O tamanho padrão seria 1252 bytes, com valores até 4096 bytes com suposta segurança.. Um valor inferior ou igual a 512 bytes desabilita este mecanismo ao menos que o cliente envie um pacote com um seção OPT especificando o tamanho do pacote.
Teste EDNS0
Faça uso da ferramenta DNS Reply Size Test Server, use dig, uma ferramenta de linha de comando disponível com o pacote dnsutils[broken link: replaced by bind-tools] dos repositórios oficiais, para emitir uma consulta TXT para o nome rs.dns-oarc.net:
$ dig +short rs.dns-oarc.net txt
Com suporte ao EDNS0, a saída seria similar a isto:
rst.x3827.rs.dns-oarc.net. rst.x4049.x3827.rs.dns-oarc.net. rst.x4055.x4049.x3827.rs.dns-oarc.net. "2a00:d880:3:1::a6c1:2e89 DNS reply size limit is at least 4055 bytes" "2a00:d880:3:1::a6c1:2e89 sent EDNS buffer size 4096"