Hoje falarei a respeito de uma ferramenta de encriptação de DNS chamada dnscrypt-proxy. Essa solução implementa através de software o protocolo DNSCrypt, que é responsável por autenticar e criptografar a comunicação entre o computador do usuário e o servidor DNS ao qual ele está conectado.
Por que utilizar isso em meu sistema?
Porque por padrão, o protocolo DNS não criptografa as respostas enviadas aos clientes conectados a ele, ou seja, a atividade de muitas pessoas está sendo monitorada na internet e ao mesmo tempo que isso acontece, elas também estão desprotegidas contra ataques do tipo spoofing e man-in-the-middle.
Ao usar essa implementação do DNSCrypt, você garante que pelo menos sua atividade na internet não fique a fácil acesso de pessoas não autorizadas. Uma vez que um método de criptografa será implementado sobre esse tipo de comunicação.
Abaixo mostrarei como instalar e configurar o dnscrypt-proxy no Manjaro Linux.
Obs 1: Caso você já possua uma ferramenta de DNS caching como o unbound por exemplo, você pode removê-la e trabalhar apenas com o dnscrypt-proxy.
Obs 2: Por padrão, o dnscrypt-proxy utiliza a porta 53, então se outro serviço estiver usando essa porta, é ideal que você o remova de lá.
Obs 3: Para realizar as etapas a seguir, você precisa estar logado como root no sistema.
Instalação
Primeiramente sincronize os repositórios do Manjaro Linux
- Código: Selecionar todos
# pacman -Syy
E depois sincronize o dnscrypt-proxy
- Código: Selecionar todos
# pacman -S dnscrypt-proxy
Antes de iniciar o dnscrypt-proxy, é preciso editar alguns arquivos no sistema. Comece removendo o
/etc/resolv.conf
. Antes faça um backup dele da seguinte forma:- Código: Selecionar todos
# cp /etc/resolv.conf /etc/resolv.conf.bkp
Em seguida remova-o do sistema
- Código: Selecionar todos
# rm -f /etc/resolv.conf
Depois copie o arquivo
/etc/dnscrypt-proxy/dnscrypt-proxy.toml
para /usr/bin/
da seguinte forma:- Código: Selecionar todos
# cp /etc/dnscrypt-proxy/dnscrypt-proxy.toml /usr/bin
Caso você não utilize IPv6 na sua rede, abra o arquivo recém copiado (
/usr/bin/dnscrypt-proxy.toml
) com o editor de sua preferência e altere a linha abaixo:- Código: Selecionar todos
listen_addresses = ['127.0.0.1:53', '[::1]:53']
Nessa linha você removerá o item
'[::1]:53'
, resultando em:- Código: Selecionar todos
listen_addresses = ['127.0.0.1:53']
Em seguida, crie um novo arquivo
/etc/resolv.conf
com o conteúdo:- Código: Selecionar todos
nameserver 127.0.0.1
options edns0 single-request-reopen
E o "tranque" para que outros softwares não o alterem
- Código: Selecionar todos
# chattr +i /etc/resolv.conf
Para "destrancar" o arquivo (caso necessário), use
- Código: Selecionar todos
# chattr -i /etc/resolv.conf
Agora que configurou os arquivos necessários, teste o dnscrypt-proxy, primeiro configurando-o para iniciar junto com o Manjaro:
- Código: Selecionar todos
# systemctl enable dnscrypt-proxy.service
Depois iniciando o serviço própriamente dito:
- Código: Selecionar todos
# systemctl start dnscrypt-proxy.service
Chegou até aqui sem erros? Então resolva seu primeniro endereço:
- Código: Selecionar todos
# dnscrypt-proxy -resolve manjaro-linux.com.br
O resultado desse comando retornará o nome, o endereço IP e o TXT Records do site juntamente com o endereço IP do servidor que lhe serviu os dados.
Mais opções
Para ver a versão atual do software
- Código: Selecionar todos
# dnscrypt-proxy -version
Checar se o arquivo de configuração está ok
- Código: Selecionar todos
# dnscrypt-proxy -check
Resolver um endreço na web:
- Código: Selecionar todos
# dnscrypt-proxy -resolve qualquersite.com
Se você quiser, é possível controlar o serviço pelo próprio dnscrypt-proxy em vez de fazer isso pelo systemctl. Como? Muito fácil, instale o módulo de serviços
- Código: Selecionar todos
# dnscrypt-proxy -service install
E a partir dele controle as ações conforme exemplo abaixo:
- Código: Selecionar todos
# dnscrypt-proxy -service start
# dnscrypt-proxy -service stop
# dnscrypt-proxy -service restart
O Manjaro irá lhe exibir as opções que podem ser utilizadas nessa ferramenta com o comando abaixo:
- Código: Selecionar todos
# dnscrypt-proxy --help
Além das opções do terminal, existe o arquivo de configuração (
/usr/bin/dnscrypt-proxy.toml
) que pode ser alterado conforme sua necessidade. Nele é possível:- Habilitar e desabilitar o log da aplicação;
- Habilitar e desabilitar o IPv6;
- Habilitar e desabilitar o cache;
- Definir o tamanho do cache;
- Definir blacklists.
E muitas outras coisas...
Não gostei, quero voltar!
Caso não queira continuar, siga o passo a passo a seguir para reverter as alterações.
Desabilite o dnscrypt-proxy com o systemctl
- Código: Selecionar todos
# systemctl disable dnscrypt-proxy.service
Volte o arquivo
/etc/resolv.conf
ao original- Código: Selecionar todos
# rm -f /etc/resolv.conf && cp /etc/resolv.conf.bkp /etc/resolv.conf
Remova o dnscrypt-proxy do sistema
- Código: Selecionar todos
# pacman -Rsn dnscrypt-proxy
Conclusão
Esse foi mais um tutorial sobre uma das inúmeras ferramentas disponibilizadas aos usuários GNU/Linux, Espero que esse texto possa ajudar alguém, e caso haja alguma informação errada ou incompleta, fiquem a vontade para comentar.
Referências
Descrição do protocolo DNS
https://www.ietf.org/rfc/rfc1035.txt
Descrição do protocolo DNSCrypt
https://github.com/DNSCrypt/dnscrypt-protocol/blob/master/DNSCRYPT-V2-PROTOCOL.txt
FAQ no site oficial do DNSCrypt
https://dnscrypt.info/faq/