DNS
Funcionamiento DNS
DNS son las iniciales de Domain Name System (sistema de nombres de dominio) y es una tecnologĆa basada en una base de datos que sirve para resolver nombres en redes, es decir, para conocer la dirección IP de la mĆ”quina donde estĆ” alojado el dominio al que queremos acceder.
El DNS suele compararse con una guĆa telefónica de Internet. Del mismo modo que buscamos el nombre de un contacto para encontrar su nĆŗmero de telĆ©fono, el DNS nos permite buscar un nombre de dominio para encontrar su dirección IP correspondiente. Este proceso de traducción se lleva a cabo en segundo plano en cuestión de milisegundos, lo que permite a los usuarios disfrutar de una experiencia de navegación fluida.
Por lo tanto, el DNS es un sistema que sirve para traducir los nombres en la red, y estĆ” compuesto por tres partes con funciones bien diferenciadas:
Cliente DNS: estÔ instalado en el cliente (es decir, nosotros) y realiza peticiones de resolución de nombres a los servidores DNS.
Servidor DNS: son los que contestan las peticiones y resuelven los nombres mediante un sistema estructurado en Ôrbol. Las direcciones DNS que ponemos en la configuración de la conexión, son las direcciones de los Servidores DNS.
Zonas de autoridad: son servidores o grupos de ellos que tienen asignados resolver un conjunto de dominios determinado (como los
.eso los.org).
Al realizar las consultas de los DNS habrƔs podido observar que las respuestas que recibes son no autoritativas. Para saber quiƩn tiene la autoridad, o sea, el SOA de un host, debemos hacer de la siguiente manera:
nslookup -type=SOA aliexpress.comCuando una respuesta DNS es no autoritativa, significa que el servidor DNS que proporcionó la respuesta no es el servidor autoritativo para el dominio consultado. En otras palabras, el servidor DNS que respondió no tiene control directo sobre el dominio, pero obtuvo la información de otro servidor, generalmente a través de un proceso de caché.
¿Cómo saber si una respuesta es autoritativa o no?
Con nslookup es mas sencillo ya que te lo indica directamente, pero con la herramienta dig, para verificar si una respuesta es autoritativa o no, puedes observar la sección de comentarios en la salida de la consulta:
Si la respuesta es autoritativa, verƔs algo como:
;; flags: qr aa rd ra;La bandera
aa(authoritative answer) indica que es una respuesta autoritativa.Si la respuesta es no autoritativa, el
aano estarĆ” presente:;; flags: qr rd ra;
MÔs cosas, la dirección completa de dominio se llama FQDN (https://www.exampledomain.com), a continuación se explica:

En un servidor DNS hay dos zonas:
Zona directa: Permite encontrar IP dando dominio.
Zona inversa: Permite encontrar dominio dando IP.
Se puede poner un DNS master y otro slave (esclavo) en el que se replica el master por si falla.
Hay otro concepto importante, el TTL, que se refiere al Tiempo de Vida (Time To Live) que estÔ esta información en la caché del DNS. Para saber cuÔnto tiempo se mantiene esta información en la caché utilizaremos la opción:
Proceso
Cuando un usuario escribe una URL, por ejemplo sysxplore.com , en un navegador web, el navegador inicia un proceso para convertir el nombre de dominio en una dirección IP. Los pasos son:
- Comprobación de la caché de DNS local
Antes de acceder a servidores externos, el navegador comprueba primero su caché DNS local y la caché del sistema operativo en busca de la dirección IP correspondiente al nombre de dominio. Si la dirección IP se encuentra en la caché, el navegador la utiliza para conectarse directamente al sitio web, evitando mÔs consultas DNS.
Consultar el servidor DNS del ISP
El navegador envĆa una consulta DNS al servidor DNS configurado en la configuración de red, que normalmente proporciona el proveedor de servicios de Internet (ISP) del usuario. Este servidor se conoce como servidor DNS recursivo, ya que realiza varias consultas en nombre del usuario para resolver el nombre de dominio.
Comprobación de la caché del servidor DNS del ISP
El servidor DNS del ISP primero verifica su propia caché para ver si tiene la dirección IP de
sysxplore.com. Si la dirección IP estĆ” almacenada en cachĆ©, el servidor la devuelve al navegador del usuario.Consultar el servidor de nombres raĆz
Si la dirección IP no se encuentra en la memoria cachĆ© del ISP, el servidor DNS recursivo consulta a un servidor de nombres raĆz.
Referencia al servidor de nombres TLD
Dado que el servidor de nombres raĆz sabe quĆ© servidor de nombres TLD es responsable de los dominios
.com, devuelve la dirección del servidor de nombres TLD.comal servidor DNS del ISP. A continuación, el servidor del ISP envĆa una consulta al servidor de nombres TLD.comsolicitando la dirección IP asociada asysxplore.com.Referencia al servidor de nombres autorizado
El servidor de nombres TLD
.comno tiene la dirección IP desysxplore.com, pero sabe qué servidor autoritativo la tiene. Remite el servidor DNS recursivo al servidor de nombres autoritativo desysxplore.com, que contiene los registros DNS definitivos para el dominio.Consulta del servidor de nombres autorizado
El servidor DNS recursivo del ISP consulta al servidor de nombres autorizado de
sysxplore.compara obtener la dirección IP. El servidor de nombres autoritativo responde con la dirección IP, que luego el servidor DNS recursivo almacena en caché para futuras solicitudes.Devolver la dirección IP al navegador
Finalmente, el servidor DNS recursivo del ISP devuelve la dirección IP al navegador del usuario. Con la dirección IP en la mano, el navegador puede establecer una conexión con el servidor que aloja
sysxplore.comy cargar el sitio web.
Tipos de DNS
Tal y como se ha hablado en el proceso de bĆŗsqueda, dentro de los DNS, nos vamos a poder encontrar tres versiones diferentes, estas son:
DNS Recursivo: Este se encarga de realizar las bĆŗsquedas de las direcciones Ip correspondientes al nombre de un host. Se trata del tipo de DNS mĆ”s comĆŗn, y se utiliza en la gran mayorĆa de los hogares y empresas. Los servidores DNS recursivos, se encargan de seguir todas las consultas, hasta el punto donde encuentran la dirección IP correspondiente a esa consulta. Una vez localizada, trata de resolverla para mostrar el sitio.
DNS Autoritativo: Este tipo de DNS, es el apartado que contiene la información definitiva sobre el dominio en cuestión. Es el encargado de das la resolución a las consultas que se hacen sobre él. Todos los servidores autoritativos, son los que tienen almacenada toda esa información sobre los nombres del host, y las direcciones IP correspondientes.
DNS RaĆz: Se trata del apartado que proporciona toda la lista de servidores DNS autoritativos para los dominios concretos. Es el primer punto de encuentro que se establece con el sistema de nombres de dominio, y tambiĆ©n se encarga de proporcionar toda la información para encontrar los servidores DNS autoritativos de un dominio concreto.
Zona raiz
El contenido de la zona raiz lo tienen los servidores del dominio raiz. Esta información estÔ disponible para su descarga en el archivo que se llama root.zone. Al descargarnos este archivo veremos la lista de todos los servidores de nombres de todos los TLD de Internet.
Ese fichero contiene una serie de lĆneas del estilo <dominio> NS <FQDN> con las que se indica la lista de servidores de nombres de cada TLD y las IPs.
Por ejemplo los del dominio .es:
Delegación DNS
Una de las caracteristicas del espacio de nombres de dominio es que se realiza una gestión independiente de cada dominio, esta gestión independiente estÔ relacionada con el proceso de delegación. Que es el proceso por el cual el gestor de un determinado dominio delega la tarea de gestión de un dominio hijo a una entidad determinada, habitualmente el propietario del dominio.
ICANN delega la gestión del ccTLD .es a la empresa publica Red .ES, eso significa que el ICANN ya no se encargarĆ” de altas y bajas y, por lo tanto, los servidores DNS asociados a la raĆz (servidores raĆz) lo Ćŗnico que sabrĆ”n del dominio .es son las direcciones IP de los servidores DNS que Red .ES haya configurado. A cambio, Red .ES tendrĆ” que configurar y mantener funcionano un grupo de servidores de nombres que conozcan mĆ”s datos del dominio .es
Este proceso se puede repetir varias veces, como de hecho suele ocurrir. Una vez que el ICANN ha delegado el dominio .es, Red .ES deberÔ gestionar el alta del dominio "mi-empresa-sa.es" y, de hecho, lo hace para posteriormente traspasarle la delegación al dominio.
Tipos de registro DNS
Los registros DNS son diferentes cadenas de letras que se utilizan para indicar ciertas acciones al servidor DNS. Estas letras también son conocidas como sintaxis de DNS. A continuación, veremos una lista de las diferentes sintaxis de DNS que existen:
A: Hace referencia a la dirección IPv4 de un servidor web.
AAAA: Hace referencia a la dirección IPv6 de un host.
CNAME: Hace referencia a un alias de otro dominio. Es decir, su función es hacer que un dominio sea un alias de otro dominio. Normalmente este tipo de registros se utilizan para asociar nuevos subdominios con dominios ya existentes del registro A.
MX: Hace referencia a una lista de servidor de intercambio de correo que se debe utilizar para el dominio.
PTR: Hace referencia a un punto de terminación de red. Es decir, que la sintaxis de DNS es la responsable del mapeo de una dirección IPv4 para el CNAME en el alojamiento.
NS: Hace referencia a que servidor de nombres es el autorizado para el dominio.
SOA: Hace referencia al comienzo de autoridad. Este registro es uno de los registros DNS mÔs importantes porque guarda información esencial como la fecha de la última actualización del dominio, otros cambios y actividades.
SRV: Hace referencia a un servicio. Es decir, se utiliza para la definición de un servicio TCP en el que opere en el dominio.
TXT: Hace referencia a un texto. Es decir, permite que los administradores inserten texto en el registro DNS. Esto se utiliza para dejar notas sobre información del dominio.
SPF: Hace referencia a qué servidores estÔn autorizados para enviar correos electrónicos con nuestro dominio.
LOC: Hace referencia a la ubicación fĆsica del servidor. Es decir, este tipo de registros se utilizan para indicar la latitud, longitud y altura sobre el nivel de mar de la ubicación fĆsica del servidor.
MB: Hace referencia al nombre del dominio de correo electrónico. Actualmente este registro es experimental (Diciembre 2019).
MG: Hace referencia a los miembros de un grupo de correo electrónico. Actualmente este registro es experimental (Diciembre 2019).
MR: Hace referencia al renombre de un dominio de correo electrónico. Actualmente este registro es experimental (Diciembre 2019).
NULL: Hace referencia a recurso nulo. Actualmente este registro es experimental (Diciembre 2019).
HINFO: Hace referencia a los detalles sobre el hardware y el software del host.
MINFO: Hace referencia a la información sobre un buzón de correo electrónico. Actualmente este registro es experimental. (Diciembre 2019).
RP: Hace referencia a información sobre los encargados del dominio.
ANY: Hace referencia a toda la información de todos los tipos que exista.
AFSDB: EstĆ” pensado especialmente para clientes AFS.
NAPTR: Hace referencia a una ampliación del registro A que permite usar patrones de búsqueda.
KX: Hace referencia a Key Exchanger y permite gestionar claves criptogrƔficas.
CERT: Este registro guarda certificados.
DNAME: Este indica alias para dominios enteros.
OPT: Hace referencia a un pseudo registro del Ômbito de los mecanismos de extensión de DNS mÔs conocido como EDNS.
APL: Hace referencia a āAddress Prefix Listā y sirve para enumerar rangos de direcciones en formato CIDR.
DS: Hace referencia a āDelegation Signerā y sirve para identificar zonas con firma DNSSEC.
SSHFP: Hace referencia a āSSH Public Key Fingerprintā y muestra la huella digital para las claves SSH.
IPSECKEY: Este contiene una clave para IPsec.
RRSIG: Este alberga una firma digital para DNSSEC.
NSEC: Este interconecta zonas firmadas en DNSSEC.
DNSKEY DNS: Este contiene una clave pĆŗblica para DNSSEC.
DHCID: Este enlaza nombres de dominio con clientes DHCP.
TLSA: Este registro establece un enlace conocido como TLSA con un nombre de dominio.
SMIMEA: Este registro establece un enlace conocido como S/MIME con un nombre de dominio.
CDS: Este es una copia de un registro DS.
CDNSKEY:Este es una copia de un registro DNSKEY.
OPENPGPKEY: Este muestra claves pĆŗblicas.
TKEY: Este permite el intercambio de claves secretas.
TSIG: Este sirve para la autenticación.
URI: Este muestra la asignación de nombres de host a las URL.
CAA: Este especifica las posibles autoridades de certificación (CA) para un dominio.
Quedate con los bƔsicos y mƔs comunes:

Comandos de DNS
Aquà tienes alguna selección de comandos de Linux y Windows útiles para la resolución de nombres
nslookup
nslookup google.es
Una herramienta de lĆnea de comandos versĆ”til para consultas DNS. Proporciona información sobre nombres de dominio, direcciones IP y registros DNS
dig
dig A google.es
Se utiliza principalmente para resolver nombres de dominio y obtener información detallada sobre cómo los servidores DNS responden a estas consultas. Es mÔs avanzada que nslookup o host.
host
host google.es
Provee información de IP y dominios
whois
whois google.es
Provee información sobre el nombre de dominio: registro, contacto y mÔs.
nsupdate
nsupdate -k file.txt
Comando para realizar modificaciones de registros DNS
rndc
rndc reload
Comando para mandar al DNS de BIND
dnsmasq
dnsmasq --query-cache
Un reenviador DNS ligero y un servidor DHCP. Se puede utilizar para almacenar en cachƩ las consultas DNS y proporcionar servicios DNS para una red local.
systemd-resolve
systemd-resolve --status
Sirve para resolver consultas DNS utilizando el resolutor de systemd. Proporciona información relacionada con DNS y opciones de solución de problemas.
tcpdump
tcpdump -i eth0 port 53
Un analizador de paquetes de red que se puede utilizar para capturar y analizar el trÔfico DNS. Puede ayudar a la solución de problemas relacionados con DNS.
ĀæQuien gestiona los DNS?
La empresa encargada a nivel global del registro de dominios, dns y TLD es el ICANN.
Revisemos lo siguiente, y estos TLDs:
.es ->
.edu ->
.gov ->
Herramientas online
A continuación, tienes algunas de las herramientas online de comprobación de DNS:
- Dominios.es ā whois
- https://www.nslookup.io
PrƔctica con Wireshark
Vamos a probar a ver los resultados en directo, para ello usaremos el software de Wireshark de captura de tramas para las siguientes operaciones:
Identificamos claramente SOLO las tramas DNS de cada uno de estos comandos. No deben de aparecer tramas que no correspondan al servicio DNS.
Revisa el resultado y preguntate:
¿En qué puerto (tipo) se origina la petición y hacia qué puerto destino? (el 53)
¿Qué protocolo? (IPv4, UDP)
¿CuÔl es el servidor de DNS?
Tiempo de vida o TTL
¿Qué significa type A y class IN? (Registro de IP en Internet (IN) )
Comandos host y dig
El comando dig (Domain Information Groper) en Linux es una herramienta poderosa para consultar el Sistema de Nombres de Dominio (DNS). Se utiliza principalmente para resolver nombres de dominio y obtener información detallada sobre cómo los servidores DNS responden a estas consultas.
Comparación general:
dig
Alto
Depuración y anÔlisis DNS
Respuesta detallada, flexible y poderosa.
host
Medio
Consultas rƔpidas
Sintaxis simple, útil para obtener datos bÔsicos.
nslookup
Medio
Consultas rƔpidas
FƔcil de usar, interfaz interactiva, pero desactualizada.
Usos del comando dig en el contexto de DNS:
dig en el contexto de DNS:Consulta de nombres de dominio: Traducir un nombre de dominio a una dirección IP (por ejemplo,
dig google.com).Ver detalles de respuestas DNS: Proporciona mucha información detallada sobre la respuesta de los servidores DNS, como registros de tipo A (dirección IPv4), AAAA (IPv6), MX (correo), NS (servidores de nombres), y mÔs.
Depuración de problemas DNS: Muy Ćŗtil para diagnosticar problemas de resolución de nombres, revisar tiempos de respuesta, y la jerarquĆa de los servidores DNS que se consultan.
Realización de consultas DNS especĆficas: Permite hacer consultas a servidores DNS especĆficos y en distintos niveles de la jerarquĆa DNS (autoritativos, cachĆ©, etc.).
Ejemplo de uso:
Esto devolverĆ”:
Respuesta del servidor DNS: Incluyendo direcciones IP asociadas al dominio.
Tiempo de respuesta.
Servidor DNS que ha respondido.
Detalles adicionales como el TTL (Tiempo de vida) de los registros, información sobre la pregunta, etc.
Diferencias entre dig y host:
dig y host:dig:Uso: Es la herramienta mÔs detallada y avanzada de las tres. Se utiliza principalmente para depuración avanzada y anÔlisis de respuestas DNS.
Detalles: Muestra una respuesta exhaustiva con toda la información que un servidor DNS devuelve, incluyendo las secciones de encabezado, pregunta, respuesta, autoridad, y adicional.
Flexibilidad: Soporta una variedad de opciones avanzadas y diferentes tipos de consultas, como registros de DNS especĆficos (A, MX, NS, etc.).
host:Uso: Es una herramienta mÔs simple y amigable en comparación con
dig. EstĆ” diseƱada especĆficamente para resolver nombres de dominio.Detalles: Muestra solo la información esencial, como la dirección IP asociada al dominio o los registros solicitados.
Flexibilidad: Tiene menos opciones de configuración que
digy no muestra tantos detalles.Sintaxis: MÔs sencilla de usar para consultas rÔpidas, pero menos flexible para depuración avanzada.
Ejemplo:
Salida tĆpica:
Ataques a DNS
A continuación te dejo una infografia sobre tipos de ataques que se producen sobre DNS

DNSSEC
DNSSEC (Domain Name System Security Extensions) es una serie de extensiones al protocolo DNS que añaden seguridad a las consultas DNS, asegurando la autenticidad y la integridad de las respuestas. Su principal propósito es proteger contra ataques como la suplantación o el envenenamiento de caché DNS (DNS cache poisoning), asegurando que las respuestas provienen de una fuente autorizada y no han sido alteradas durante el trÔnsito. Este ofrece:
Autenticidad: DNSSEC asegura que la respuesta a una consulta DNS proviene del servidor autorizado para el dominio solicitado.
Integridad: Garantiza que la respuesta no ha sido modificada en el camino (por ejemplo, mediante un ataque de man-in-the-middle o envenenamiento de cachƩ).
No encriptación: DNSSEC no encripta los datos DNS, simplemente asegura que los datos no han sido alterados. La encriptación de las consultas DNS puede lograrse con protocolos como DNS sobre HTTPS (DoH) o DNS sobre TLS (DoT).
¿Cómo funciona DNSSEC?
DNSSEC utiliza firmas digitales y clave pĆŗblica para verificar que las respuestas de DNS no han sido modificadas:
Firma digital: Cada conjunto de registros DNS (como los registros A, MX, NS, etc.) es firmado digitalmente por el servidor autoritativo usando una clave privada.
Clave pĆŗblica: La clave pĆŗblica correspondiente es publicada junto con los registros DNS en lo que se llama un registro DNSKEY. Los resolvers DNS que soportan DNSSEC utilizan esta clave pĆŗblica para verificar la firma digital.
Cadena de confianza: La clave pĆŗblica para un dominio puede ser verificada mediante una cadena de confianza que comienza en la zona raĆz del DNS. Esta cadena de confianza permite validar que una clave pĆŗblica especĆfica es legĆtima y pertenece a la entidad autorizada del dominio. Cada nivel en el DNS tiene una firma, hasta llegar a la clave raĆz, que es conocida y confiable.
Registros adicionales: DNSSEC introduce nuevos tipos de registros DNS:
DNSKEY: Contiene la clave pĆŗblica que se usa para verificar las firmas.
RRSIG: Contiene la firma digital de un conjunto de registros DNS.
DS: Indica el hash de la clave pĆŗblica del siguiente nivel en la jerarquĆa DNS.
NSEC/NSEC3: Se utiliza para negar la existencia de registros de forma autenticada (previniendo ataques como "zone-walking").

Funcionamiento bƔsico:
Consulta inicial: Cuando un cliente (resolver DNS) que soporta DNSSEC hace una consulta, obtiene no solo los registros solicitados (por ejemplo, un registro A para una dirección IP), sino también la firma digital de estos registros (RRSIG).
Verificación: El resolver utiliza la clave pĆŗblica almacenada en el registro DNSKEY para verificar la firma digital de los registros recibidos. Si la firma es vĆ”lida, el resolver acepta la respuesta como legĆtima.
Cadena de confianza: Si el resolver confĆa en la clave pĆŗblica de la zona raĆz del DNS, puede seguir la cadena de confianza para verificar cualquier dominio que utilice DNSSEC, desde la zona raĆz, pasando por los TLDs (como
.com,.org), hasta el dominio final.
DNSSEC en Linux
En Linux, DNSSEC puede configurarse y utilizarse en conjunto con un resolver DNS compatible, como BIND, Unbound, o systemd-resolved (dependiendo de la distribución), en nuestro caso usamos bind9 por lo que para configurar BIND para usar DNSSEC, hay que asegurarse de que se estÔ validando la cadena de confianza.
Configuración en /etc/named.conf para habilitar DNSSEC:
dnssec-enable yes: Habilita el uso de DNSSEC.
dnssec-validation auto: Habilita la validación automÔtica de las firmas DNSSEC.
En esta configuración, el servidor descargarĆ” las claves necesarias (como la clave pĆŗblica de la raĆz) automĆ”ticamente.
Verificación de DNSSEC con dig
digPuedes verificar si un dominio utiliza DNSSEC usando el comando dig. Para ello, realiza una consulta y busca los registros relacionados con DNSSEC (como RRSIG y DNSKEY):
En la respuesta, verÔs información adicional sobre los registros RRSIG, que contienen las firmas digitales.
Ventajas y Limitaciones de DNSSEC:
Ventajas:
Protección contra ataques de envenenamiento de caché: DNSSEC asegura que los registros DNS no sean alterados durante la consulta.
Autenticación del origen de los datos: Los clientes pueden estar seguros de que los datos provienen del servidor autorizado.
Limitaciones:
No cifra las consultas: DNSSEC no protege contra la interceptación de consultas DNS. Si necesitas encriptar las consultas, debes utilizar DoH (DNS sobre HTTPS) o DoT (DNS sobre TLS).
Complejidad: La implementación de DNSSEC puede ser complicada, especialmente en grandes infraestructuras.
Adopción limitada: Aunque ha ganado popularidad, no todos los dominios y servidores soportan DNSSEC aún.
Protocolo y registros SPF

Referencias:
Ćltima actualización