quinta-feira, 11 de maio de 2017

Instalando o dnscrypt-proxy no Ubuntu e derivadas

DNScrypt é o serviço que criptografa o tráfego DNS entre o seu computador e o servidor DNS compatível, impedindo que se utilize os dados caso sejam capturados. Foi lançado pelo OpenDNS, a fim de melhorar a segurança implementada pelo DNSSEC.

O programa atua na "última milha", ou seja, a conexão entre o usuário e o provedor de serviços de internet, onde pode haver interceptação e/ou sequestro do tráfego, o monitoramento dos sites acessados, bem como se passar por esses websites.

Esclareço que esta dica não serve para o Debian e derivadas, cujos arquivos de configuração são completamente diferentes. Mostrarei aqui a configuração mais básica possível e vocês deverão pesquisar recursos mais complexos.

Em primeiro lugar, instale o resolvconf, se não estiver instalado. Abra um terminal e digite:

$ sudo apt-get install resolvconf dns-root-data

Não vou detalhar para que serve este programa. procure na internet. Reinicie seu computador. Após novo login, abra outro terminal e rode os comandos abaixo, na ordem:

$ sudo apt-get install wicd-gtk
$ sudo apt-get purge network-manager-gnome network-manager
$ sudo apt-get autoremove

Com eles desinstalamos o gerenciador de rede network-manager, que não é compatível com o recurso, atrapalhando a inicialização do dnscrypt no boot. Em seu lugar instalamos o wicd. Reinicie o computador.

Veja se a conexão a internet está ativa, para continuarmos. Use o comando ifconfig (exemplo):

$ ifconfig
enp2s0f0  Link encap:Ethernet  Endereço de HW 20:89:84:01:c9:c6  
          inet end.: 192.168.1.13  Bcast:192.168.1.255  Masc:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:40870 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:26406 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:44655775 (44.6 MB) TX bytes:2797785 (2.7 MB)
          IRQ:16 

(etc...)

O próximo passo é instalarmos o dnsmasq, serviço que armazena - em cache - as consultas DNS para de sites anteriormente visitados, melhorando a velocidade da navegação. Para mais informações, busque informações na internet.

Abra um terminal e digite:

$ sudo apt-get install dnsmasq dnsmasq-utils dnscrypt-proxy

Faça um becape do arquivo de configuração original, desta forma:

$ 
sudo mv /etc/dnsmasq.conf  /etc/dnsmaq.conf_old
$ sudo ETP /etc/dnsmasq.conf

No novo arquivo dnsmasq.conf que criamos com o Editor de Texto Preferido, coloque as linhas abaixo:

no-resolv
server=127.0.0.1#2053
proxy-dnssec

Elas são o mínimo para fazer o dnsmasq funcionar com o dnscrypt. Mas ainda não configuramos tudo que é necessário. Vá novamente para o terminal e digite:

$ sudo ETP /etc/default/dnscrypt-proxy

Faça as alterações abaixo:

ANTES
# What local IP the daemon will listen to, with an optional port.
# The default port is 53. If using systemd, this is not used and must be
# specified in dnscrypt-proxy.socket.
DNSCRYPT_PROXY_LOCAL_ADDRESS=127.0.2.1:53

# Remote DNS(Crypt) resolver.
# You can find a list of resolvers at
# /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv.
DNSCRYPT_PROXY_RESOLVER_NAME=cisco

# Extra flags to pass to dnscrypt-proxy
DNSCRYPT_PROXY_OPTIONS=""

DEPOIS
# What local IP the daemon will listen to, with an optional port.
# The default port is 53. If using systemd, this is not used and must be
# specified in dnscrypt-proxy.socket.
DNSCRYPT_PROXY_LOCAL_ADDRESS=127.0.0.1:2053

# Remote DNS(Crypt) resolver.
# You can find a list of resolvers at
# /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv.
DNSCRYPT_PROXY_RESOLVER_NAME=dnscrypt.eu-nl

