14 febrero 2013

Peticiones DNS cifradas


Cada vez más se empieza a escuchar que los proveedores de Internet o ISP's están controlando y restringiendo el tráfico que generamos. Una de las formas más sencillas y también más simples de saltar es el control del DNS. Un nombre DNS no es más que una forma fácil de acordarse de una IP, que es la que realmente sirve el contenido. Si bien todos nos tuviéramos que acordar de la IP 173.194.66.94 cada vez que accediésemos a Google fijo que éste tendría muchas menos visitas. Esto es lo que hace el DNS, simplificar.
Pues bien, de la misma forma que simplifica, también es fácil obtener las cadenas a las que deseas acceder y evitar que las visites. Por ejemplo, cada vez que vayas a Google, mandarte a Yahoo! o a una web que indique que el contenido está prohibido. Esto con un ataque MITM (Ataque Man-in-the-middle) es fácil de realizar y los ISP's realmente están a ese nivel con nosotros.
Por suerte existe un proyecto que ofrece una versión libre de DNS's, OpenDNS. Éste nos ofrece las mismas garantías que el resto de servidores DNS que están disponibles por la red, pero tiene a mayores la peculiaridad de que acepta tráfico DNS encriptado y por supuesto lo devuelve encriptado. Por lo tanto, la idea sería tener una implementación https bajo el protocolo DNS.
Visitando la web de OpenDNS se nos linka a un proyecto, DNSCrypt, que hace exactamente lo que hemos comentado anteriormente. Cifra nuestro tráfico entre origen y destino evitando las molestas escuchas, convirtiendo nuestro equipo local en nuestro proveedor de DNS, que lanza posteriormente las consultas fuera. Vamos a ver cómo instalarlo y usarlo.
  1. Descargamos el código desde github
  2. Extraemos y compilamos el código
    shell> tar xxvf dnscrypt-proxy-1.2.0.tar.gz
    shell> cd dnscrypt-proxy-1.2.0
    shell> ./configure
    shell> make
    shell> make install
    
  3. Arrancamos el servicio
    shell> dnscrypt-proxy --daemonize
    
  4. Cambiamos el servidor DNS del equipo
    Por defecto en los equipos Linux tendremos que editar el fichero /etc/resolv.conf y dejarlo con el siguiente contenido.
    nameserver 127.0.0.1
    
  5. Comprobamos
    shell> dig www.google.es
    
Aunque las preguntas las estemos a realizar a nuestro DNS local, realmente las está respondiendo OpenDNS y toda la comunicación irá cifrada, creando así una comunicación DNS segura.

Tomado de: http://puppetlinux.blogspot.com.ar/2013/01/trafico-dns-cifrado.html

No hay comentarios: