05 - DNS
Domain Name System (DNS) es un sistema de nomenclatura jerárquica y distribuida para los recursos conectados a Internet o a una red privada. Su función principal es traducir nombres de dominio ()(cadena de texto que identifica a un sitio web, como example.com) legibles por humanos en direcciones IP numéricas que las máquinas utilizan para identificarse en la red.
El propósito del DNS es simplificar el uso de Internet al permitir que los usuarios utilicen nombres de dominio en lugar de recordar largas secuencias de números.
Entre las ventajas del DNS se incluyen:
Facilita la Navegación: Permite a los usuarios acceder a sitios web mediante nombres amigables como
www.google.com en lugar de 142.250.190.78.
Distribución Global: El
DNS está diseñado como un sistema distribuido, lo que distribuye la carga de trabajo y mejora la resiliencia del sistema, permitiendo una resolución rápida y eficiente de nombres a nivel mundial.
Escalabilidad: La arquitectura del
DNS permite la expansión continua. A medida que se crean nuevos dominios y subdominios, el sistema
DNS puede escalar para manejar la demanda sin problemas.
Facilita la Navegación: Permite a los usuarios acceder a sitios web mediante nombres amigables como www.google.com en lugar de 142.250.190.78.
Estructura Jerárquica: Organiza los nombres de dominio en una estructura jerárquica que facilita la administración y resolución de nombres.
Funcionamiento básico
El funcionamiento básico del DNS se puede dividir en dos partes principales:
Resolución de Nombres: El proceso mediante el cual se convierte un nombre de dominio en una dirección IP. Cuando un usuario introduce un nombre de dominio en su navegador, se realiza una consulta
DNS para obtener la dirección IP asociada a ese nombre.
El proceso de resolución de nombres DNS sigue estos pasos:
Consulta del Cliente DNS: Cuando un usuario intenta acceder a un sitio web, el navegador consulta el servidor
DNS local (recursivo) para resolver el nombre de dominio.
Servidor DNS Recursivo: Si el servidor
DNS local no tiene la respuesta en su caché, realiza una búsqueda en nombre del cliente. Este servidor puede consultar otros servidores
DNS para encontrar la respuesta.
Consulta al Servidor Raíz: El servidor
DNS recursivo primero contacta a uno de los servidores raíz del
DNS, que indica la dirección de los servidores
DNS de nivel superior (TLD) responsables del dominio de nivel superior (por ejemplo, .com, .org).
Consulta a Servidores TLD: El servidor recursivo contacta a los servidores TLD para obtener la dirección del servidor
DNS autoritativo que tiene la información sobre el dominio específico.
Consulta al Servidor Autoritativo: Finalmente, el servidor recursivo consulta al servidor
DNS autoritativo para obtener la dirección IP del dominio solicitado.
Respuesta al Cliente: Una vez que se obtiene la dirección IP, el servidor
DNS recursivo la devuelve al cliente, que puede entonces acceder al sitio web utilizando la dirección IP.
Tipos de Servidores DNS
En el sistema DNS, existen varios tipos de servidores que desempeñan roles específicos en la resolución de nombres de dominio. Los dos tipos principales de servidores DNS son:
Servidor DNS Recursivo: También conocido como servidor
DNS de resolución recursiva, se encarga de realizar consultas en nombre del cliente para resolver nombres de dominio. Su función es buscar la información requerida y devolverla al cliente.
Proceso de Consulta: Cuando un cliente realiza una consulta, el servidor recursivo busca la respuesta en su caché. Si no la encuentra, realiza una búsqueda iterativa a través de otros servidores
DNS hasta obtener la información.
Rol: Sirve como intermediario entre el cliente y los servidores
DNS autoritativos. Almacena en caché las respuestas para mejorar el tiempo de respuesta en futuras consultas.
Servidor DNS Autoritativo: Este servidor contiene la información definitiva sobre un dominio específico. Es responsable de proporcionar respuestas finales para las consultas de los nombres de dominio que gestiona.
Tipos de Servidores Autoritativos:
Primario (Master): Almacena la base de datos de la zona y es la fuente principal de información para esa zona.
Secundario (Slave): Obtiene y almacena una copia de la base de datos de la zona desde un servidor primario, proporcionando redundancia y balanceo de carga.
Rol: Proporciona respuestas directas a las consultas sobre los dominios que administra, sin necesidad de realizar consultas adicionales a otros servidores.
Registros DNS
En el sistema DNS, los registros DNS son entradas que contienen información sobre un dominio específico y cómo se deben manejar las solicitudes para ese dominio. Los tipos principales de registros DNS son:
A (Address Record): Asocia un nombre de dominio con una dirección IPv4. Es uno de los registros más fundamentales en el
DNS.
www.example.com. IN A 192.0.2.1
www.example.com. IN AAAA 2001:db8::1
www.example.com. IN CNAME example.com.
example.com. IN MX 10 mail.example.com.
example.com. IN NS ns1.example.com.
SOA (Start of Authority Record): Proporciona información sobre la zona de dominio, incluyendo el servidor principal, el administrador del dominio, y parámetros de actualización y expiración.
example.com. IN SOA ns1.example.com. admin.example.com. ( 2024082201 3600 1800 1209600 86400 )
PTR (Pointer Record): Utilizado para la resolución inversa, asociando una dirección IP con un nombre de dominio. Es esencial para algunas aplicaciones de red, como la verificación de la identidad del servidor.
68.9.217.172.in-addr.arpa. IN PTR ord38s09-in-f4.1e100.net.
Zonas DNS y Delegación
En el sistema DNS, una zona es una porción del espacio de nombres de dominio que es administrada por un servidor DNS específico. La delegación de zonas permite la distribución de la administración del espacio de nombres de dominio entre diferentes servidores DNS.
Zona DNS: Una zona
DNS es una parte del espacio de nombres que se gestiona como una unidad. Cada zona contiene información sobre un dominio y sus subdominios. Los registros
DNS en una zona son responsables de la resolución de nombres para esa zona. Por ejemplo, la zona para el dominio `example.com` podría contener registros para `www.example.com`, `mail.example.com`, y otros subdominios.
Delegación de Zonas: La delegación ocurre cuando un dominio se divide en varias partes, y cada parte es gestionada por servidores
DNS diferentes. La delegación se realiza mediante registros NS en una zona superior que apuntan a los servidores
DNS de una zona inferior. Por ejemplo, si `example.com` delega la administración de `subdomain.example.com` a otro conjunto de servidores
DNS, se incluirían registros NS en la zona `example.com` que apuntan a los servidores responsables de `subdomain.example.com`.
Zona de Caching: Es una zona utilizada por servidores
DNS recursivos para almacenar respuestas a consultas anteriores y reducir el tiempo de resolución para consultas repetidas.
Cacheo y TTL
En el sistema DNS, el cacheo y el TTL (Time To Live) son fundamentales para mejorar la eficiencia y reducir el tiempo de resolución de nombres.
Cacheo:
El cacheo permite que los servidores
DNS almacenen temporalmente las respuestas a las consultas. Esto evita tener que realizar la misma búsqueda repetidamente y reduce la carga en los servidores
DNS autoritativos.
Cuando un servidor
DNS recursivo recibe una respuesta de un servidor autoritativo, almacena esta información en su caché. Si una consulta posterior requiere la misma información, el servidor recursivo puede responder directamente desde su caché, acelerando el proceso de resolución.
El cacheo ayuda a distribuir la carga de consultas entre varios servidores y reduce el tiempo de espera para el usuario final.
TTL (Time To Live):
El TTL es un valor asociado a cada registro
DNS que indica cuánto tiempo la información debe permanecer en la caché antes de que se considere obsoleta.
Un TTL bajo significa que los registros se actualizan con mayor frecuencia, lo que puede ser útil para cambios rápidos en la configuración de
DNS, pero puede incrementar la carga en los servidores
DNS.
Un TTL alto reduce la carga en los servidores
DNS y mejora el rendimiento al mantener la información en caché durante más tiempo, pero puede retrasar la propagación de cambios en los registros
DNS.
Seguridad en DNS
La seguridad en DNS es crucial para proteger la integridad y la disponibilidad de la información de resolución de nombres.
DNSSEC (DNS Security Extensions):
DNSSEC es un conjunto de extensiones para
DNS que proporciona mecanismos de autenticación e integridad de datos. Permite que los clientes verifiquen que las respuestas
DNS provienen de una fuente confiable y que los datos no han sido alterados.
Utiliza firmas digitales y claves criptográficas para asegurar que las respuestas
DNS no sean modificadas durante el tránsito. Los registros DNSSEC incluyen datos como firmas digitales y claves públicas.
Ataques Comunes:
Cache Poisoning: Un ataque en el que un atacante inserta información falsa en la caché de un servidor
DNS, redirigiendo a los usuarios a sitios web maliciosos.
DDoS (Distributed Denial of Service): Un ataque que intenta saturar los servidores
DNS con un volumen masivo de consultas para hacerlos inoperativos.
Spoofing: Un ataque en el que el atacante envía respuestas
DNS falsas para engañar a los clientes y redirigirlos a sitios no deseados.
Herramientas y Comandos
Existen varias herramientas y comandos útiles para consultar y gestionar la información DNS. Estos comandos permiten a los administradores de red y a los usuarios verificar la configuración de DNS y diagnosticar problemas de red.
nslookup:: Herramienta de línea de comandos que permite realizar consultas de
DNS. Puede ser utilizada para obtener la dirección IP de un nombre de dominio o viceversa.
nslookup example.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: example.com
Address: 93.184.215.14
Name: example.com
Address: 2606:2800:21f:cb07:6820:80da:af6b:8b2c
nslookup 8.8.8.8
8.8.8.8.in-addr.arpa name = dns.google.
Authoritative answers can be found from:
dig:: Herramienta de línea de comandos más avanzada que proporciona información detallada sobre registros
DNS. Es ampliamente utilizada para diagnóstico y resolución de problemas
DNS.
dig www.example.com
; <<>> DiG 9.18.28-0ubuntu0.20.04.1-Ubuntu <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30652
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 3488 IN A 93.184.215.14
;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Fri Aug 23 11:21:27 CEST 2024
;; MSG SIZE rcvd: 60
dig www.example.com MX
<<>> DiG 9.18.28-0ubuntu0.20.04.1-Ubuntu <<>> www.example.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53976
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.example.com. IN MX
whois:: Comando utilizado para obtener información sobre el registro de un dominio, incluyendo el propietario, los servidores
DNS asociados y los datos de contacto.
whois example.com
Domain Name: EXAMPLE.COM
Registry Domain ID: 2336799_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.iana.org
Registrar URL: http://res-dom.iana.org
Updated Date: 2024-08-14T07:01:34Z
Creation Date: 1995-08-14T04:00:00Z
Registry Expiry Date: 2025-08-13T04:00:00Z
Registrar: RESERVED-Internet Assigned Numbers Authority
Registrar IANA ID: 376
Registrar Abuse Contact Email:
Registrar Abuse Contact Phone:
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Name Server: A.IANA-SERVERS.NET
Name Server: B.IANA-SERVERS.NET
DNSSEC: signedDelegation
DNSSEC DS Data: 370 13 2 BE74359954660069D5C63D200C39F5603827D7DD02B56F120EE9F3A86764247C
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
Algunos TLDs (dominios de nivel superior) pueden no tener un servidor whois dedicado. Por ejemplo, para dominios con el TLD
.es, la consulta whois se puede realizar a través del servicio web proporcionado por
dominios.es
Ejercicios
Ejercicio 1
Utiliza nslookup para encontrar la dirección IP de www.google.com.
Utiliza dig para realizar la misma consulta y compara los resultados.
¿Por qué podrían diferir las direcciones IP obtenidas con nslookup y dig?
Realiza una búsqueda inversa para obtener el nombre de dominio asociado a la dirección IP 172.217.9.68 utilizando dig -x.
Compara los resultados con nslookup.
Ejercicio 2
Utiliza dig para obtener el registro A y el registro AAAA de www.example.com.
Compara la información obtenida para direcciones IPv4 e IPv6.
Consulta los registros MX para example.com usando dig.
Consulta el registro CNAME para www.github.com y explica qué información proporciona.
Ejercicio 3
Realiza una consulta para
www.example.com y documenta cada paso del proceso de resolución de nombres
DNS, desde la consulta inicial hasta la respuesta final, utilizando
dig +trace.
Ejercicio 4
Ejercicio 5
Investiga y documenta al menos dos tipos comunes de ataques
DNS (como el ataque de envenenamiento de caché o el ataque DDoS) y cómo se pueden mitigar.
Ejercicio 6
Ejercicio 7