# Extra flags to pass to dnscrypt-proxy
DNSCRYPT_PROXY_OPTIONS=""

O dnsmasq do Ubuntu roda no endereço 127.0.0.1, porta 53. Já o dnscrypt, no endereço 127.0.2.1 e também na porta 53. O que fizemos foi alterar os endereço/porta do segundo para 127.0.0.1, porta 2053, resolvendo o conflito.

Resta um último passo, também no terminal:

$ sudo ETP /lib/systemd/system/dnscrypt-proxy.socket

ANTES
[Socket]
ListenStream=127.0.2.1:53
ListenDatagram=127.0.2.1:53

DEPOIS
[Socket]
ListenStream=127.0.0.1:2053
ListenDatagram=127.0.0.1:2053

Essa é a mudança crucial, que altera o endereço/porta do dnscrypt, junto com as anteriores. Se chegou até aqui, revise todos os passos de forma que todos os dados alterados esteja corretos, ou o serviço não funcionará.

Agora edite o arquivo do resolvconf como mostro abaixo:

$ sudo ETP /etc/resolvconf/resolv.conf.d/base

Adicione a linha abaixo:

options edns0

Pronto, terminamos. Reinicie o computador mais uma vez. Após o login, abra um terminal e veja se os serviços dnsmasq, dnscrypt e resolvconf funcionam a contato. Veja:

DNSMASQ
$ sudo systemctl status dnsmasq
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
  Drop-In: /run/systemd/generator/dnsmasq.service.d
           └─50-dnsmasq-$named.conf, 50-insserv.conf-$named.conf
   Active: active (running) since Sáb 2017-03-04 13:20:36 BRT; 1h 24min ago
 Main PID: 946 (dnsmasq)
(etc...)

DNSCRYPT
$ sudo systemctl status dnscrypt-proxy
● dnscrypt-proxy.service - DNSCrypt proxy
   Loaded: loaded (/lib/systemd/system/dnscrypt-proxy.service; enabled; vendor preset: enabled)
   Active: active (running) since Sáb 2017-03-04 13:20:55 BRT; 1h 25min ago
     Docs: man:dnscrypt-proxy(8)
 Main PID: 772 (dnscrypt-proxy)
(etc...)
[NOTICE] Proxying from 127.0.0.1:2053 to 176.56.237.171:443
(etc...)

RESOLVCONF
$ sudo systemctl status resolvconf
● resolvconf.service - Nameserver information manager
   Loaded: loaded (/lib/systemd/system/resolvconf.service; enabled; vendor preset: enabled)
   Active: active (exited) since Sáb 2017-03-04 13:20:21 BRT; 1h 43min ago
     Docs: man:resolvconf(8)
 Main PID: 335 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/resolvconf.service

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
options edns0

Abra seu browser preferido e digite o endereço https://dnsleaktest.com/ para testar se o dnscrypt funciona. Clique em "Standard test" e aguarde:



Pronto. O dnscrypt está encriptando todo o tráfego DNS até o servidor dnscrypt.eu-nl, com o DNSSEC habilitado. De todos os servidores que encriptam seu tráfego, nem todos habilitam o este último.

Para saber quais servidores habilitam o DNSSEC abra o arquivo dnscrypt-resolvers.csv que está localizado em /usr/share/dnscrypt-proxy/, usando um editor de planilha:

$ localc /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv

A coluna "H" mostra os servidores compatíveis:


Bem, por hoje chega. Foi a maior dica que já publiquei no blog, até hoje. Mas espero que seja útil para melhorar a segurança de seu isfenicídio.

Até a próxima dica!
;-))

2 comentários:

  1. Meu caro António Silva,

    Obrigado pelo tutorial, vou colocar ele em prática ainda hoje no Xubuntu 16.04 LTS.

    Estava mesmo a precisar desta preciosa ajuda.

    Abraço,

    ARC

    ResponderExcluir