[Lista ArNOG] Server DNS

Nicolas Antoniello nantoniello en gmail.com
Mar Feb 9 12:38:26 -03 2021


Hola Santiago,

Si querés configurar un servidor recursivo local estos serían (en forma muy
resumida, pero con esto queda funcionando) los pasos a seguir (esto está
hecho sobre un Ubuntu):
Tené en cuenta que deberás agregarle todo lo necesario para asegurar que tu
servidor no quede abierto al mundo y efectivamente sea "local".
Otro aspecto que tendrías que agregar es algún mecanismo para monitorear
ciertas cosas tanto del hardware como del propio servidor, con la finalidad
de saber que es lo que sucede y si todo está funcionando correctamente.
Adicionalmente y dado que estarás también validando DNSSEC es crítico que
tu servidor tenga bien configurado el tema del tiempo (fecha/hora). Para
eso te recomiendo mirar alguna guía de configuración de NTP (es bastante
simple de configurar pero es muy importante pues todo el manejo de firmas
de DNSSEC se basa, entre otros, en los tiempos especificados de validez de
las mismas).
Finalmente, esto es una idea muy general para que el servidor quede
funcionando... si lo piensas utilizar en un ambiente de producción para dar
servicios de resolución a terceros te recomiendo antes tomar experiencia
utilizándolo internamente en una fase de prueba.

Probalo primero (siempre) en un ambiente controlado y de testing porque
además lo escribí medio rápido basado en una configuración genérica de un
tutorial (así que no lo tomes como una verdad absoluta)... 😊

1)    Configuración del servidor BIND

a.    Instalando los paquetes de software necesarios

# apt-get install bind9 bind9utils bind9-doc dnsutils


Para instalar los paquetes necesarios para ejecutar BIND, usaremos los
comandos anteriores (apt-get).

Si el proceso de instalación nos pregunta si queremos instalar alguno de
los paquetes, diremos yes.

Los comandos anteriores instalan paquetes BIND, documentación BIND,
utilidades BIND (por ejemplo, para verificar la configuración, etc.) y
utilidades DNS.

b.    Es conveniente agregar una regla para permitir el puerto 53 en caso
de que tengamos un firewall en ejecución (Ubuntu a menudo viene con un
firewall UFW en ejecución):

# ufw allow 53



2)    Configurando BIND

a.    Acceder a la carpeta de BIND
# cd /etc/bind

b.    La instalación estándar ya traerá la información para localizar los
servidores raíz
# more db.root





;       This file holds the information on root name servers needed

;       to initialize cache of Internet domain name servers

;       (e.g. reference this file in the "cache  .  <file>"

;       configuration file of BIND domain name servers).

;

;       This file is made available by InterNIC

;       under anonymous FTP as

;           file                /domain/named.cache

;           on server           FTP.INTERNIC.NET

;       -OR-                    RS.INTERNIC.NET

;

;       last update:    February 17, 2016

;       related version of root zone:   2016021701

;

; formerly NS.INTERNIC.NET

;

.                        3600000      NS    A.ROOT-SERVERS.NET.

A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4

A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:ba3e::2:30

;

; FORMERLY NS1.ISI.EDU

;

…

; OPERATED BY ICANN

;

.                        3600000      NS    L.ROOT-SERVERS.NET.

L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42

L.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:3::42

;

; OPERATED BY WIDE

;

.                        3600000      NS    M.ROOT-SERVERS.NET.

M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33

M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35

; End of file







3)    Editando los archivos de configuración de BIND



a.    El archivo de configuración (named.conf.options) para la instalación
estándar se encuentra en el directorio BIND (/etc/bind)

# more named.conf.options


options {

      directory "/var/cache/bind";



      // If there is a firewall between you and nameservers you want

      // to talk to, you may need to fix the firewall to allow

      // multiple

      // ports to talk.  See http://www.kb.cert.org/vuls/id/800113



      // If your ISP provided one or more IP addresses for stable

      // nameservers, you probably want to use them as forwarders.

      // Uncomment the following block, and insert the addresses

      // replacing

      // the all-0's placeholder.



      // forwarders {

      //   0.0.0.0;

      // };



      //=============================================================

      // If BIND logs error messages about the root key being

      // expired,

      // you will need to update your keys.  See

      // https://www.isc.org/bind-keys

      //=============================================================

      dnssec-validation auto;



      auth-nxdomain no;    # conform to RFC1035

      listen-on-v6 { any; };

};







