Dnscrypt, securizando el tráfico DNS

El servicio DNS sirve para encontrar máquinas en internet, normalmente la configuración para ese tráfico se nos asigna directamente desde el router que tenemos en casa, si lo hemos configurado por dhcp.

En un sistema linux, además de conectarnos a la red, al utilizar dhcp normalmente se reescribe el fichero /etc/resolv.conf que se encarga de contener las ips de los servidores dns.

Podemos cifrar este tráfico para hacer invisible cara a posibles ataques Man in the middle y securizar de esta manera nuestros Request (peticiones de información) a los servidore dns que soportan dnscrypt

Para ello es necesario instalar dnscrypt, un proxy que conectará nuestra máquina con otros host o resolvers.

Antes de instalar dnscrypt, es necesario instalar libsodium descargandolo desde aquí . Luego descargamos dnscrypt desde aquí y lo instalamos.

Un script de autoinstalación para los más vagos. https://raw.githubusercontent.com/janbrennen/dnscrypt-autoinstall/master/dnscrypt-autoinstall.sh

Un script para incluirlo en el /etc/init.d que pondra a escuchar dnscrypt-proxy en la dirección 127.0.0.2 y puerto 53.

#!/bin/sh
# This is for the file /etc/init.d/dnscrypt
### BEGIN INIT INFO
# Provides:          dnscrypt
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: DNSCrypt for OpenDNS
# Description:       Launch the dnscrypt to communicate with OpenDNS
### END INIT INFO
DAEMON="/usr/sbin/dnscrypt-proxy"
NAME="dnscrypt"

dnscrypt_start()
{
    echo "Starting dnscrypt"
    dnscrypt-proxy  --local-address=127.0.0.2:53 -R d0wn-im-ns1 --daemonize   
}

dnscrypt_stop()
{
    echo "Stopping dnscrypt"
    start-stop-daemon --oknodo --stop --quiet --retry=0/3/KILL/3 --exec "$DAEMON" > /dev/null
}

case "$1" in
    start)
   dnscrypt_start
   ;;
  stop)
   dnscrypt_stop
  ;;
  restart|force-reload)
   dnscrypt_stop
  dnscrypt_start
   ;;
    *)
   echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
   exit 1
   ;;
esac

exit 0

Lista de resolvers https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-resolvers.csv

Para que luego funcione hay que arcodarse de no usar el dhcp o sobreescribirá el archivo /etc/resolv.conf si bien esto seguro se puede hacer de alguna otra forma como cambiar los permisos, etc. El /etc/resolv.conf tiene que quedar asi para que todas las peticiones dns salgan por el dnscrypt-proxy:

nameserver 127.0.0.2
Compartir

6 Comentarios

Deja una respuesta a foo bar Cancelar respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax