viernes, 21 de noviembre de 2014

Instalando DNSCrypt con OpenDNS en Debian

Hace ya mucho tiempo atrás vengo usando los DNS de OpenDNS, en un principio solo cambié los DNS, esto lo hacía editando el archivo "dhclient.conf", tiempo después creé un registro en la página de OpenDNS y utilizando ddclient mantenía actualizada la ip para un poco más de seguridad y mejores resultados.

Más tarde apareció DNSCrypt que cifra el contenido DNS entre el computador y los servidores DNS, de entrada ofrecían un paquete .deb para instalar, luego este ya no estuvo disponible y tocaba compilar, no era ni difícil ni mucho menos, tampoco hacerlo andar, aunque ahora cuesta un poco más que antes sigue siendo relativamente fácil utilizarlo.

Para comenzar decir que para compilar deben tener instalado ciertas herramientas y dependencias como por ejemplo gcc, g++, automake, make, libtool y quizás algunos otros más que olvidé (esto para los que no han compilado nada antes).

Lo primero es descargar "libsodium", sin esta no podemos compilar DNSCrypt ya que depende de ella.
Descargar libsodium

Descargamos la última versión "libsodium-1.0.1.tar.gz" casualmente lanzada hoy 21/12/2014 (: la descomprimimos y procedemos a compilar.

Esto se puede hacer de la manera tradicional pero para que quede un poco mejor les voy a recomendar un simple script que algunas veces viene en algunas aplicaciones y simplemente lo modifiqué para usarlo, lo llamaremos "prepare", dentro lleva lo siguiente:

#!/bin/sh if autoreconf --install && ./configure \ --prefix=/usr \ --bindir=/usr/bin \ --sbindir=/usr/sbin \ --libdir=/usr/lib \ --includedir=/usr/include \ --mandir=/usr/share/man \ --docdir=/usr/share \ --enable-pie "$@" then echo echo "The DNSCrypt source code was successfully prepared and configured." echo "Type make && make install to build and install DNSCrypt." echo else echo echo "Some part of the preparation process failed." echo "Please refer to doc/devel-notes.txt for details." echo exit 1 fi

Esto fuerza por ejemplo que las librerías, binarios, manuales, etc, se copien donde deben ir y no en otro sitio, por ejemplo los binarios se instalan por defecto en /usr/local/bin y no en /usr/bin, esto lo corrige.

Cuando tengamos el script prepare listo le damos permisos de ejecución y lo copiamos dentro del la carpeta descomprimida de libsodium, abrimos un terminal dentro de la carpeta y ejecutamos el script "./prepare", con esto se debería de poner en marcha la configuración inicial, si todo sale bien y no hay errores seguimos con "make", con esto se debería compilar libsodium si no hay errores, una ves compilado en ves de instalar directo al disco "recomiendo utilizar checkinstall" ya que crea un paquete .deb bastante sencillo el cual podemos instalar y desinstalar con facilidad.

Para usarlo se debe tener instalado checkinstall además revisar el archivo de configuración del mismo "/etc/checkinstallrc" donde nos fijamos si la autoinstalación de los paquetes está activada, esto para que no lo instale de manera automática al crear el paquete .deb, revisamos que estén de esta manera las siguientes lineas:

# Install the package or just create it? INSTALL=0

Ahora si, escribimos "su" para entrar como root y luego seguimos con "checkinstall", esto nos preguntará si queremos agregar algunos comentarios, por ejemplo presionamos "Y" y escribimos algo; libsodium bla bla "enter" es una libreria bla bla "enter" ya podemos seguir, pregunta si deseamos continuar "enter" de nuevo y listo, se crea un paquete .deb dentro de la carpeta.

Lo instalamos y luego ejecutamos ldconfig -v.

Ahora descargamos DNSCrypt:
Descargar DNSCrypt

El procedimiento es el mismo que con "libsodium", es decir, descomprimimos y usamos el mismo script prepare, "./prepare", "make", "su", "checkinstall".

Instalamos el paquete .deb y ya tenemos DNSCrypt listo para usar, ahora falta configurarlo, para eso abrimos el archivo "/etc/dhcp/dhclient.conf" y lo modificamos para dejar las siguientes líneas de esta manera:

#send host-name "andare.fugue.com"; send host-name = gethostname(); #send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; #send dhcp-lease-time 3600; #supersede domain-name "fugue.com home.vix.com"; prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers, # domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers; #require subnet-mask, domain-name-servers; #timeout 60; #retry 60; #reboot 10;" #select-timeout 5; #initial-interval 2; #script "/etc/dhcp3/dhclient-script"; #media "-link0 -link1 -link2", "link0 link1"; #reject 192.33.137.209;

Lo siguiente es agregar las siguientes líneas al archivo "/etc/rc.local", (este probado si funciona) esto, antes de la linea "exit 0":

dnscrypt-proxy -d --resolver-address=208.67.220.220:443 --provider-name=2.dnscrypt-cert.opendns.com --provider-key=B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79 exit 0

Como ven, la línea está antes del "exit 0", con esto si ya listo para usar, al reiniciar la red o la maquina debería funcionar.

Esto lo podemos comprobar entrando en Welcome to OpenDNS!.

Si ven el check pues todo bien (:

Créditos a lignux.com

No hay comentarios: