DNS
Domain Name System (DNS) es un sistema globalmente distribuido, escalabre y jerárquico. Ofrece una base de datos dinámica asociando direcciones IP de computadoras, servicios o cualquier recurso conectado a internet o red privada con información de diverso tipo. Soporta tanto IPv4 como IPv6, y la información se almacena en forma de registros Resource Records (RR) de distintos tipos los cuales pueden almacenar IP u otro tipo de información. Esta información se agrupa en zonas, que corresponden a un espacio de nombres o dominio y que son mantenidas por el servidor DNS autoritativo de la misma.
DNS se encarga de traducir direcciones IP de recursos de red a nombres fácilmente legibles y memorizables por las personas, y viceversa.
ELEMENTOS INTEGRANTES DE DNS
DNS se estructura en tres componentes principales:
- Espacio de dominios de nombres
- Servidores de Nombres
- Resolvers
Espacio de dominios de nombres: Consiste en un estructura jerárquica de árbol donde cada nodo contiene cero o más registros (Resource Records, o RR) con información del dominio.
Servidores de Nombres: Son servidores encargados de mantener y proporcionar información del espacio de nombres o dominios.
Resolvers: Son servidores caché (estos servidores almacenan localmente de forma temporal) o programas cliente los cuales se encargan de generar las consultas necesarias y obtener la información solicitada para ofrecerla al usuario que la solicita.
ESPACIO DE DOMINIOS DE NOMBRES. JERARQUÍA Y SINTAXIS
Estructura Jerárquica
DNS está compuesto por un espacio de nombres de dominio organizados en jerarquía de árbol donde se enlazan nodos, cada uno representando un nivel del espacio de dominios. El nivel más alto de toda la jerarquía es el dominio raíz o root, representado por “.” (punto).
La jerarquía comienza en la zona raíz “.” siendo el nivel más alto. Aunque normalmente no es mostrado, todo dominio completo termina en un punto final “.” que indica el final del espacio en la zona raíz. Por ejemplo “www.ejemplo.com” realmente es “www.ejemplo.com.”, donde el punto final más a la derecha representa la zona raíz. Este dominio completo es lo que se denomina Fully Qualified Domain Name (FQDN).
Una zona es una porción del espacio de dominio de nombres cuya administración es delegada a un servidor DNS que ejerce como “autoridad” de esa porción o dominio.
Nomenclatura DNS
Dependiendo de su posición en la jerarquía, cada nombre de dominio del espacio de nombres está compuesto por una o más etiquetas separadas por un punto “.” cada una con un máximo de 63 Guía de seguridad en servicios DNS 8 caracteres. Un nombre final FQDN puede contener hasta un máximo de 255 caracteres, incluyendo los “.”.
Los nombres de dominios no se diferencia entre mayúsculas y minúsculas.
Espacio de dominio de direcciones IN-ADDR.ARPA
En DNS se utiliza el dominio in-addr.arpa para definir el espacio de direcciones IP. Mediante este domino se garantiza la resolución inversa de una dirección IP a su correspondiente nombre y así facilitar su búsqueda en Internet.
Los subdominios en in-addr.arpa tienen una estructura de hasta 4 etiquetas (IP versión 4), cada una de las cuales representaría un octeto de una dirección IP. Así por ejemplo la información de la dirección IP 213.4.108.69 se localizaría en el dominio 69.108.4.213.in-addr.arpa. Obsérvese como se sigue el criterio jerárquico en la Ilustración 2. Dominio 69.108.4.213.in-addr.arpa.
Utilidad Dig
Es un comando para (Unix/Linux) donde podemos realizar consultas DNS para obtener cualquier registro que nos interese. Esta utilidad se puede utilizar en Windows descargando el servidor de nombre BIND (http://www.isc.org/downloads/). Con esta utilidad podemos hacer la resolución inversa de la IP.
SERVIDORES DE NOMBRES
Un servidor de nombres es una computadora que se encarga de almacenar y proporcionar información sobre el espacio de nombres y espacio de direcciones.
- Servidores Autoritativos: es aquel que mantiene zonas almacenadas localmente y proporciona respuestas a solicitudes de las mismas. Los servidores autoritativos pueden ser maestros o esclavos. En los maestros, o primarios, se guardan y administran las versiones definitivas de los registros que son transferidas a servidores autoritativos esclavos, que guardan una copia que es actualizada cada vez que se produce un cambio. Esta actualización se conoce como transferencia de zona.
- Servidores Caché: almacenan información de consultas (queries) DNS por un determinado tiempo denominado TTL (Time To Live) de cada registro DNS. Los servidores caché optimizan el uso de red reduciendo el tráfico DNS en Internet.
RESOLVERS
Los resolvers son programas o servicios con los que el usuario interacciona en su máquina para generar una consulta DNS.
REGISTROS DNS. FORMATO Y TIPOS
Un nombre de dominio se identifica con un nodo en la jerarquía DNS. Cada nodo contiene un conjunto de información conocido como registros (Resource Registers, RR) de los cuales es responsable o autoridad.
Registros DNS: Resource Records (RR)
Campo | Descripción | Longitud (bytes) |
NAME | Nombre del dominio al que pertenece el registro | Cadena variable |
TYPE | Código del tipo de registro | 2 bytes |
CLASS | Código de clase del registro | 2 bytes |
TTL | Tiempo en segundos durante el cual el registro es cacheado | 4 bytes |
RDLENGTH | Indica la longitud en bytes del campo RDATA | 4 bytes |
RDATA | Cadena de longitud variable que describe el registro de acuerdo al tipo y clase del mismo | Cadena variable |
El campo TYPE contiene un código que identifica de qué tipo de registro se trata. Existen multitud de tipos de registros definidos en distintos RFCs2. Algunos de los tipos más comunes se muestran en la siguiente tabla:
TIPO (valor campo TYPE) | Función |
A = Address – (Dirección) | Traduce (resuelve) nombres de recursos a direcciones IPv4 |
AAAA = Address – (Dirección) | Traduce (resuelve) nombres de recursos a direcciones IPv6 |
CNAME = Canonical Name – (Nombre Canónico) | Crear nombres adicionales, o alias, para el recurso |
NS = Name Server – (Servidor de Nombres) | Indica qué servidor(es) almacenan la información del dominio consultado |
MX = Mail Exchange (Registro de Intercambio de Correo) | Asocia un nombre de dominio a una lista de servidores de intercambio de correo para ese dominio. Tiene un balanceo de carga y prioridad para el uso de uno o más servicios de correo. |
PTR = Pointer – (Puntero) | Inverso del registro A, traduciendo IPs en nombres de dominio. |
SOA = Start of authority – (Autoridad de la zona) | Indica el servidor DNS primario de la zona, responsable del mantenimiento de la información de la misma. |
HINFO = Host INFOrmation – (Información del recurso) | Descripción de la CPU y sistema operativo que almacena la información de un dominio. Suele ocultarse. |
TXT = TeXT – ( Información textual) | Permite a los dominios proporcionar datos adicionales. |
LOC = LOCalización | Permite indicar las coordenadas geográficas del dominio. |
SRV = SeRVicios – | Información sobre los servicios que ofrecidos |
SPF = Sender Policy Framework – | Ayuda a combatir el Spam. En este registro se especifica cual o cuales hosts están autorizados a enviar correo desde el dominio dado. El servidor que recibe, consulta el SPF para comparar la IP desde la cual le llega. Su uso se pretende abandonar a favor de registro TXT3. |
ANY = Todos | Para solicitar todos los registros disponibles |
El campo CLASS es comúnmente fijado al valor IN (Internet) para registros DNS relacionados con hostnames, servidores o, en resolución inversa, direcciones IP. Existen además las clases CH (Chaos) y HeSiod (HS) para otros sistemas menos comunes.
En el campo TTL, un valor numérico que indica el tiempo en segundos que se cacheará el registro. Un valor 0 indica validez sólo para la transacción en curso y el registro asociado no será almacenado en caché. Los registros SOA siempre tienen TTL igual a 0.
En el campo RDATA se describe el contenido del registro según el tipo indicado en el campo TYPE: SOA, A, NS, MX, etc. El tamaño de esta información se indica en el campo RDLENGTH.
COMUNICACIONES Y TRANSACCIONES DNS
Protocolo DNS
DNS usa para las comunicaciones el puerto 53, tanto para datagramas UDP como paquetes TCP. Generalmente, en la actividad DNS se usan datagramas UDP ya que requieren menos recursos de proceso y de red.
La implementación de DNS tomando UDP como base principal para sus comunicaciones supone el origen de multitud de amenazas relacionadas con la falta de fiabilidad intrínseca a las transmisiones de este protocolo
Mensajes DNS
- Formato genérico de mensaje DNS
- Header. Cabecera de un mensaje DNS
- Formato de mensajes DNS de consulta y respuesta
- Formato Extensión Mechanism dor DNS EDNS0
Formato genérico de mensaje DNS
Todas las comunicaciones en el protocolo DNS siguen un formato estándar llamado mensaje. El mensaje se divide en una cabecera HEADER y 4 secciones: QUESTION, ANSWER, AUTHORITY y ADITTIONAL. Dependiendo del tipo de mensaje alguna sección puede ser nula. La cabecera HEADER siempre está presente pues contiene importante información sobre el contenido mensaje.
- HEADER: Contiene información sobre el tipo de mensaje. Incluye campos que informan sobre el número de entradas en otras secciones del mensaje.
- QUESTION: Contiene una o más solicitudes de información (queries) que se envían al servidor DNS
- ANSWER: Contiene uno o más registros que responden a la(s) solicitud(es)
- AUTHORITY: Contiene uno o más registros que apuntan al servidor autoritativo del dominio en cuestión
- ADDITIONAL: Registros con información adicional no necesaria para responder a la query
HEADER. Cabecera de un mensaje DNS.
La sección HEADER de un mensaje DNS consta de 16 bytes que se desglosan en los siguientes campos:
- ID:(16 bits octetos). Los dos primeros bytes se destinan al ID del mensaje. Este campo es especialmente importante ya que identifica el paquete y será el objeto a atacar cuando se intenta falsificar un mensaje.
- QR (1 bit): Utilizado para indicar si se trata de una consulta (0) o una respuesta (1).
- Opcode (4 bits): Indica el tipo de query, consulta estándar, consulta inversa, notificación, actualización dinámica o estado servidor.
- Flags (4 flags de 1 bit). AA: Respuesta autoritativa. TC: Truncation. Indica que el mensaje está truncado al haberse superado la longitud máxima permitida en la transmisión. RD:Recursion Desired, especifica que se solicita una consulta recursiva. RA: Recursion Available. Denota en una respuesta que se ofrece la posibilidad de recursión.
- Z (3 bits): Reservado para futuros usos.
- RCODE (4 bits): Campo fijado en las respuestas informado del estado de la misma: No Error, Error de formato, error del servidor, rechazada.
- QDCOUNT,ANCOUNT,NSCOUNT,ARCOUNT (16 bits) Campos destinados a especificar el número de entradas o registros en las secciones query, answer, authority y additional.
Formato de mensajes DNS de consulta y respuesta
Dependiendo de si el mensaje DNS es una pregunta o una respuesta, alguno de los campos puede no aparecer.
-Mensajes DNS de consulta (QUESTION): contiene la pregunta que se solicita al servidor DNS. Y el cliente (resolver) formatea siguiendo estas tres estructuras:
- QNAME: Indica el dominio por el que se pregunta
- QTYPE: Tipo de información (registro) que se requiere en la consulta.
- QCLASS: Clase de registro
-Mensajes DNS de respuesta
En mensajes DNS de respuesta aparecen las secciones ANSWER, AUTHORITY y ADDITIONAL todas siguiendo el formato de registro DNS (RR).
Formato Extension Mechanism for DNS EDNS0
Mediante esta funcionalidad se posibilita el uso de un buffer mayor para datagramas UDP. Es generalmente usado con operaciones que requieren un tamaño superior a 512 bytes , o en operaciones de transferencia de zona. En versiones de Bind a partir de la 9, el formato EDNS0 es el empleado por defecto. Un servidor advierte de su capacidad para usar EDNS0 especificando un pseudoregistro OPT en la sección ADDITIONAL del mensaje DNS.
TRANSACCIONES DNS
Las transacciones más comunes son:
- Consultas/respuestas DNS (Queries).
- Transferencias de Zona: Mecanismo de replicación de ficheros de zona entre servidores.
- Actualizaciones Dinámicas: Mecanismo usado para actualizar los ficheros de zona de un servidor DNS.
- Notificaciones: Transacción que usa un servidor autoritativo para notificar cambios en su base de datos de zonas.
Consultas/respuestas DNS (Queries)
Los consultas DNS realizadas por un resolver pueden ser iterativas o recursivas.
- Consulta iterativa es aquella en la que el resolver (cliente) requiere al servidor DNS devolver la mejor respuesta basada en sus ficheros de zona o caché.
- Consulta recursiva es aquella en que el resolver solicita del servidor DNS una respuesta final o un error (si el recurso no existe).
Mecanismo de resolución en una consulta DNS
El proceso que se sigue en una resolución DNS es el siguiente. El cliente (resolver) hace llegar la consulta al servidor DNS:
a) Si el servidor DNS está configurado como autoritativo y recibe una consulta DNS sobre un dominio sobre el que él es autoritativo, devolverá la respuesta consultando los registros almacenados en su configuración y devolviendo la respuesta marcada como Authoritative Answer en la sección “ANSWER” del mensaje de respuesta. Si no tiene la información, responde con el mensaje NXDOMAIN (Non-Existent-Domain).
b) Si el servidor DNS es autoritativo y no configurado como recursivo y recibe una consulta sobre un dominio sobre el que no es autoritativo, responderá con un mensaje conteniendo registros en la sección “AUTHORITY” y en la sección ADDITIONAL informando al resolver que no proporciona recursión y donde debe dirigir su consulta para obtener información autoritativa del dominio solicitado. Se conoce como Referral Response.
c) Si el servidor DNS no es autoritativo, pero está configurado como recursivo y recibe una consulta, éste inicia consultas iterativas (recursión) para encontrar el servidor autoritativo del dominio. Una vez obtiene respuesta devuelve el registro al cliente (resolver) indicando que se trata de una respuesta no autoritativa. La información la guarda en caché, de modo que si vuelve a ser preguntado por el mismo recurso y el tiempo con que el registro está marcado para “caducar” (TTL, o Time To Live) no ha pasado, contestará consultado esta caché.
Transferencia de Zona
Es una transacción por la cual un servidor DNS secundario (esclavo) actualiza los contenidos de zona desde un servidor primario (master) y de este modo, mantener una copia sincronizada con las base de datos maestra.
Actualizaciones Dinámicas
El mecanismo de actualización dinámica proporciona dos operaciones automáticas: añadir o borrar registros en un fichero de zona. Las posibles acciones pueden ser:
- Añadir o borrar registros individuales.
- Borrar conjuntos de registros que cumplan un criterio específico de un dominio determinado.
- Borrar un dominio existente (por ejemplo, todos los registros del dominio midominio.com).
- Añadir un nuevo dominio con uno o más registros.
Notificaciones y actualizaciones por transferencia de zona
Cada vez que se produce un cambio en los ficheros de zona del servidor autoritativo primario, el servidor secundario debe ser informado de dicha modificación y así proceder a actualizar su copia de las zonas, solicitando una transferencia de zona al primario. Por este mecanismo, tras una modificación en los registros de zona, el servidor maestro manda un mensaje (NOTIFY) a los secundarios para advertir este cambio. Adicionalmente, aunque menos preciso que el NOTIFY del primario, es el proceso de transferencia de zona desencadenado en el servidor secundario cuando ha caducado el valor “refresh” especificado en el registro SOA almacenado. Por defecto, BIND utiliza el método de notificación NOTIFY.
Vocabulario y Abreviaturas
TLD: Las etiquetas se construyen de derecha a izquierda, donde la etiqueta más a la derecha representa el Top Level Domain o TLD.
.arpa: es un dominio de Internet genérico de nivel superior usado exclusivamente para la infraestructura de Internet.
RFC: Request for Comments (Petición de Comentarios) son una serie de notas sobre Internet, y sobre sistemas que se conectan a internet, que comenzaron a publicarse en 1969.
IETF. RFC 6686: Resolución de “Sender Policy Framework (SPF) es validación diseñado para detectar la suplantación de correo electrónico.
Bind: es el servidor de DNS más comúnmente usado en Internet.
EDNS0: es un mecanismo de detección para DNS, es una especificación para la ampliación del tamaño de varios parámetros del sistema de nombres de dominio (DNS), el que tenía restricciones de tamaño que la comunidad de ingeniería de Internet consideran demasiado limitada para aumentar la funcionalidad del protocolo.
Resolver: Un cliente DNS que se encarga de componer y mandar los mensajes DNS a los servidores para obtener la información requerida sobre el dominio deseado.
Open resolver: Servidor que ofrece servicio DNS recursivo accesible públicamente a cualquier cliente (resolver) que lo solicite.
Recursión: Las acciones que un servidor DNS toma para entregar la información solicitada a un resolver preguntando a otros servidores.
Servidor Autoritativo: El servidor DNS que mantiene, distribuye y responde a solicitudes DNS consultando la información almacenada en sus registros, en inglés, Resource Records (RRs). Puede ser primario o secundario.
Servidor Autoritativo Master (Primario): Es el servidor DNS autoritativo que contiene almacena las versiones definitivas de los registros que administra.
Servidor Autoritativo Stealth (Oculto): Servidor autoritativo primario para algunas zonas pero que no aparece en los registros NS de las mismas. El objeto es mantenerlo oculto a consultas tipo NS, que puede ser útil por ejemplo para servidores internos.
Servidor Autoritativo Esclavo (Secundario): Es el servidor DNS autoritativo que almacena una copia de los registros administrados por el servidor Master. Cuando algún cambio se ha producido en los registros del servidor master o primario, es notificado a los esclavos que solicitan e inician una transferencia de zona.
Servidor DNS caché (resolver recursivo): Es un servidor DNS intermediario que obtiene la respuesta a solicitudes DNS, consultando servidores autoritativos, y la almacena en caché para tenerlas disponibles y servirlas a clientes (resolvers). Su función es mejorar el rendimiento de las respuestas y contribuir a reducir la carga de tráfico DNS en internet.
Zona: Base de datos que un servidor autoritativo contiene sobre un conjunto de dominios.
Transferencia de Zona: Comunicación (transacción) entre servidores DNS para la replicación de los contenidos de zona entre ellos. Es una comunicación cliente-servidor TCP con en dos tipos: completa (AXFR) o incremental (IXFR, para actualizar de cambios).
FQDN: Fully Qualified Domain Name. Es el nombre absoluto y completo que identifica un recurso en la base de datos distribuida del espacio DNS.
Registro DNS ó RR: Resource Record. Contiene la información de un registro DNS que se envía en los mensajes DNS. Tabla 1. Formato de registro. Resource Record (RR). Compuesto por seis campos: NAME, TYPE, CLASS, TTL, RDLENGTH y RDATA
Mensaje DNS: Estructura diseñada para la comunicación IP entre los integrantes del espacio DNS y transmitir información. Se compone de 5 campos: HEADER, QUESTION, ANSWER, AUTHORITY y ADDITIONAL. SEGURIDAD EN DNS.
Fuentes:
- Wikipedia
- Inteco