Domain Name Server
Requisitos y objetivos
1. Requisitos
Los conocimientos necesarios para la certificación LPC-1 son:
Comandos y supervisión de los procesos.
Edición de archivos.
Comandos de gestión de directorios y de archivos.
Los conocimientos adquiridos en los anteriores capítulos, especialmente:
Gestión de la red local.
Gestión de los servicios.
2. Objetivos
Al final de este capítulo, deberá poder:
Conocer la arquitectura y los principios de funcionamiento de DNS.
Configurar diferentes tipos de servidores DNS BIND (caché, recursivo, principal y secundario).
Crear y mantener archivos de zona.
Monitorizar y administrar los servicios BIND.
Configurar y gestionar un servidor BIND en un entorno seguro.
Domain Name Server
Este tema está dividido en dos partes con pesos diferentes.
1. Configuración básica de un servidor DNS
Peso |
3 |
Objetivos |
Configurar un servidor BIND autoritativo en una zona DNS y un servidor de caché recursivo. Esto incluye la gestión de la actividad del servidor y la configuración de los registros. |
a. Competencias principales
-
Terminología, archivos de configuración y herramientas de BIND 9.x.
-
Determinación de la ubicación de los archivos de zona en la configuración de BIND.
-
Recarga de los archivos de configuración y de zona después de haber hecho una modificación.
-
Conocer otros servidores DNS: dnsmasq, djbdns y PowerDNS.
b. Elementos empleados
-
/etc/named.conf
-
/var/named/
-
rndc
-
named-checkconf
-
kill
-
host
-
dig
2. Creación y gestión de las zonas DNS
Peso |
3 |
Objetivos |
Crear un archivo de zona para una zona directa o inversa y un archivo de declaración de servidores de nivel raíz. Esto incluye la configuración correcta de los registros, la incorporación de nombres de hosts en una zona y de zonas en DNS. Delegación de zonas con respecto a otro servidor DNS. |
a. Competencias principales
-
Terminología, archivos de configuración y herramientas de BIND 9.x.
-
Herramientas de interrogación de un servidor DNS.
-
Formato, contenido y ubicación de los archivos de zona DNS.
-
Diferentes métodos para añadir...
Configuración básica de un servidor DNS
DNS (Domain Name System) es un protocolo de resolución de nombres que permite hacer la relación entre un nombre de host y una dirección IP. Fue creado en 1983 por Paul Mockapetris y Jon Postel, y definido originalmente en las RFC 882 y 883 (que fueron después reemplazadas por las RFC 1034 y 1035). Se ha convertido en el estándar de facto para la resolución de nombres en Internet.
1. Principios de DNS
DNS es un sistema de resolución de nombres estructurado en arborescencia. Esta arborescencia virtual está organizada en dominios y en subdominios. Cada dominio o subdominio constituye un nudo de la arborescencia y puede contener nombres asociados a direcciones IP. Existe también una rama de la arborescencia que permite resolver direcciones IP en nombres de host o de servicios (resolución inversa).
Los dominios y subdominios los gestionan servidores de nombres DNS que cooperan entre ellos para dar a los clientes DNS la relación entre nombres y direcciones IP. Estas últimas pueden ser direcciones IPv4 o IPv6.
La arborescencia DNS puede ser privada o pública. La arborescencia DNS más grande es la de Internet.
a. Clientes y servidores DNS
Un cliente DNS (resolver) interroga a un servidor DNS para conocer la o las direcciones IP que corresponden a un nombre (resolución de nombre), o al contrario, para conocer el o los nombres que corresponden a una dirección IP (resolución de dirección o resolución inversa). El servidor DNS responde si tiene elementos suficientes, en caso contrario interrogará a otros servidores DNS y responderá al final a su cliente, ofreciéndole los elementos solicitados o un código de respuesta de fallo de la resolución.
Un nombre puede ser el nombre de máquina (nombre de host) o un nombre de servicio (por ejemplo, servidor de nombres, servidor de mensajería …). Un nombre puede corresponder a distintas direcciones IP, una dirección IP puede corresponder a distintos nombres.
Para poder gestionar un gran número de nombres, en evolución perpetua, de manera fiable y descentralizada, el sistema DNS está estructurado en un arborescencia que combina diferentes conjuntos independientes, gestionados por servidores DNS responsables de una parte de la arborescencia y cooperando entre...
Creación y gestión de las zonas DNS
Un servidor primario DNS gestiona una o varias zonas. Cada una corresponde a un dominio o a un subdominio de una arborescencia DNS. Opcionalmente puede proporcionar una copia de un archivo de zona, en solo lectura, a uno o a distintos servidores secundarios . Estos últimos pueden dar respuestas autoritativas a las solicitudes de resolución relacionadas con los registros de la zona. Sin embargo, solo el servidor primario puede actualizar el contenido del archivo de zona.
Un servidor DNS puede ser servidor primario para una o varias zonas y servidor secundario para otras zonas.
Para cada archivo de zona debería corresponder un archivo de zona de búsqueda inversa, que permite la resolución inversa (dar el nombre DNS relacionado con una dirección IP). También será necesaria la presencia de un archivo de zona de búsqueda inversa para las direcciones IPv6.
El contenido de un archivo de zona obedece a una sintaxis precisa y exacta, el mínimo error puede hacer que el servidor DNS no lo cargue.
1. Archivo de zona de búsqueda
La zona tiene que estar declarada en el archivo de configuración named.conf por una directiva zone especificando el nombre de la zona, su tipo y el nombre del archivo de zona.
El archivo de zona tiene que encontrarse en el directorio de datos declarado en el archivo de configuración named.conf, con la opción directory (por defecto /var/named o /var/cache/bind).
Ejemplo
Declaración de una zona en el archivo named.conf:
zone "lpic2test.com" IN {
type master;
file "lpic2.zone";
};
Se trata de una zona de tipo master, para la que el servidor DNS desempeña el rol de servidor principal.
Un archivo de zona contiene un registro de tipo SOA, que describe las características de la zona, y un conjunto de registros de recursos (tipo RR) para cada nombre de host o de servicio de la zona.
En un archivo de zona, los comentarios van desde el carácter ; hasta el final de la línea. El separador de los campos es un conjunto de caracteres espacio o tabulación, el separador de los registros está al final de la línea (excepto si el registro continúa a lo largo de varias líneas entre paréntesis).
a. Registro de zona (tipo SOA)...
Seguridad de un servidor DNS
Un servidor DNS es susceptible de recibir solicitudes desde las redes en las que participa, solicitudes que pueden venir de clientes DNS o de otros servidores DNS. Por lo tanto, puede constituir un punto de entrada hacia la organización de la que depende y ser utilizado para recuperar información sensible (direcciones y nombres de máquinas o de servicios de red).
Por otro lado, en la hipótesis de un fallo de seguridad en el programa ejecutable de BIND, un servidor DNS podría ser utilizado para tomar el control del sistema en el que se ejecuta, o para proporcionar información sensible (cuentas de usuarios, etc.).
Existen diferentes técnicas que permiten proteger un servidor BIND:
-
Limitar los clientes y servidores DNS autorizados a comunicar con él.
-
Repartir los datos nombres/direcciones entre distintos servidores.
-
Restringir las posibilidades de lectura-escritura del servidor a una rama de la arborescencia del sistema de archivos global (chroot jail).
1. Control de los clientes autorizados
Un servidor BIND puede estar configurado para tratar solamente las solicitudes de los hosts autorizados y/o rechazar las solicitudes de algunos hosts. La selección puede hacerse especificando direcciones IP o identificadores de red/subred.
a. La opción allow-query
La opción allow-query, en la directiva options del archivo de configuración named.conf, permite especificar los clientes DNS autorizados a interrogar al servidor BIND.
Sintaxis
allow-query {Lista};
La lista está compuesta por elementos delimitados con un carácter ’;’. Un elemento puede ser:
-
una dirección IP, IPv4 o IPv6,
-
un identificador de red, IPv4 o IPv6, en notación CIDR,
-
una palabra clave predefinida: none (ninguno), any (todos), localhost (máquina local) o localnets (redes de la máquina local),
-
el identificador de una lista definida anteriormente (acl),
-
uno de los elementos anteriores, precedido por el carácter ! para excluirlo de la lista autorizada.
Para simplificar la configuración, podemos definir en el archivo de configuración named.conf listas de direcciones, usando la directiva acl (Access Control List):
acl NombreLista {lista};
A continuación podemos usar la lista en las otras directivas, designándola por su nombre de acl.
La opción allow-recursion funciona igual...
Validación de lo aprendido: preguntas/respuestas
Responda a estas preguntas abiertas, parecidas a las que le harán en el examen de la certificación, pero estas últimas serán de tipo test o pidiéndole una respuesta corta que introducirá mediante el teclado.
1. Preguntas
1 ¿Qué comando solicita al servidor DNS local la recarga del archivo de la zona xxx.yyyy.es?
2 ¿Qué archivo determina el servidor DNS por defecto del sistema local?
3 ¿Qué comando permite comprobar la sintaxis del archivo de configuración del daemon BIND?
4 ¿Qué hace el daemon BIND cuando recibe la señal 1?
5 ¿Qué significa SOA?
6 ¿Cuál es la diferencia entre un registro de tipo A y de tipo AAAA?
7 ¿Cuáles son los tipos de una zona principal y de una zona secundaria?
8 ¿Qué opción o qué argumento del comando dig permite interrogar a un servidor DNS específico?
9 ¿Qué opción del comando named lanza el daemon en modo chroot jail?
10 ¿Qué comando permite generar las claves DNSSEC para realizar intercambios firmados digitalmente?
11 ¿Qué significa DANE?
2. Resultados
En las páginas siguientes encontrará las respuestas a estas preguntas. Por cada respuesta correcta cuente un punto.
Número de puntos: /11...
Trabajos prácticos
Aquí se proponen ejercicios para implementar algunos de los puntos abordados en el capítulo. En cada uno de ellos se da un ejemplo comentado de la realización del ejercicio, que deberá adaptar a la configuración de sus sistemas.
1. Instalación de un servidor DNS de caché
Configuramos un servidor BIND 9 como servidor de caché, en una distribución de tipo Red Hat.
Comandos y archivos utiles
-
yum
-
/etc/named.conf
-
named-checkconf
-
rndc
-
systemctl
-
/etc/nsswitch.conf, /etc/resolv.conf
-
firewall-cmd
-
host
-
dig
Etapas
1. |
Compruebe que el paquete BIND9 está instalado. |
2. |
Configure el servidor DNS BIND 9 como servidor de caché. |
3. |
Inicio o reinicie el servidor DNS BIND 9. |
4. |
Configure el sistema local como cliente DNS de su servidor DNS. |
5. |
Compruebe la resolución de nombres desde el sistema local. |
6. |
Configure otro sistema como cliente DNS del servidor DNS. |
7. |
Compruebe el buen funcionamiento de la resolución de nombres desde el otro sistema. |
8. |
Configure el daemon named en inicio automático, usando systemd. |
Resumen de los comandos y resultado en pantalla
1. |
Compruebe que el paquete de software BIND9 está instalado. |
[root@srvrh ~]# yum list bind
Paquetes instalados
bind.x86_64 32:9.11.36-3.el8 @rhel-8-for-x86_64-appstream-rpms
El paquete está instalado;
2. |
Configure el servidor DNS BIND 9 como servidor de caché. |
Comprobamos la configuración del servidor BIND:
[root@srvrh ~]# vi /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 {::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt"; ...