2.4. Sistema de nombres de dominio
2.4.2. Descripci´on del DNS
El DNS es una base de datos distribuida[25]. Esto permite delegar el control de secciones de la base de datos a otras entidades, mientras que la informaci´on es accesible a todos los segmentos mediante un esquema cliente servidor. La replicaci´on y almacenamiento temporal de informaci´on (caching) proveen robustez y rendimiento adecuados a la base de datos.
En el sistema interact´uan dos elementos principales: los clientes o resolvers que hacen peticiones y los servidores de nombres que tienen parte de la base de datos y atienden dichas peticiones.
Los tres principales componentes del DNS son:
El espacio de nombres de dominio y los registros de recursos intercambiados en las transacciones del DNS.
Los servidores de nombres, que son programas que tienen la informaci´on sobre una porci´on de la base de datos. Los servidores de nombres deben ser capaces de contactar a otros servidores de nombres y obtener informaci´on que no se en- cuentre en su base de datos local. Se dice que un servidor es autoritativo para la informaci´on que se encuentra en su base de datos local.
Losresolvers, que son programas utilizados para extraer informaci´on de los servi- dores de nombres. Losresolvers generalmente son funciones del sistema operativo que son invocadas cuando se requiere hacer uso del DNS.
Estos tres componentes corresponden a las tres capas o vistas del DNS:
Desde el punto de vista del usuario, el sistema de dominios es accedido a trav´es de una simple funci´on del sistema operativo. El espacio de nombre de dominios cor- responde a un ´arbol sencillo y el usuario puede obtener informaci´on de cualquier secci´on del ´arbol.
Figura 2.3: Visualizaci´on en forma de ´arbol de una porci´on del DNS.
Desde el punto de vista de un resolver, el DNS est´a compuesto de un n´umero desconocido de servidores de nombres. Cada servidor de nombres tiene una o m´as piezas de la informaci´on del ´arbol del DNS.
Desde el punto de vista del servidor de nombres, el DNS consiste en un conjunto de informaci´on local llamada zonas. Los servidores de nombres tienen copias de estas zonas.
La base de datos del DNS se puede imaginar como un ´arbol (ver figura 2.3) en el cual las hojas son los nombres de hosts y cada nodo que no es hoja constituye un segmento de la base de datos. Los nodos que no son hojas son la ra´ız de lo que se encuentra dentro de su segmento y a la vez existe una ra´ız para todo el ´arbol representada con un “.”.
Los servidores de nombres que tienen la informaci´on segmentada de la base de datos de nombres de dominios se dividen en dos tipos:
Figura 2.4: Ejemplo de resoluci´on de nombres de dominio efectuado por un servidor recursivo.
Servidores recursivos. Servidores autoritativos.
Servidores Recursivos Los servidores recursivos tienen la tarea de recorrer el ´arbol para obtener alguna informaci´on en espec´ıfico. La figura 2.4 ilustra el funcionamiento de un servidor recursivo:
A continuaci´on (ver figura 2.5) podemos observar el recorrido que realiza elresolver
o servidor recursivo para obtener la respuesta de la consulta por www.google.com.mx. El recorrido parte desde los servidores ra´ız o root servers. Los registros NS en este ejemplo son utilizados para guiar al resolver en su recorrido en el ´arbol del DNS:
Los registros NS que podemos observar en este ejemplo son registros de referencia o referrals y permiten a un servidor recursivo recorrer el ´arbol del DNS. Este tipo de
Figura 2.5: Ejemplo de registros NS usados por un servidor recursivo para recorrer el ´arbol del DNS.
respuestas componen la mayor´ıa de las respuestas que env´ıa un operador de registro o
registry (ej. NIC M´exico) de Internet.
Servidores Autoritativos Un servidor autoritativo es de vital importancia en el DNS y es el servidor que tiene la informaci´on completa de un segmento de la base de datos. Estos servidores pueden tener informaci´on sobre las direcciones IP de un
host (hoja del ´arbol) o bien pueden tener la informaci´on de qu´e servidores tienen la informaci´on de ramas inferiores en el ´arbol. Por ejemplo, los servidores ra´ız tienen la informaci´on de cu´ales son los servidores que tienen la informaci´on sobre los nombres de dominio terminados en .com y a su vez estos servidores tienen la informaci´on de
los servidores con autoridad o que tienen la informaci´on sobre el dominio o secci´on del ´arbol microsoft.com, por ejemplo.
Los servidores autoritativos son blanco com´un de atacantes pues al interrumpir el servicio que ofrecen se pierden grandes secciones de la base de datos. Es de vital im- portancia proteger la infraestructura de los servidores autoritativos para evitar perder secciones de la base de datos del DNS y mantener este servicio de infraestructura fun- cionando adecuadamente.
Registros de datos Si vemos al DNS como una base de datos, los registros ser´ıan los llamados Resource Records (RR, por sus siglas en ingl´es), y los campos ser´ıan los elementos que conforman un RR. De estos elementos el nombre del dominio es el campo llave usado para la realizaci´on de las b´usquedas.
Si vemos al DNS como un ´arbol entonces un nombre de dominio identifica a un nodo y cada nodo tiene un conjunto de recursos asociados y posiblemente sub´arboles.
Un RR esta formado por el siguiente conjunto de elementos:
owner: el nombre de dominio.
type: valor num´erico de 16bits que especifica el tipo de recurso. Los tipos refieren a recursos abstractos.
class: valor num´erico de 16 bits que identifica a una familia de protocolos.
TTL: valor num´erico de 32bits que indica en segundos cuanto tiempo dura el RR en el ´area decache de los servidores recursivos.
RDATA: los datos transmitidos mediante el RR. El formato del RDATA depende del tipo de RR.
Consultas est´andares Las consultas o queries son enviadas a un servidor para provocar una respuesta. Las consultas pueden viajar por UDP o TCP en el caso de Internet, sin embargo, el transporte de UDP es generalmente utilizado debido a que es menos costoso de procesar ya que es un protocolo no orientado a conexi´on. Al recibir una consulta oquery el servidor de nombres primero verifica s´ı la informaci´on est´a en sus zonas locales, en caso de no existir en sus zonas locales enviar´a la respuesta obtenida de sucache y en caso de no encontrar la informaci´on en su cache el servidor realizar´a una b´usqueda en el sistema de DNS.
Generalmente el usuario no genera consultas directamente, en su lugar realiza peticiones a un resolver local el cual env´ıa una o mas peticiones a los servidores de nombres necesarios.
Una consulta est´andar especifica un nombre de dominio a buscar (QNAME), un tipo de consulta (QTYPE), y un tipo de clase oclass (QCLASS). En Internet la clase IN es la m´as utilizada.
Adem´as de enviar los registros que son encontrados para esta terna de campos, el servidor puede enviar otros RR que permitan al servidor encontrar la informaci´on deseada en alg´un otro servidor de nombres.
Mensajes del DNS Todas las comunicaciones que se realizan dentro del protocolo del DNS se realizan mediante mensajes. Los mensajes tienen un formato definido, y a continuaci´on se presentan las capas que los conforman:
Cabecera o Header siempre est´a presente. La cabecera incluye campos que per- miten conocer cuales de las secciones restantes est´an presentes, y tambi´en especi- fica si el mensaje es una consulta o una respuesta.
consulta oQuestion, es donde viaja la consulta que se esta realizando. Esta secci´on puede contener solamente un nombre de dominio, una clase y un tipo de registro.
Respuesta o Answer, es donde viaja la respuesta a la consulta y existe una gran cantidad de tipos de registros. Esta tesis no aborda el obtener variables a partir de la secci´on de respuesta.
Autoridad oAuthority, es donde viaja informaci´on sobre otros servidores de nom- bres que pueden tener la informaci´on sobre el dominio. Esta secci´on es utilizada para guiar a los servidores recursivos hacia otros servidores autoritativos en In- ternet.
Adicional o Additional, es donde viaja informaci´on sobre glue records para la secci´on de authority.
Cabecera La cabecera oHeader es la secci´on que siempre esta presente en un mensaje del DNS. La informaci´on definida por la cabecera indica si el mensaje es una consulta o respuesta. En caso de ser una respuesta la cabecera indica si la consulta fue realizada con ´exito o no.
A continuaci´on se muestra el formato de la cabecera: La tabla 2.2 muestra el formato de la cabecera, donde:
ID, Un identificador de 16bits asignado por el programa que genera la consulta. Este identificador es despu´es copiado en la respuesta y puede ser usado por el programa que env´ıa la respuesta para hacer match de losqueries que ha enviado. QR, Un campo de un bit que especifica si el mensaje es una consulta (0), o una respuesta (1).
OPCODE, Un campo de cuatro bits que especifica el significado de la consulta de ese mensaje en especifico. Los valores permitidos son:
• 1, una consulta inversa (IQUERY).
• 2, una petici´on para conocer el tipo de servidor (STATUS).
• 3-15, reservado para uso futuro.
AA, Respuesta autoritativa o Authoritative Answer, este bit especifica que el servidor de nombres es autoritativo para el nombre de dominio en la secci´on de consulta.
TC, Truncado oTruncation, especifica que el mensaje fue truncado debido a que el tama˜no es m´as grande que el permitido por el canal de transmisi´on.
RD, Recursividad deseada o Recursion Desired, este bit indica que se desea que la consulta sea resuelta mediante recursi´on.
RA, Recursividad permitida o Recursion Available, este bit es activado por el servidor que env´ıa la respuesta, y especifica que el servidor puede realizar recur- si´on.
Z, Reservado para uso futuro. Debe ser 0 en todos las consultas y respuestas. RCODE, C´odigo de respuesta o Response Code, este campo de 4 bits especifica el tipo de respuesta:
• 0, Condici´on de no error.
• 1, El servidor de nombres no fue capaz de interpretar la consulta.
• 2, El servidor de nombre no fue capaz de procesar esta consulta debido a un problema con el servidor de nombres.
• 3, Error de nombre, este tipo de respuestas solo tienen significado cuando un servidor de nombres es autoritativo para el nombre de dominios, este c´odigo significa que el dominio no existe.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ID QR OPCODE AA TC RD RA Z RCODE QDCOUNT ANCOUNT NSCOUNT ARCOUNT
Cuadro 2.2: Cabecera de un mensaje DNS.
• 4, El servidor no implementa soporte para este tipo de consulta.
• 5, El servidor de nombres se reh´usa a realizar la operaci´on especificada por razones pol´ıticas.
• 6-15, Reservado para uso futuro.
QDCOUNT, un campo de 16 bits que especifica el n´umero de registros en la secci´on de consulta.
ANCOUNT, un campo de 16 bits que especifica el n´umero de registros en la secci´on de respuesta.
NSCOUNT, un campo de 16 bits que especifica el n´umero de servidores de nom- bres que se encuentran en la secci´on de autoridad.
ARCOUNT, un campo de 16 bits que especifica el n´umero de registros que se encuentran en la secci´on adicional.