Continuamos con nuestra serie de artículos y en éste trataremos los siguientes aspectos:
- Instalación
- Directorios y archivos principales
Antes de continuar, les recomendamos no dejar de leer:
Instalación
En una Consola y como el usuario root instalamos el bind9:
aptitude install bind9
También debemos instalar el paquete dnsutils el cual tiene las herramientas necesarias para hacer consultas DNS y diagnosticar el funcionamiento:
aptitude install dnsutils
Si desean consultar la documentación que viene en el repositorio:
aptitude install bind9-doc
La documentación se almacenará en el directorio /usr/share/doc/bind9-doc/arm y el archivo índice o de la Tabla de Contenidos es el Bv9ARM.html. Para abrirlo ejecute:
firefox /usr/share/doc/bind9-doc/arm/Bv9ARM.html
Cuando instalamos el bind9 en Debian, también lo hace el paquete bind9utils el cual nos aporta varias herramientas muy útiles para mantener una instalación de trabajo de un BIND. Entre ellas encontraremos rndc, named-checkconf y named-checkzone. Por otra parte, el paquete dnsutils aporta toda una serie de programas clientes del BIND entre los que estarán el dig y el nslookup. Todas estas herramientas o comandos las usaremos en los artículos siguientes.
Para conocer todos los programas de cada paquete debemos ejecutar como el usuario root:
dpkg -L bind9utils dpkg -L dnsutils
O ir al Synaptic, buscar el paquete, y ver cuales son los archivos instalados. Sobre todo los que se instalan en las carpetas /usr/bin o /usr/sbin.
Si queremos conocer más sobre cómo utilizar cada herramienta o programa instalado, debemos ejecutar:
man <nombre del programa>
Directorios y archivos principales
Cuando instalamos Debian se crea el archivo /etc/resolv.conf. Este archivo o “Fichero de configuración del servicio resolver”, contiene varias opciones que por defecto son el nombre del dominio y la dirección IP del servidor DNS declarado durante la instalación. Como el contenido de la ayuda del archivo viene en español y es muy claro, recomendamos la lean mediante el comando man resolv.conf.
Después de instalado el bind9 en Squeeze, se crean al menos los directorios siguientes:
/etc/bind /var/cache/bind /var/lib/bind
En el directorio /etc/bind nos encontramos, entre otros, con los siguientes archivos de la configuración:
named.conf named.conf.options named.conf.default-zones named.conf.local rndc.key
En el directorio /var/cache/bind crearemos los archivos de las Zonas Locales las cuales trataremos posteriormente. Por curiosidad ejecuten en una Consola los siguientes comandos como el usuario root:
ls -l /etc/bind ls -l /var/cache/bind
Por supuesto que el último directorio no contendrá nada, pues aun no hemos creado ninguna Zona Local.
El dividir la configuración del BIND en varios archivos se hace por comodidad y claridad. Cada archivo tiene una función específica como veremos a continuación:
named.conf: Archivo principal de configuración. En él se incluyen los archivosnamed.conf.options, named.conf.local y named.conf.default-zones.
named.conf.options: Opciones generales del servicio DNS. La directiva: directory “/var/cache/bind” le indicará al bind9 donde buscar los archivos de las Zonas Locales creadas. También declaramos aquí los servidores “Forwarders” o en una traducción aproximada “Adelantadores” hasta un número máximo de 3, los cuales no son más que servidores DNS externos que podemos consultar desde nuestra red (a través de un Firewall por supuesto) que responderán a las preguntas o solicitudes que nuestro DNS local no sea capaz de responder.
Por ejemplo, si estamos configurando un DNS para la LAN192.168.10.0/24, y queremos que uno de nuestros Forwarders sea un Servidor de Nombres de la UCI, debemos declarar la directiva forwarders { 200.55.140.178; }; dirección IP que corresponde al servidor ns1.uci.cu.
De esta forma podremos consultarle a nuestro servidor DNS local cual es la dirección IP del host yahoo.es (el cual evidentemente no está en nuestra LAN), ya que nuestro DNS le preguntará al de la UCI si el sabe cual es la dirección IP de yahoo.es, y luego nos dará a nosotros un resultado sea satisfactorio o no. También y en el propio archivo named.conf.option declararemos otros aspectos importantes de la configuración como veremos más adelante.
named.conf.default-zones: Como su nombre lo indica son las Zonas por Defecto. Aquí se le configura al BIND el nombre del archivo que contiene la información de los Servidores Raíces o Root Servers necesarios para iniciar la caché DNS, más concretamente el archivodb.root. También se le indica al BIND que tenga plena Autoridad (que sea Autoritario) en la resolución de nombres para el localhost, tanto en consultas Directas como Inversas, y lo mismo para las zonas “Broadcast”.
named.conf.local: Archivo donde declaramos la configuración local de nuestro servidor DNS mediante el nombre de cada una de las Zonas Locales, y cuales serán los Archivos de Registros DNS que mapearan los nombres de los equipos conectados a nuestra LAN con su dirección IP y viceversa.
rndc.key: Archivo generado que contiene la Clave para controlar el BIND. Mediante la utilidad de control del servidor BIND rndc, seremos capaces de recargar la configuración del DNS sin necesidad de reiniciarlo con el comando rndc reload. Muy útil cuando hacemos cambios en los archivos de las Zonas Locales.
En Debian los archivos de las Zonas Locales se pueden ubicar también en /var/lib/bind; mientras que en otras distribuciones como Red Hat y CentOS normalmente se ubican en /var/lib/named u otros directorios en dependencia del grado de seguridad implementado.
Nosotros seleccionamos el directorio /var/cache/bind pues es el que sugiere por defecto Debian en el archivo named.conf.options. Podemos emplear cualquier otro directorio siempre y cuando le indiquemos al bind9 donde buscar los archivos de las zonas, o le demos el camino absoluto de cada una de ellas en el archivo named.conf.local. Es muy saludable utilizar los directorios recomendados por la distribución que estemos usando.
Está fuera del alcance de este artículo el tratar sobre la seguridad adicional que implica el crear una Jaula o “Chroot” para el BIND. También lo está el tema de la seguridad mediante el contexto SELinux. Aquellos que necesiten implementar tales características, deben acudir a manuales o a literatura especializada. Recuerden que el paquete de documentación bind9-doc se instala en el directorio /usr/share/doc/bind9-doc.
Bueno Señores, hasta aquí la 2da Parte. No queremos extendernos más en un solo artículo debido a las buenas recomendaciones de nuestro Jefe. ¡Al fin! entraremos en el meollo de la Configuración y Pruebas del BIND… en el próximo capítulo.
felicidades muy buen articulo!
Muchas gracias..
Es importante de menos esto por seguridad: No dejar un dns abierto (open resolver)
Referencias:
1) http://www.google.com/search?hl=en&q=spamhaus+ataque
2) http://www.hackplayers.com/2013/03/el-ataque-ddos-spamhaus-y-la-amenaza-de-dns-abiertos.html
cito:
«…Por ejemplo, Open DNS Resolver Project (openresolverproject.org), el esfuerzo de un grupo de expertos en seguridad para arreglar esto, estima que actualmente existen 27 millones de «Open Recursive Resolvers», y 25 millones de ellos son una amenaza significativa, latente, esperando a desatar su furia de nuevo contra un nuevo objetivo..»
Saludos
Muy bueno meter a la gente adentro de un servicio tan importante hoy en día como es DNS.
Lo que sí, si puedo señalar algo, es tu lamentable traducción de «forwarders», que parece como si se hubiera sacado de google translate. La traducción correcta es «Servidores de reenvío» o «Reenviadores».
Todo lo demás, genial.
Saludos
Problema de semántica. Sí Usted Reenvía una petición a otro para obtener una Respuesta, no está Adelantado una solicitud hacia otro nivel. Creí que el mejor tratamiento en Español Cubano, era el de Adelantadores porque me refería a Pasar o Adelantar una pregunta que yo (el DNS local) no podía responder. Simple. Más fácil me hubiera sido escribir el artículo en Inglés. No obstante, aclaro siempre lo de Mis Traducciones. Gracias por su oportuno comentario.
De lujo ;)!
Saludos!
¿Y para OpenSUSE?
CREO sirve para cualquier distro. Varía la ubicación de los archivos de las zonas, creo yo. no?
Gracias a todos por comentar.. y acepto de buena ganas sus sugerencias.. 😉