¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Linux
  3. Domain Name Server
Extrait - Linux Administración del sistema y explotación de los servicios de red (5ª edición)
Extractos del libro
Linux Administración del sistema y explotación de los servicios de red (5ª edición) Volver a la página de compra del libro

Domain Name Server

Domain Name Server

Este capítulo trata de la gestión de un servidor DNS Linux, de su configuración básica, de la definición de las zonas de nombres de dirección y de su seguridad.

1. Configuración básica de un servidor DNS

El objetivo de esta sección es de enseñarle a:

  • 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

El objetivo de esta sección es de enseñarle a:

  • 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...

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...

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...

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...