DNS

De HackLab
Saltar a: navegación, buscar


Esta guía explica cómo configurar un demonio de resolución de DNS local, de forma que las peticiones de resolución de dominios de tu máquina se envíen directamente a los servidores DNS maestros sin pasar por los de tu proveedor de Internet, y sin usar los de Google y OpenDNS.

¿Qué significa resolver DNS?

Cuando entraste a este wiki, el navegador tuvo que saber cuál es la dirección de Internet de la computadora donde está alojado. Para eso separó el "wiki.hackcoop.com.ar" de "/DNS" y le preguntó a un servidor DNS cuál es su dirección IP.

Si todo fue correcto, el servidor DNS respondió con la IP correcta y el navegador sabe a qué computadora pedirle la página "/DNS".

Sin embargo, es posible que el servidor DNS intente engañarte (o haya sigo engañado) para responder con una dirección distinta, haciendo que tu navegador te lleve a un sitio falso. Esto también es común cuando se tipea mal un nombre de dominio que no existe, lo normal sería que el navegador te diga "este sitio no existe", pero los DNS comerciales aprovechan esta oportunidad para llevarte a un sitio propio y mostrarte propagandas. Por ejemplo, si hubiera escrito "wiki.hakcop.com.ar".

Otro problema es que el servidor DNS puede registrar todas las peticiones que tu computadora le haga, creando un registro de tu paso por Internet. De otro modo, puede realizarse censura a ciertos sitios, obligando a los proveedores de DNS a bloquear la resolución de ciertos dominios. Esto pasó con wikileaks.org.

Cómo evitarlo

Instalá "unbound" en tu GNU/Linux y copia esta configuración al archivo /etc/unbound/unbound.conf, reemplazando el contenido si ya existiera.

   server:
     username: "unbound"
     directory: "/etc/unbound"
     use-syslog: yes
     # Crear/actualizar con `unbound-anchor -a /etc/unbound/root.key`
     auto-trust-anchor-file: "/etc/unbound/root.key"
     # Sólo permitir peticiones locales
     access-control: 127.0.0.1 allow

Luego ejecutar los siguientes comandos en una terminal de root:

   # Actualizar la llave DNSSEC del dominio raíz
   unbound-anchor -a /etc/unbound/root.key
   # Cambiar los permisos de los archivos al usuario unbound
   chown -R unbound:unbound /etc/unbound
   # Configurar los DNS del sistema para usar el servidor local
   echo "nameserver 127.0.0.1" >/etc/resolv.conf
   # Impedir que los programas de administración de conexiones cambien la configuración
   chattr +i /etc/resolv.conf

Nota: dependiendo de la distribución el demonio va a estar habilitado luego de instalarlo o va a haber que habilitarlo a mano. En derivados de Debian (Trisquel, Mint, Ubuntu, etc.) lo primero es cierto.

Con esta configuración mínima el sistema local va a poder hacer peticiones DNS directamente a los servidores raíz y si existiera, comprobar la información DNSSEC de los dominios para reducir la posibilidad de engaños o redirecciones.