Dnscrypt-proxy
- DNSCrypt-proxy
dnscrypt-proxy
- Um 'proxy' flexível com cifragem de DNS
- Criador:Frank Denis e outros
- Licença:ISC
O DNSCrypt-proxy é um 'proxy' flexível compatível com protocolos modernos de cifragem de DNS como o DNSCrypt v2, DNS-over-HTTPS, Anonymized DNSCrypt e ODoH (Oblivious DoH). Utilizado com a função de prevenir o sequestro de DNS, compara assinaturas cifradas para verificar a autenticidade das respostas do servidor de DNS escolhido.
O que é DNS?
É uma base de dados globalmente distribuída que mapeia nomes a valores. É utilizada constantemente por todas as aplicações que se comunicam através da Internet ou redes privadas. Tipicamente traduz nomes como www.google.com
para valores IP como 216.58.199.36
para que os dispositivos possam saber que caminho seguir para comunicar-se.
Mas qual é o problema?
Originalmente, o protocolo DNS não incluía qualquer cifragem ou mecanismo de autenticação. Qualquer dispositivo entre o cliente e o servidor DNS podia monitorizar ou interferir no tráfego de dados, sem que o cliente o pudesse saber. Atacantes numa rede local podem abusar disso e conduzir ataques regulares. Mais recentemente, descobriu-se que servidores DNS maliciosos estavam a ser utilizados massivamente por 'malwares'.
Funcionalidades
- Cifragem de tráfego e autenticação de DNS. Suporta DNS-over-HTTPS (DoH) usando TLS 1.3 e QUIC, DNSCrypt, Anonymized DNS e ODoH
- O endereço IP do cliente pode se ocultado usando Tor, 'proxies' SOCKS ou repetidores Anonymized DNS
- Monitorização das chamadas DNS, com ficheiros de registo separados para chamadas suspeitas e regulares
- Filtragem: boqueio de publicidade, 'malware', e outros conteúdos indesejados. Compatível com todos os serviços DNS
- Filtragem baseada em tempo, com uma agenda semanal flexível
- Redirecionamento transparente de domínios específicos para servidores específicos
- Armazenamento temporário de DNS, para reduzir a latência e aumentar a privacidade
- Bloqueio local de IPv6 para reduzir a latência em redes IPv4
- Balanceio de carga: dado um grupo de servidores, o dnscrypt-proxy mede automaticamente e mantém um registo da velocidade destes, balanceando o tráfego entre os mais velozes disponíveis
- Atualização automática da lista de servidores em segundo plano
- Pode forçar as ligações de saída a usarem TCP
- Compatível com DNSSEC
- Inclui um servidor local DoH para suportar ECH (ESNI)
Instalação
Abra o YaST --> Gerenciamento de Software. Procure pelo pacote "Dnscrypt-proxy". Marque a caixa para instalação (v verde). Clique no botão Aceitar para iniciar a instalação.
Uso
Standard test
e aguarde a conclusão do teste. Os ISPs geralmente utilizam servidores DNS locais identificáveis pelo nome.Há várias formas de o utilizar e assegurar-se de que arranque junto ao sistema. Consulte o ficheiro /usr/share/doc/packages/dnscrypt-proxy/README.openSUSE
para mais informação.
Utilizei a opção E do dado ficheiro. Para tal, há de instalar o pacote openresolv
. Escreva no terminal:
sudo zypper in openresolv
Será feita uma cópia de segurança do ficheiro /etc/resolv.conf
, alterada a sua informação inicial e criado um ficheiro /etc/resolvconf.conf
. Neste, adicione a opção de otimização utilizada pelo dnscrypt-proxy. Escreva no terminal:
sudo nano /etc/resolvconf.conf
e adicione no fim do ficheiro a linha:
resolv_conf_options=edns0
Guarde as alterações e feche o ficheiro.
Temos de configurar o network-manager para não reescrever o /etc/resolv.conf
. Escreva no terminal:
sudo nano /etc/sysconfig/network/config
Procure pela linha NETCONFIG_DNS_POLICY="auto"
e apague o “auto”, ficando então NETCONFIG_DNS_POLICY=""
. Guarde as alterações e feche o ficheiro.
Há um ficheiro de configuração para a personalização da escolha dos servidores DNS. Por omissão, servidores censurados (para controlo parental, bloqueio de publicidade etc) e que suportam DNSSEC (extensão de segurança para DNS que teve adoção limitada, sendo incompatível com alguns dispositivos e aplicativos) são desativados. Caso queria mudar tal configuração, escreva no terminal:
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Altere a linha require_dnssec = false
para require_dnssec = true
para utilizar servidores com DNSSEC.
Altere a linha require_nofilter = true
para require_nofilter = false
para utilizar servidores censurados.
Para otimização, se usa uma ligação só IPv4, altere block_ipv6 = false
para block_ipv6 = true
.
Há uma lista atualizada automaticamente de todos os servidores DNS disponíveis e suas opções de utilização em DNScrypt & DOH servers. Finalmente, inicie o dnscrypt-proxy com:
systemctl start dnscrypt-proxy-resolvconf.service
E ative o serviço com:
systemctl enable dnscrypt-proxy-resolvconf.service
Verificação
Há diversas formas para verificar se o serviço está a correr bem na máquina explicadas em Verificando - DNSCrypt. Optei pela verificação com o sítio DNS leak test onde se pode visualizar os servidores DNS utilizados pelo navegador. Basta clicar em Standard test
.
Se fez o teste anteriormente, notará a mudança nos servidores DNS utilizados.