“
INVESTIGACIÓN -
DNS BIND
integrantes:
• Mil Jiménez Carlos Alberto
• Ovando Arcos Angie Michelle
• Rodríguez Campos Rodrigo Irán
• Mosqueda Gómez Jesús Alexander
• Sánchez Córdova Yaditzy Arisbeth
Profesor:
Villanueva Guzmán Jorge Cein
Carrera:
Ing. En Sistemas Computacionales
Fecha de entrega:
04 de septiembre del 2024
7mo semestre
1
INTRODUCCIÓN
El Sistema de Nombres de Dominio (DNS) es una tecnología
fundamental en el funcionamiento de Internet, actuando como una
especie de "agenda telefónica" que traduce nombres de dominio
legibles por humanos, como [Link], en direcciones IP
numéricas que los dispositivos utilizan para comunicarse entre sí.
Sin DNS, la navegación por la web y muchos otros servicios de
Internet serían extremadamente complicados y poco prácticos para
los usuarios.
BIND (Berkeley Internet Name Domain) es uno de los servidores
DNS más utilizados en todo el mundo. Desarrollado originalmente en
la Universidad de California, Berkeley, BIND es conocido por su
flexibilidad, robustez y su capacidad para manejar grandes
volúmenes de tráfico. Como servidor de nombres de dominio, BIND
juega un papel crucial en la administración y resolución de nombres
de dominio, proporcionando servicios tanto a nivel de Internet como
en redes privadas.
Esta investigación se centrará en explorar cómo funciona el DNS, el
papel que juega BIND en este sistema, y su importancia para la
estabilidad y seguridad de las redes modernas. Además, se analizarán
las configuraciones y mejores prácticas para implementar y
mantener un servidor BIND, abordando también sus vulnerabilidades
y cómo mitigarlas.
2
1. ¿Qué es DNS?
El DNS, o sistema de nombres de dominio, traduce los nombres de
dominios aptos para lectura humana. DNS es una base de datos distribuida
cuya función es traducir los nombres de dominio en las redes. Es decir, que
se encargan de traducir la solicitud de un nombre (por ejemplo,
[Link]) a direcciones IP aptas para lectura por parte de
máquinas (por ejemplo, [Link]).
¿Para qué sirve el DNS?
Primero debemos entender que todo equipo conectado a la Red y toda
página o sitio web tienen asignados una dirección IP (es secuencia
numérica que ya hemos mencionado más arriba). Puesto que existen
millones de direcciones IP, nos resultaría imposible conocerlas todas,
además, nos apañamos mejor para memorizar nombres, por ello existen
los dominios y los DNS para traducir esas direcciones IP a un texto.
Así, el DNS sirve para traducir los nombres en direcciones IP y viceversa,
haciendo posible que podamos navegar por Internet con facilidad, solo
teniendo que introducir el nombre de una página o sitio web para acceder
a él.
El DNS se compone de tres partes con funciones diferentes:
• El cliente DNS que está instalado en el cliente (que somos nosotros)
y es el que se ocupa de realizar las peticiones de resolución de
nombres a los servidores DNS.
3
• El servidor DNS es el encargado de contestar las peticiones del
cliente, resolviendo los nombres a través de un sistema estructurado
en forma de árbol. El servidor DNS es la dirección que ponemos en
la configuración de nuestra conexión a Internet.
• Las zonas de autoridad son los servidores o grupos de ellos
encargado de resolver un conjunto de dominios en concreto (.com,
.es, .net, .org, etc.)
¿Cómo funciona el DNS?
Básicamente, el DNS funciona navegando a través de su estructura de
árbol mediante consultas, solicitando información y ascendiendo por los
diferentes niveles del árbol hasta encontrar la información requerida y
devolverla.
Cuando ingresamos el nombre de un sitio web en el navegador, el DNS
convierte ese nombre en una dirección IP y la busca primero en la memoria
caché del servidor DNS local de nuestro equipo o navegador (donde se
almacenan las direcciones que visitamos con frecuencia para ahorrar
tiempo y recursos). Si no encuentra el dominio allí, realiza la consulta al
servidor DNS de nuestro router, proporcionado por nuestro proveedor de
Internet, y si aún no lo encuentra, continúa con una búsqueda recursiva
hasta localizarlo.
Para entender qué realiza el DNS, podemos pensar en él como el
encargado de buscar en la base de datos la dirección o dominio al que
queremos acceder y que va realizando consultas en cada nivel, hasta
encontrar la información que buscaba, es decir, dar con la dar con la
dirección IP y permitirnos el acceso a ella.
4
DNS Recursor
Un DNS recursor se ocupa de enviar la información recursiva de un
servidor para consultar a otros servidores la solicitud en nombre del
cliente. Para obtener la información, el DNS recursor realiza una consulta
a un servidor DNS de nombres raíz.
Servidor de nombres raíz
El servidor de nombres raíz está en el nivel más alto del árbol y responderá
a la consulta del recursos indicándole lugares más específicos para
encontrar la información que está buscando; estos son los servidores de
nombres de dominio de nivel superior.
Servidor de nombres TLD
Los TLD o servidor de nombres de nivel superior (top level domains) se
encargan de toda la información de una extensión de dominio común (es
decir, engloban todos los .com, .es, .org, .net, .uk, .en, etc.). El TLD
responderá a la consulta hecha por el DNS haciendo referencia a un
servidor de nombres autorizado.
Servidor de Nombres Autorizado
El servidor de nombres autorizado posee los recursos originales para ese
dominio, toda la información, por lo que puede resolver la consulta hecha
por el DNS y traducirlo a la dirección IP que se estaba buscando.
Hay que tener en cuenta que lo habitual es que no se realicen estas
búsquedas en profundidad, puesto que el navegador o nuestro servidor
DNS guardará en la memoria caché las direcciones que visitemos
habitualmente. Pero en caso de tener que hacer todo el recorrido, el
proceso se lleva a cabo en cuestión de microsegundos.
5
Cómo se cambian las DNS
Las DNS se pueden cambiar en cualquier servicio de hospedaje que aloje
una página web, pero también podremos cambiar el servidor DNS que
nuestro proveedor de Internet nos haya adjudicado o configurado en el
router, de manera que en algunos casos podremos navegar más rápido, al
aumentar la velocidad de las consultas.
Así, podremos cambiar el DNS desde el router o desde cada equipo o
dispositivo individual que tengamos conectado a Internet. La ventaja de
hacerlo en el router es que todos los equipos conectados al mismo se
beneficiarán del cambio, sin embargo, para cambiarlo es necesario
consultar el manual de la marca y modelo de router que tengamos en casa.
Tipos de servicios de DNS
DNS autoritativo: Este tipo de servicio DNS permite a los desarrolladores
gestionar los nombres de DNS públicos mediante un mecanismo de
actualización. Su función principal es responder a consultas DNS,
traduciendo nombres de dominio en direcciones IP para que los
dispositivos puedan comunicarse entre sí. El DNS autoritativo tiene la
autoridad definitiva sobre un dominio y es responsable de proporcionar
respuestas a los servidores DNS recursivos con la información de la
dirección IP. Un ejemplo de un sistema de DNS autoritativo es Amazon
Route 53.
DNS recurrente: Los clientes generalmente no consultan directamente los
servicios de DNS autoritativo. En su lugar, suelen conectarse a un
solucionador o servicio de DNS recursivo. Este servicio actúa como un
intermediario, similar a un conserje de hotel, que obtiene la información
DNS por el usuario. Aunque no posee los registros
DNS, el DNS recursivo puede responder a las
consultas utilizando información almacenada en
caché o previamente guardada, proporcionando
la dirección IP o la fuente solicitada.
6
¿De qué manera un DNS dirige tráfico hacia su aplicación web?
El siguiente diagrama ofrece un resumen de cómo los servicios de DNS
recurrente o autoritativo trabajan de manera conjunta para dirigir a un
usuario final a su sitio web o aplicación.
1. Un usuario abre un navegador web, ingresa [Link] en la
barra de direcciones y pulsa Intro.
2. La solicitud de [Link] se dirige a un solucionador de DNS,
que normalmente es administrado por el proveedor de servicios de
Internet del usuario (ISP), como un proveedor de Internet por cable, un
proveedor de banda ancha DSL o una red corporativa.
3. El solucionador de DNS del ISP reenvía la solicitud de [Link]
a un servidor de nombres de raíz de DNS.
7
4. El solucionador de DNS del ISP reenvía la solicitud de [Link]
nuevamente, esta vez a uno de los servidores de nombres de TLD para
dominios .com. El servidor de nombres para dominios .com responde la
solicitud con los nombres de los cuatro servidores de nombres de Amazon
Route 53 que están asociados al dominio [Link].
5. El solucionador de DNS del ISP elige un servidor de nombres de Amazon
Route 53 y reenvía la solicitud de [Link] a dicho servidor.
6. El servidor de nombres de Amazon Route 53 busca en la zona alojada
de [Link] el registro de [Link], obtiene el valor
asociado, como la dirección IP de un servidor web, [Link], y devuelve
la dirección IP al solucionador de DNS.
7. El solucionador de DNS del ISP finalmente consigue la dirección IP que
el usuario necesita. El solucionador devuelve dicho valor al navegador
web. El solucionador de DNS también almacena en caché (almacena) la
dirección IP de [Link] por el periodo que se especifique para poder
responder con mayor rapidez la próxima vez que alguien busque
[Link]. Para obtener más información, consulte el período de vida
(TTL).
8. El navegador web envía una solicitud de [Link] a la
dirección IP que obtuvo del solucionador de DNS. Aquí es donde se
encuentra el contenido, por ejemplo, un servidor web que se ejecuta en
una instancia de Amazon EC2 o un bucket de Amazon S3 que está
configurado como un punto de enlace de sitio web.
9. El servidor web u otro recurso en [Link] devuelve la página web
para [Link] al navegador web y este muestra la página.
8
1.2 ¿Que es Bind?
BIND (Berkeley Internet Name Domain) es uno de los servidores DNS más
utilizados y ampliamente implementados en todo el mundo. Es un
software de código abierto que permite la resolución de nombres de
dominio, traduciéndolos en direcciones IP que los dispositivos utilizan para
comunicarse entre sí. BIND es conocido por su robustez, flexibilidad y
capacidad para manejar grandes volúmenes de tráfico DNS, lo que lo
convierte en una opción popular tanto para pequeñas redes como para
grandes infraestructuras de Internet.
La implementación estándar de DNS para Unix es BIND y consiste en un
módulo cliente llamado "resolver" que se integra a las aplicaciones, y un
demonio llamado named, que debe ejecutarse en aquella computadora
que se designe como server de nombres del dominio.
Si bien el tratamiento completo de la configuración de este paquete de
software escapa al alcance de este trabajo, se discutirán a continuación los
aspectos básicos de su configuración.
Tipos de Servidores de Nombres
BIND soporta tres modos de configuración para el servidor de nombres:
Primario: fuente autorizada de información sobre un determinado
dominio, lo cual significa que un servidor de nombres primario es quien
tiene la información completa y más actualizada sobre los nombres de
computadoras pertenecientes al dominio. Dicha información se obtiene a
partir de archivos de datos construidos por el administrador de la red
(llamados archivos de zona).
Secundario: mantiene una copia de la información sobre un determinado
dominio, transfiriéndola periódicamente desde un servidor de nombres
primario (operación llamada transferencia de zona). También se considera
fuente autorizada de información sobre ese dominio.
9
Cache: responde consultas haciendo peticiones a otros servidores de
nombres, y las almacena localmente para agilizar futuras consultas por la
misma información. Sin embargo, no mantiene la base de datos de ningún
dominio (esto es, no tiene autoridad sobre ningún dominio en particular).
Archivos de configuración principal
[Link] requiere un archivo de configuración llamado
/etc/[Link] y varios archivos de zona, según los dominios que se
vayan a administrar.
El archivo /etc/[Link] define parámetros generales para la
configuración del servidor, en especial el modo de operación (primario,
secundario o cache) y la ubicación y nombres de los archivos de zona.
El archivo /etc/[Link] típico para configurar el server de nombres
primario de una red como la del dominio [Link] contendrá la
siguiente información:
;
; Server de nombres primario de [Link]
;
directory /etc
primary [Link] [Link]
primary [Link] [Link]
primary [Link] [Link]
cache . [Link]
Cada línea del archivo /etc/[Link] especifica una directiva de
configuración, excepto aquellas que comiencen con punto y coma (;), que
se consideran comentarios y son ignoradas.
La directiva directory indica el directorio donde named podrá encontrar
los archivos de datos que se mencionen a continuación.
10
La directiva primary configura el server de nombres para ser servidor
primario del dominio que se indica a continuación, obteniendo la lista de
nombres y direcciones desde el archivo que figura como último
parámetro. En ejemplo anterior, puede verse que el server de nombres
será server primario de los dominios [Link] (el dominio asignado a
la organización), [Link] (el dominio de reversa
correspondiente a la dirección asignada a la red) y [Link] (el
dominio de reversa de la red de loopback).
Finalmente, con la directiva cache se indica a named el archivo a utilizar
como contenido inicial del cache de direcciones y nombres. Es en este
archivo donde se indican las direcciones IP de los servidores de nombres
del dominio raíz. La configuración de un server secundario resulta similar:
;
; Server de nombres secundario de [Link]
;
directory /etc
secondary [Link] [Link] [Link]
secondary [Link] [Link] [Link]
primary [Link] [Link]
cache . [Link]
En lugar de la directiva primary se utiliza la directiva secondary, cuyos
argumentos son el nombre del dominio, la dirección IP del server primario
desde donde transferir los archivos de datos y el nombre del archivo local
donde almacenarlos.
Dichos archivos serán creados automáticamente la primera vez que el
server se inicie, y serán actualizados periódicamente.
11
• OPTIONS:
Aquí se configuran las opciones globales del servidor, como la ubicación
de otros archivos de configuración, el puerto de escucha (por defecto es
el 53), y políticas generales de resolución.
directory: Define el directorio base donde BIND buscará los archivos de
zona.
forwarders: Especifica los servidores DNS a los que se reenviarán las
consultas que el servidor no pueda resolver localmente.
allow-query: Define quién puede realizar consultas al servidor.
allow-transfer: Establece qué servidores pueden solicitar transferencias de
zona.
recursion: Habilita o deshabilita la recursión en el servidor.
• ZONES:
Define las zonas DNS, que son esencialmente dominios o partes de
dominios que el servidor DNS maneja. Cada zona puede ser de tipo
autoritativo, secundaria o de reenvío.
type master: Indica que el servidor es el autoritativo para la zona.
type slave: Indica que el servidor es secundario y obtiene su información
de otro servidor maestro.
type forward: Especifica que el servidor simplemente reenviará las
consultas a otro servidor.
• LOGGING:
Permite incluir otros archivos de configuración dentro de [Link] para
modularizar la configuración.
12
Archivos de Zona
Al definir un server primario, utilizando la directiva primary, el
administrador indica el nombre del archivo de zona desde donde obtener
los datos.
La diferencia entre zona y dominio es sutil: una zona contiene la
información sobre un dominio y todos aquellos subdominios que no han
sido delegados a otro server. La partición en subdominios se realiza
fundamentalmente para agrupar conceptualmente computadoras
relacionadas, idealmente con el objetivo de delegar en sus usuarios la
administración de la información sobre las mismas. Sin embargo, puede
ocurrir que los mismos no estén en condiciones de hacerse cargo de esas
tareas (por falta de equipamiento, capacitación, etc.), en cuyo caso el
administrador de la red puede optar por crear los subdominios, pero no
delegarlos. Obviamente, en un dominio cuyos subdominios han sido todos
delegados, la zona y el dominio coinciden.
Un archivo de zona está compuesto por registros, cuya sintaxis es la
siguiente (los campos entre corchetes son opcionales):
[nombre] [ttl] IN tipo datos
en donde:
nombre: es el nombre de la entidad que el registro define (direcciones,
nombres, etc.). Dicho nombre es relativo al dominio actual y si se omite,
se considera igual al valor del campo nombre del registro anterior.
ttl: es un valor numérico (en segundos) que indica cuanto tiempo ese
registro debe conservarse en el cache antes de ser refrescado (es la
abreviatura de Time To Live). Si se omite, se considera igual al ttl por
defecto de la zona (ver registro SOA, mas adelante).
tipo: identifica el tipo de registro:
13
datos: información específica, dependiente del tipo de registro.
El archivo de zona para un dominio como [Link], llamado
[Link] como se indicó en [Link], tendrá el siguiente
contenido:
;
; server de nombres primario de [Link]
;
@ IN SOA [Link].
[Link]. (
1998062202 ; nro de serie
43200 ; refresco cada 12 horas
3600 ; reintentar despues de 1 hora
3600000 ; expirar despues de 1000 horas
360000 ; ttl por defecto en 100 horas
)
[Link]. IN NS [Link].
14
[Link]. IN MX 10 [Link].
localhost IN A [Link]
antares IN A [Link]
rigel IN A [Link]
cygni IN A [Link]
orion IN A [Link]
altair IN A [Link]
orion IN A [Link]
aldebaran IN A [Link]
orion IN A [Link]
andromeda IN A [Link]
canopus IN A [Link]
cygni IN A [Link]
centauri IN A [Link]
andromeda IN A [Link]
mailhost IN CNAME [Link].
www IN CNAME [Link].
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----
Como puede verse, el archivo comienza con un registro SOA que declara
el inicio de una zona. El símbolo @ en el registro SOA hace referencia al
dominio actual, esto es, el que se indica en la directiva primary del archivo
[Link].
El primer nombre que figura continuación es el nombre de la computadora
que contiene este archivo, seguido de la dirección de correo del
administrador del DNS (obsérvese que no contiene un @ sino un punto
luego del nombre del usuario).
15
Seguidamente aparecen entre paréntesis valores de configuración
generales de la zona, como el ttl por defecto y el período de refresco de
los datos (esto es, cada cuanto named deberá releer el archivo de zona
para verificar si ha habido cambios en el mismo).
Particularmente importante es el número de serie del archivo de zona
(primer parámetro numérico del registro SOA). Este número deberá ser
incrementado por el administrador cada vez que introduzca un cambio en
los datos de la zona. Por medio de ese valor, un servidor secundario sabrá
que debe pedir una transferencia de zona a fin de actualizar su copia local
del archivo. Es práctica común escribir ese número como una codificación
de la fecha en que se realizo el cambio (en formato Año/Mes/Día), seguida
de un numero de versión, por si se realiza más de un cambio en la misma
fecha.
Obsérvese que ninguno de los registros posteriores especifica un valor de
ttl; todos ellos toman el valor por defecto especificado en el registro SOA.
Además los registros NS y MX no especifican el campo nombre.
A continuación del registro SOA aparece el registro NS, que define que el
nombre del servidor de nombres de [Link] es la computadora
llamada cygni. Lo sigue un registro MX, que indica que el correo
electrónico destinado a éste domino deberá ser enviado a la computadora
andrómeda (obsérvese que el nombre que se especifica debe terminar
con punto; si no fuera así, se asumiría que ese nombre debe completarse
con el nombre del dominio actual).
Finalmente, se listan los registros A, que establecen la relación entre un
nombre y una dirección IP y un par de registros CNAME, que definen
aliases para ciertas computadoras (por ejemplo, especifican que
[Link] es equivalente a [Link]).
16
Archivos de zona para dominios de reversa
El archivo [Link] indicaba que se administrarían dos dominios de
reversa: uno para las direcciones correspondientes a la dirección de red y
otro para la red de loopback.
Los archivos de zona de un dominio de reversa contienen registros de
tipo PTR. En dichos registros se utilizan los bytes de la parte de host de la
dirección IP para el campo nombre, tomándolos en orden inverso. El dato
asociado a cada registro es el nombre correspondiente a esa dirección IP.
Control de Acceso y Seguridad:
acl:
Define listas de control de acceso para gestionar quién puede interactuar
con el servidor DNS. Ejemplo:
acl "trusted" {
[Link]/24;
[Link]/8;
};
view:
Permite crear diferentes vistas de zona para diferentes clientes. Por
ejemplo, puede mostrar un conjunto de registros DNS para usuarios
internos y otro diferente para usuarios externos.
DNSSEC (DNS Security Extensions):
dnssec-enable:
Habilita o deshabilita el soporte de DNSSEC.
dnssec-validation:
Controla si BIND debe validar las respuestas utilizando DNSSEC.
17
auto-dnssec:
Permite la firma automática de las zonas con DNSSEC.
Control Remoto (rndc):
[Link]:
Contiene las claves de autenticación que permiten el control remoto
seguro de BIND con la herramienta rndc (Remote Name Daemon Control).
Registros de Log y Auditoría:
logging:
Configura cómo y dónde se almacenan los logs del servidor. Se puede
personalizar para registrar diferentes categorías de mensajes (consultas,
errores, transferencias de zona, etc.) en archivos separados.
logging {
channel default_file {
file "/var/log/[Link]";
severity dynamic;
print-time yes;
};
category default { default_file; };
};
18
Configuraciones Adicionales:
statistics-channels:
Permite acceder a estadísticas de rendimiento y uso de BIND mediante una
interfaz HTTP.
rate-limit:
Implementa políticas de limitación de tasas para mitigar ataques de
denegación de servicio.
response-policy:
Define políticas de respuesta condicionales para ciertas consultas DNS,
utilizadas frecuentemente en filtros de contenido o bloqueos de dominios
maliciosos.
Configuración del "resolver"
Como ya se dijo, las aplicaciones que utilizan los servicios de un server DNS
lo hacen por medio de un módulo del sistema operativo llamado resolver.
En Unix, el resolver se configura por medio del archivo /etc/[Link],
cuyo contenido mínimo consta de las siguientes directivas:
domain [Link]
nameserver [Link]
La directiva domain indica cual es el dominio por defecto, mientras que la
directiva nameserver especifica la dirección IP del servidor de nombres a
utilizar para peticiones de resolución. Pueden indicarse varias de estas
directivas, para utilizar servidores de nombres alternativos.
19
Consultando interactivamente un servidor de nombres
El paquete BIND provee una herramienta de depuración llamada nslookup
que puede utilizarse para hacer consultas interactivamente a un servidor
de nombres.
Al ser ejecutada desde la línea de comandos, nslookup informa cual es el
server de nombres que se utilizará y queda a la espera de comandos del
usuario:
$ nslookup
Default server: [Link]
Address: [Link]
> _
Si se escribe el nombre de una computadora, nslookup realizará la consulta
al server de nombres y nos mostrará el resultado:
$ nslookup
Default server: [Link]
Address: [Link]
> Rigel
Server: [Link]
Address: [Link]
Name: [Link]
Address: [Link]
De manera similar, es posible utilizar nslookup para hacer consultas sobre
otro dominio:
20
$ nslookup
Default server: [Link]
Address: [Link]
> [Link]
Server: [Link]
Address: [Link]
Name: [Link]
Address: [Link]
Estos elementos y configuraciones permiten a BIND ser una herramienta
extremadamente versátil y potente en la gestión de DNS, adecuándose a
una amplia variedad de necesidades, desde pequeños entornos
corporativos hasta redes de gran escala en Internet.
21
CONCLUSIÓN
Por lo antes visto, entendimos que BIND es un componente esencial
en la infraestructura de DNS, conocido por su robustez y flexibilidad
en la resolución de nombres de dominio a direcciones IP. Su
configuración permite una gestión detallada de zonas DNS, políticas
de seguridad y control de acceso, lo que lo convierte en una
herramienta poderosa tanto para redes pequeñas como para grandes
sistemas de Internet.
Las capacidades de BIND, incluyendo soporte para DNSSEC y
herramientas de control remoto, aseguran una administración
eficiente y segura de los servicios de nombres de dominio,
facilitando la comunicación y el acceso a recursos en la red global.
22
BIBLIOGRAFÍA
• AWS, (2023) - ¿Qué es DNS?: [Link]
dns/#:~:text=El%20DNS%2C%20o%20sistema%20de,ejemplo%2C%20192.0.2.44).
• Ayudaley - ¿Qué es DNS y para qué sirve?
[Link]
• Yúbal Fernández, (19 Abril 2024) - Cómo cambiar o configurar los DNS:
[Link]
• Configuración de un servidor DNS usando BIND:
[Link]
[Link]#:~:text=La%20implementación%20estándar%20de%20DNS,server%2
0de%20nombres%20del%20dominio.
23