b.    Realizaremos las siguientes acciones en la configuración (explicación
de las opciones)

§  Para simplificar la práctica, hemos deshabilitado la capacidad de
recibir consultas usando el protocolo IPv6 (solo consultas usando IPv4).
Sin embargo, recomendamos que cualquier servidor DNS recursivo tenga
configurados los protocolos IPv4 e IPv6 en todos los casos de
implementaciones de producción.

//listen-on-v6 { any; };

§  Tenga en cuenta que, de forma predeterminada, BIND tendrá habilitada la
validación de DNSSEC.

dnssec-validation auto;

Cuando *dnssec-validation* se establece en automático, el valor
predeterminado es la zona raíz de DNS como ancla de confianza. BIND incluye
una copia de la clave raíz que se mantiene actualizada automáticamente. Si
se establece en yes, se debe configurar un ancla de confianza
explícitamente utilizando la opción de claves administradas o claves
confiables. (*managed-keys* / *trusted-keys* option).

§  Habilitamos la recursión en forma explícita.

recursion yes;

§  Creamos una lista de acceso para permitir solo consultas de DNS desde el
propio servidor o desde nuestra red (para evitar que el servidor recursivo
esté abierto al mundo).

listen-on port 53 { localhost; 10.0.1.0/24; };
allow-query { localhost; 10.0.1.0/24; };

Se deberá agregar también la lista de prefijos IPv6 desde los cuales
queremos aceptar consultas.



Para que el archivo de configuración sea el siguiente:

# nano named.conf.options


options {

      directory "/var/cache/bind";



      // If there is a firewall between you and nameservers you want

      // to talk to, you may need to fix the firewall to allow multiple

      // ports to talk.  See http://www.kb.cert.org/vuls/id/800113



      // If your ISP provided one or more IP addresses for stable

      // nameservers, you probably want to use them as forwarders.

      // Uncomment the following block, and insert the addresses replacing

      // the all-0's placeholder.



      // forwarders {

      //   0.0.0.0;

      // };




//========================================================================

      // If BIND logs error messages about the root key being expired,

      // you will need to update your keys.  See
https://www.isc.org/bind-keys


//========================================================================



      dnssec-validation auto;



      auth-nxdomain no;    # conform to RFC1035

      listen-on-v6 { any; };



      listen-on port 53 { localhost; 10.0.1.0/24; };

      allow-query { localhost; 10.0.1.0/24; };



      recursion yes;

};





c. Finally, we use the BIND functionality to confirm that there are no
errors in the configuration files and restart the BIND server to apply the
configuration changes

# named-checkconf
# service bind9 restart




Listo, allí tendrás funcionando un servidor recursivo de DNS con un mínimo
de configuración para limitar las consultas y permitir solo desde las redes
que especifiques en las opciones "listen-on port 53" y "allow-query".


Luego busco algo similar para la configuración básica de un autoritativo
(que es un poco más complejo).


Saludos,

Nico






El mar, 9 de feb. de 2021 a la(s) 11:29, SANTIAGO TRUCCO - INTERNET CORDOBA
(cstrucco en internetcordoba.com.ar) escribió:

> Hola estoy necesitando quien pueda compartir una guía para instalar un DNS
> local, estuve revisando sobre un *bind9* pero necesito si alguien tiene
> una guia paso a paso.
> --
>
> TRUCCO CARLOS SANTIAGO
>
> CEO - INTERNET CORDOBA
> Email: cstrucco en internetcordoba.com.ar
> Website: www.internetcordoba.com.ar
> Telefono: 0351-5685968 - INT: 501
> Mobile: 0351-153675710
> <https://www.facebook.com/Internetcordoba>
> <https://www.instagram.com/internetcordoba>
>
>
>
> _______________________________________________
> Lista mailing list
> Lista en arnog.com.ar
> http://mailmancabase.interdotnet.com.ar/mailman/listinfo/lista
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mailmancabase.interdotnet.com.ar/pipermail/lista/attachments/20210209/bd7df0a3/attachment-0001.html>


Más información sobre la lista de distribución Lista