|
|
Cómo configurar un servidor de nombres de dominio (DNS), parte I.Autor: Joel Barrios DueñasCorreo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: darkshram@jabber.org Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
Introducción.Bind (Berkeley Internet Name Domain).BIND (acrónimo de Berkeley Internet Name Domain) es una implementación del protocolo DNS y provee una implementación libre de los principales componentes del Sistema de Nombres de Dominio, los cuales incluyen:
El Servidor DNS BIND es ampliamente utilizado en la Internet (99% de los servidores DNS) proporcionando una robusta y estable solución. DNS (Domain Name System).DNS (acrónimo de Domain Name System) es una base de datos distribuida y jerárquica que almacena la información necesaria para los nombre de dominio. Sus usos principales son la asignación de nombres de dominio a direcciones IP y la localización de los servidores de correo electrónico correspondientes para cada dominio. El DNS nació de la necesidad de facilitar a los seres humanos el acceso hacia los servidores disponibles a través de Internet permitiendo hacerlo por un nombre, algo más fácil de recordar que una dirección IP. Los Servidores DNS utilizan TCP y UDP en el puerto 53 para responder las consultas. Casi todas las consultas consisten de una sola solicitud UDP desde un Cliente DNS seguida por una sola respuesta UDP del servidor. TCP interviene cuando el tamaño de los datos de la respuesta exceden los 512 bytes, tal como ocurre con tareas como transferencia de zonas. NIC (Network Information Center).NIC (acrónimo de Network Information Center o Centro de Información sobre la Red) es una institución encargada de asignar los nombres de dominio en Internet, ya sean nombres de dominio genéricos o por países, permitiendo personas o empresas montar sitios de Internet mediante a través de un ISP mediante un DNS. Técnicamente existe un NIC por cada país en el mundo y cada uno de éstos es responsable por todos los dominios con la terminación correspondiente a su país. Por ejemplo: NIC México es la entidad encargada de gestionar todos los dominios con terminación .mx, la cual es la terminación correspondiente asignada a los dominios de México.FQDN (Fully Qualified Domain Name).FQDN (acrónimo de Fully Qualified Domain Name o Nombre de Dominio Plenamente Calificado) es un Nombre de Dominio ambiguo que especifica la posición absoluta del nodo en el árbol jerárquico del DNS. Se distingue de un nombre regular porque lleva un punto al final. Como ejemplo: suponiendo que se tiene un dispositivo cuyo nombre de anfitrión es «maquina1» y un dominio llamado «dominio.com», el FQDN sería «maquina1.dominio.com.», así es que se define de forma única al dispositivo mientras que pudieran existir muchos anfitriones llamados «maquina1», solo puede haber uno llamado «maquina1.dominio.com.». La ausencia del punto al final definiría que se pudiera tratar tan solo de un prefijo, es decir «maquina1.dominio.com» pudiera ser un dominio de otro más largo como «maquina1.dominio.com.mx». La longitud máxima de un FQDN es de 255 bytes, con una restricción adicional de 63 bytes para cada etiqueta dentro del nombre del dominio. Solo se permiten los caracteres A-Z de ASCII, dígitos y el carácter «-». No se distinguen mayúsculas y minúsculas. Desde 2004, a solicitud de varios países de Europa, existe el estándar IDN (acrónimo de Internationalized Domain Name) que permite caracteres no-ASCII, codificando caracteres Unicode dentro de cadenas de bytes dentro del conjunto normal de caracteres de FQDN. Como resultado, los limites de longitud de los nombres de dominio IDN dependen directamente del contenido mismo del nombre. Componentes de un DNS.Los DNS operan a través de tres componentes: Clientes DNS, Servidores DNS y Zonas de Autoridad. Clientes DNS.Son programas que ejecuta un usuario y que generan peticiones de consulta para resolver nombres. Básicamente preguntan por la dirección IP que corresponde a un nombre determinado. Servidores DNS.Son servicios que contestan las consultas realizadas por los Clientes DNS. Hay dos tipos de servidores de nombres:
Un gran número de problemas de operación de servidores DNS se atribuyen a las pobres opciones de servidores secundarios para las zona de DNS. De acuerdo al RFC 2182, el DNS requiere que al menos tres servidores existan para todos los dominios delegados (o zonas). Una de las principales razones para tener al menos tres servidores para cada zona es permitir que la información de la zona misma esté disponible siempre y forma confiable hacia los Clientes DNS a través de Internet cuando un servidor DNS de dicha zona falle, no esté disponible y/o esté inalcanzable. Contar con múltiples servidores también facilita la propagación de la zona y mejoran la eficiencia del sistema en general al brindar opciones a los Clientes DNS si acaso encontraran dificultades para realizar una consulta en un Servidor DNS. En otras palabras: tener múltiples servidores para una zona permite contar con redundancia y respaldo del servicio. Con múltiples servidores, por lo general uno actúa como Servidor Maestro o Primario y los demás como Servidores Esclavos o Secundarios. Correctamente configurados y una vez creados los datos para una zona, no será necesario copiarlos a cada Servidor Esclavo o Secundario, pues éste se encargará de transferir los datos de manera automática cuando sea necesario. Los Servidores DNS responden dos tipos de consultas:
Zonas de Autoridad.Permiten al Servidor Maestro o Primario cargar la información de una zona. Cada Zona de Autoridad abarca al menos un dominio y posiblemente sus sub-dominios, si estos últimos no son delegados a otras zonas de autoridad. La información de cada Zona de Autoridad es almacenada de forma local en un fichero en el Servidor DNS. Este fichero puede incluir varios tipos de registros:
Las zonas que se pueden resolver son:
Herramientas de búsqueda y consulta.Mandato host.El mandato host una herramienta simple para hacer búsquedas en Servidores DNS. Es utilizada para convertir nombres en direcciones IP y viceversa. De modo predefinido realiza las búsquedas en las Servidores DNS definidos en el fichero /etc/resolv.conf, pudiendo definirse de manera opcional el Servidor DNS a consultar.
Lo anterior realiza una búsqueda en los Servidores DNS definidos en el fichero /etc/resolv.conf del sistema, devolviendo como resultado una dirección IP.
Lo anterior realiza una búsqueda en los Servidor DNS en la dirección IP 200.33.146.217, devolviendo una dirección IP como resultado. Mandato dig.El mandato dig (domain information groper) es una herramienta flexible para realizar consultas en Servidores DNS. Realiza búsquedas y muestra las respuestas que son regresadas por los servidores que fueron consultados. Debido a su flexibilidad y claridad en la salida es que la mayoría de los administradores utilizan dig para diagnosticar problemas de DNS. De modo predefinido realiza las búsquedas en las Servidores DNS definidos en el fichero /etc/resolv.conf, pudiendo definirse de manera opcional el Servidor DNS a consultar. La sintaxis básica sería:
Donde servidor corresponde al nombre o dirección IP del Servidor DNS a consultar, nombre corresponde al nombre del registro del recurso que se está buscando y TIPO corresponde al tipo de consulta requerido (ANY, A, MX, SOA, NS, etc.) Ejemplo:
Lo anterior realiza una búsqueda en el Servidor DNS en la dirección IP 200.33.146.209 para los registros MX para el dominio alcancelibre.org.
Lo anterior realiza una búsqueda en los Servidores DNS definidos en el fichero /etc/resolv.conf del sistema para los registros NS para el dominio alcancelibre.org.
Lo anterior realiza una búsqueda en los Servidor DNS en la dirección IP 200.33.146.217 para los registros NS para el dominio alcancelibre.org. Mandato jwhois (whois).El mandato jwhois es una herramienta de consulta a través de servidores WHOIS. La sintaxis básica es:
Ejemplo:
Loa anterior regresa la información correspondiente al dominio alcancelibre.org. Equipamiento lógico necesario.
Instalación a través de yum.Si se utiliza de CentOS 5, Red Hat™ Enterprise Linux 5 o White Box Enterprise Linux 5, o versiones posteriores, se puede instalar utilizando lo siguiente:
Instalación a través de Up2dateSi se utiliza de Red Hat™ Enterprise Linux 4, o versiones posteriores, se puede instalar utilizando lo siguiente:
Procedimientos.SELinux y el servicio named.A mediados de 2008, Common Vulnerabilities and Exposures List y US-CERT reportaron que el investigador Dan Kaminsky descubrió que varias implementaciones de DNS (BIND 8 y 9 antes de 9.5.0-P1, 9.4.2-P1, y 9.3.5-P1; Microsoft DNS en todas las versiones de Windows 2000 SP4, XP SP2 y SP3, y Server 2003 SP1 y SP2). La vulnerabilidad permite a atacantes remotos falsificar tráfico DNS a través de ciertas técnicas de envenamiento de cache contra servidores de resolución recursiva (es decir cuando se usa la opción allow-recursion abierta a todo el mundo, como ocurre en los servidores DNS públicos), y se relaciona a insuficiente aleatoriedad de las ID de transacción y puertos de origen. Es decir, vulnerabilidad de entropía de insuficiencia de zócalos (sockets) de DNS (DNS Insufficient Socket Entropy Vulnerability). En otras palabras, un atacante puede contaminar el cache de un servidor DNS y hacer que los clientes se conecten hacia direcciones falsas. Es importante aclarar que esta es realmente una vulnerabilidad del protocolo DNS. SELinux protege casi por completo al servicio named contra la vulnerabilidad anteriormente descrita. Es por tal motivo que es importante utilizar SELinux. A fin de que SELinux permita al servicio named trabajar con permisos de escritura para zonas maestras, es decir un esquema de servidor maestro con servidores esclavos o bien un servidor DNS dinámico, utilice el siguiente mandato:
Para definir que se desactive la protección de SELinux para el servicio named, haciendo que todo lo anteriormente descrito en esta sección pierda sentido y el servidor sea parcialmente susceptible a la vulnerabilidad de Kaminski, utilice el siguiente mandato:
Sí realiza el procedimiento anterior, es importante configurar la función de consultas recursivas exclusivamente para redes en la que se confíe plenamente. Sí se va a configurar un DNS dinámico, SELinux impedirá crear los ficheros *.jnl (journal, ficheros de diario) correspondientes. Las zonas de DNS dinámicas deben ser almacenadas en directorios específicos que solo contengan zonas dinámicas. Sugiero crear el directorio /var/named/chroot/var/named/dynamics para tal fin y configurar éste para qué pertenezca al usuario y grupo named, tenga permisos de lectura, escritura y ejecución para el usuario y grupo named (770) y tenga los contextos de SELinux de usuario de sistema (system_u), rol de objeto (object_r) y tipo cache del servicio named (named_cache_t) a fin de permitir escritura en este directorio.
Cualquier fichero de zona que se vaya a utilizar a través del servicio named, debe contar con los contextos de SELinux de usuario de sistema (system_u), rol de objeto (object_r) y tipo zona del servicio named (named_zone_t). En el siguiente ejemplo se utiliza el mandato chcon para cambiar los contextos del fichero mi-dominio.zone y definir los contextos de SELinux mencionados:
Preparativos.Idealmente se deben definir primero los siguiente datos:
Es importante tener bien en claro que los puntos 2, 3 y 4 involucran datos que deben existir previamente y estar plenamente resueltos por otro servidor DNS; Lo anterior quiere decir no pueden utilizar datos que sean parte o dependan del mismo dominio que se pretende resolver. De igual modo, el servidor donde se implementará el DNS deberá contar con un nombre FQDN y que esté previa y plenamente resuelto en otro DNS. Como regla general se generará una zona de reenvío por cada dominio sobre el cual se tenga autoridad plena y absoluta y se generará una zona de resolución inversa por cada red sobre la cual se tenga plena y absoluta autoridad. Es decir, si se es propietario del dominio «cualquiercosa.com», se deberá generar el fichero de zona correspondiente a fin de resolver dicho dominio. Por cada red con direcciones IP privadas sobre la cual se tenga control y plena y absoluta autoridad, se deberá generar un fichero de zona de resolución inversa a fin de resolver inversamente las direcciones IP de dicha zona. Regularmente la resolución inversa de las direcciones IP públicas es responsabilidad de los proveedores de servicio ya que son estos quienes tienen la autoridad plena y absoluta sobre dichas direcciones IP. Todos los ficheros de zona deben pertenecer al usuario «named» a fin de que el servicio named pueda acceder a estos o bien modificar éstos en el caso de tratarse de zonas esclavas. Creación de los ficheros de zona.Los siguientes corresponderían a los contenidos para los ficheros de zona requeridos para la red local y por el NIC con el que se haya registrado el dominio. Cabe señalar que en las zonas de reenvío siempre se especifica al menos un registro MX (Mail Exchanger o intercambiador de correo), para definir donde está el servidor de correo para el dominio, y que se utilizan tabuladores (tecla TAB) en lugar de espacio. Solo necesitará sustituir nombres y direcciones IP, y quizá añadir nuevos registros para complementar su red local. Configuración mínima para /var/named/chroot/etc/named.conf.La configuración mínima del fichero /var/named/chroot/etc/named.conf, y que permitirá utilizar el servicio para todo tipo de uso, es la siguiente:
Lo anterior define como opciones que el directorio predeterminado será /var/named (ruta relativa a /var/named/chroot), de define un fichero conde se almacena la información del caché en /var/named/data/cache_dump.db; un fichero de estadísticas en /var/named/data/named_stats.txt, un fichero de estadísticas específicas en lo concerniente al uso de la memoria en /var/named/data/named_mem_stats.txt; consultas recursivas permitidas solo a 127.0.0.1 y 192.168.1.0/24, se definen como ejemplos de servidores DNS para reenviar consultas a 200.33.146.209 y 200.33.146.217 (solo éstos utilizar desde redes de Prodigy Internet de Telmex, definir en lugar de éstos los servidores DNS del proveedor de acceso a Internet); se define que la primera opción al realizar una consulta será reenviar a los DNS que se acaban de definir; se incluyen los ficheros de configuración /etc/named.rfc1912.zones, que corresponde a las zonas del RFC 1912, y la firma digital única que se generó automáticamente tras instalar el paquete bind; Se define también que los controles se realizan solo desde 127.0.0.1 hacia 127.0.0.1 utilizando la firma digital única. El fichero conviene asegurarse que el fichero /var/named/chroot/etc/named.conf tenga los contextos correspondientes para SELinux a fin de evitar potenciales problemas de seguridad.
Zona de reenvío red local /var/named/chroot/var/named/red-local.zone.
Zona de resolución inversa red local /var/named/chroot/var/named/1.168.192.in-addr.arpa.zone
Zona de reenvío del dominio /var/named/chroot/var/named/dominio.com.zoneSuponiendo que hipotéticamente se es la autoridad para el dominio «dominio.com», se puede crear una Zona de Reenvío con un contenido similar al siguiente:
Continúa en Cómo configurar un servidor de nombres de dominio (DNS), parte II. |
Comentarios Recientes