Blog sobre seguridad informática, privacidad, anonimato, hacking ético, programación y sistemas operativos en general.

domingo, 10 de septiembre de 2017

¡Hackeando tu ISP!. Instalación y configuración de DNSCrypt en GNU/Linux.


El día de hoy les explicaremos que es DNSCrypt, para que sirve, cómo funciona y también detallaremos paso a paso cómo configurarlo en nuestro sistema GNU/Linux para de esa manera obtener una conexión encriptada, de tal manera que nisiquiera nuestro ISP (Proveedor de Servicios) pueda conocer lo que realizamos a diario.

¿Que es DNSCrypt?

DNSCrypt es un protocolo que cifra y autentica las comunicaciones entre el usuario y un servicio de resolución DNS, evita la suplantación de DNS y utiliza firmas criptográficas para verificar que las respuestas provienen del servicio de resolución DNS elegido y no han sido manipuladas.

Es un protocolo abierto, con implementaciones de código abierto y gratuito, y no está afiliada a ninguna empresa u organización. DNSCrypt está disponible para la todas las plataformas en computadoras y dispositivos móviles.

Toma el control de tu tráfico DNS

Además de implementar el protocolo, los clientes comunes de DNSCrypt le dan mucho control sobre el tráfico de DNS.

Utilice dnscrypt-proxy para:

1. Comprobar el tráfico de DNS procedente de su red en tiempo real y detecte hosts y aplicaciones comprometidos en su red.

2. Bloquee localmente anuncios, rastreadores, malware, spam y cualquier sitio web cuyos nombres de dominio o direcciones IP coincidan con un conjunto de reglas que defina.

3. Evitar que las consultas de las zonas locales no se filtren.

4. Reduzca la latencia (tiempo que se necesita para trasmitir datos de un punto a otro en una red) mediante el caché de respuestas y evite solicitar direcciones IPv6 en redes IPv4 solamente.

5. Forzar el tráfico para utilizar TCP, para enrutarlo a través de túneles TCP o simplemente usando Tor.

Instalación.

DNSCrypt se encuentra disponible en la mayoría de distribuciones GNU/Linux desde sus repositorios. Para su instalación en Debian y ArchLinux basta con ejecutar las siguiente órdenes:

ArchLinux: pacman -S dnscrypt-proxy
Debian: apt install dnscrypt-proxy

Adicionalmente puede descargarlo desde su página oficial.

Configuración

DNSCypt proporciona un archivo de configuración cómo ejemplo en /etc/dnscrypt-proxy.conf.example, pero tenga en cuenta que systemd reemplaza la opción LocalAddress con un archivo de socket.

Para configurar DNSCrypt sin problemas sigue los siguientes paso:

Selecciona un servicio de resolución DNS.

Para seleccionar un servicio de resolución DNS adecuado para ti, puedes visitar la página https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-resolvers.csv o bien desde tu archivo /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv, usando un nombre corto de los que aparecen en la columna "name" de la página mencionada.

En la imagen anterior un ejemplo de ellos sería bn-fr0.

Lo que debes hacer es cambiar tu archivo /etc/dnscrypt-proxy.conf en el apartado Resolver Settings cómo se muestra a continuación:


También es necesario configurar de manera correcta el apartado ResolversList dentro del archivo /etc/dnscrypt-proxy.conf añadiendo en seguida la ruta donde se encuentra el archivo dnscrypt-resolvers.csv. Es recomendable mantener ese archivo actualizado lo cual puedes hacer copiando, pegando y guardando dentro del archivo lo que está en este link.

También es altamente recomendable realizar lo siguiente:

1. Crea un nuevo usuario llamado dnscrypt usando el siguiente comando sudo adduser -m -N  -r -s /bin/false dnscrypt y enseguida edita el archivo /etc/dnscrypt-proxy.conf en la opción User de la siguiente manera:

User dnscrypt




Modifica el archivo /etc/resolv.conf

Después de realizar el procedimiento anterior, modifica el archivo /etc/resolv.conf reemplazando el contenido existente con:

nameserver 127.0.0.1

Sin embargo existen programas que pueden modificar este archivo, para evitarlo realizaremos los siguientes pasos:

1. Si usas Network Manager edita el archivo /etc/NetworkManager/NetworkManager.conf añadiendo las siguiente líneas:
[main]
dns=none

2. Si usas DHCP modifica el archivo /etc/dhcpcd.conf añadiendo la siguiente línea al final:

nohook resolv.conf

3. Opcionalmente para un mejor rendimiento puedes añadir la siguientes línea en /etc/resolv.conf:

options timeout:1

4. Protege el archivo /etc/resolv.conf contra escritura usando el siguiente comando:

chattr +i /etc/resolv.conf

5. Iniciamos el servicio usando el comando systemctl start dnscrypt-proxy y del mismo modo lo añadimos a la lista de servicios que inician automáticamente con el sistema mediante el comando systemctl enable dnscrypt-proxy. Con esto ya debemos tener nuestro DNSCrypt configurado y funcionando en nuestro sistema, para asegurarnos ejecutamos systemctl status dnscrypt-proxy y debemos obtener algo cómo esto:


¿Qué hago si el comando systemctl start dnscrypt-proxy no funciona (Problema comprobado en Fedora)?

La primera opción es que ejecutes directamente desde la terminal el comando dnscrypt-proxy /etc/dnscrypt-proxy.conf y con esto ya debería funcionar, pero dado que es incómodo tener que ejecutarlo siempre, vamos a crear un servicio para poder iniciarlo con systemctl y añadirlo a la lista de servicios que inician con el sistema, para eso hacemos lo siguiente:

1. Creamos el archivo /usr/lib/systemd/system/dnscrypt-proxy.service con nuestro editor de textos favorito y copiamos y pegamos el siguiente contenido:

[Unit]
Description=dnscrypt - Encrypted DNS service provided by OpenDNS
After=NetworkManager.service

[Service]
ExecStart=/usr/sbin/dnscrypt-proxy /etc/dnscrypt-proxy.conf

[Install]
WantedBy=multi-user.target


2. Guardamos el archivo y ejecutamos el comando systemctl daemon-reload. 

3. Realizamos lo descrito en el paso 5 de la sección anterior.

Finalizando.

Tip: Busca en el archivo /etc/dnscrypt-proxy.conf la opción LocalCache y asegurate que esté desmarcada y On, así:

## Cache DNS responses to avoid outgoing traffic when the same queries
## are repeated multiple times in a row.

LocalCache on
También podemos comprobar que DNSCrypt está funcionando mediante el uso del comando dig, para lo cual necesitamos instalar previamente el paquete bind-tools mediante el gestor de paquetes de su distribución, una vez instalado ejecutamos dig debug.opendns.com txt y debemos obtener algo así en la salida de la terminal:


Con esto finalizamos este post, esperamos que haya sido de su agrado.  

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot.

También puedes dejar su donación a nuestra cuenta Paypal.



0 comentarios:

Publicar un comentario