BIND-9.3.0p1

Introducción a BIND

El paquete BIND proporciona un servidor DNS y utilidades de cliente. Si sólo estás interesado en las utilidades, consulta BIND Utilities-9.3.0p1.

Información sobre el paquete

Dependencias de BIND

Opcional

OpenSSL-0.9.7f

Opcionales (para ejecutar el banco de pruebas)

Net-tools-1.60 (para ifconfig) y Perl modules: Net-DNS

Opcionales (para [re]construir la documentación)

OpenJade-1.3.2, JadeTeX-3.13, DocBook DSSSL Stylesheets-1.79

Instalación de BIND

Instala BIND ejecutando los siguientes comandos:

patch -Np1 -i ../9.3.0-patch1 &&
sed -i -e "s/dsssl-stylesheets/&-1.78/g" configure &&
./configure --prefix=/usr --sysconfdir=/etc \
    --enable-threads --with-libtool &&
make

Ahora, como usuario root:

make install &&
chmod 755 \
    /usr/lib/{lib{bind9,isc{,cc,cfg},lwres}.so.?.?.?,libdns.so.20.0.0} &&
mv /usr/share/man/man8/named.conf.5 /usr/share/man/man5 &&
cd doc &&
install -d -m755 /usr/share/doc/bind-9.3.0/{arm,draft,misc,rfc} &&
install -m644 arm/*.html \
    /usr/share/doc/bind-9.3.0/arm &&
install -m644 draft/*.txt \
    /usr/share/doc/bind-9.3.0/draft &&
install -m644 rfc/* \
    /usr/share/doc/bind-9.3.0/rfc &&
install -m644 \
    misc/{dnssec,ipv6,migrat*,options,rfc-compliance,roadmap,sdb} \
    /usr/share/doc/bind-9.3.0/misc

Para poder ejecutar al completo el banco de pruebas antes de instalar el paquete, necesitas activar algunas interfaces de red falsas (requiere ifconfig). Ejecuta los siguientes comandos para lanzar el banco de pruebas (tendrás que ser root para ejecutar los comandos ifconfig):

bin/tests/system/ifconfig.sh up &&
make check >check.log 2>&1 &&
bin/tests/system/ifconfig.sh down

Si lo deseas, ejecuta el siguiente comando para verificar que las 145 pruebas se han pasado correctamente:

grep "R:PASS" check.log | wc -l

Explicación de los comandos

patch -Np1 -i ../9.3.0-patch1: Hay una vulnerabilidad en el código DNSSEC. Mira http://www.kb.cert.org/vuls/id/938617. El parche corrige el fallo.

sed -i -e ... configure: Este comando fuerza que configure busque las hojas de estilo DSSSL en la localización estandar de BLFS.

--sysconfdir=/etc: Este comando fierza que BIND busque los ficheros de cnfiguración en /etc en vez de /usr/etc.

--enable-threads: Este parámetro activa la capacidad de multihilos.

--with-libtool: Este parámetro fuerza la construcción de las librerías dinámicas y enlaza los binarios instalados contra ellas.

cd doc; install ...: Estos comandos instalan la documentación adicional del paquete. Opcionalmente, omite cualquiera o todos estos comandos.

Configuración de BIND

Ficheros de configuración

named.conf, root.hints, 127.0.0, rndc.conf y resolv.conf

Información sobre la configuración

Configuraremos BIND para que se ejecute en una jaula chroot como usuario sin privilegios (named). Esta configuración es más segura, pues un compromiso en el DNS sólo puede afectar a unos pocos ficheros en el directorio HOME del usuario named.

Primero crearemos el usuario y grupo sin privilegios named:

groupadd named &&
useradd -m -c "BIND Owner" -g named -s /bin/false named

Ahora crearemos algunos ficheros, directorios y dispositivos que necesita BIND:

cd /home/named &&
mkdir -p dev etc/namedb/slave var/run &&
mknod /home/named/dev/null c 1 3 &&
mknod /home/named/dev/random c 1 8 &&
chmod 666 /home/named/dev/{null,random} &&
mkdir /home/named/etc/namedb/pz &&
cp /etc/localtime /home/named/etc

Ahora genera una llave para usarla en los ficheros named.conf y rdnc.conf usando el comando rndc-confgen:

rndc-confgen -b 512 | grep -m 1 "secret" | cut -d '"' -f 2

Crea el fichero named.conf, del cual named leerá la localización de los ficheros de zona, servidores raices de nombres y llaves DNS seguras:

cat > /home/named/etc/named.conf << "EOF"
 options {
     directory "/etc/namedb";
    pid-file "/var/run/named.pid";
    statistics-file "/var/run/named.stats";
       
 };
 controls {
     inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
 };
 key "rndc_key" {
     algorithm hmac-md5;
     secret "[Insert secret from rndc-confgen's output here]";
 };
 zone "." {
     type hint;
     file "root.hints";
 };
 zone "0.0.127.in-addr.arpa" {
     type master;
     file "pz/127.0.0";
 };

// Bind 9 now logs by default through syslog (except debug).
// These are the default logging rules.

logging {
     category default { default_syslog; default_debug; };
     category unmatched { null; };

  channel default_syslog {
      syslog daemon;                      // send to syslog's daemon
                                          // facility
      severity info;                      // only send priority info
                                          // and higher
  };

  channel default_debug {
      file "named.run";                   // write to named.run in
                                          // the working directory
                                          // Note: stderr is used instead
                                          // of "named.run"
                                          // if the server is started
                                          // with the '-f' option.
      severity dynamic;                   // log at the server's
                                          // current debug level
  };

  channel default_stderr {
      stderr;                             // writes to stderr
      severity info;                      // only send priority info
                                          // and higher
  };

  channel null {
     null;                                // toss anything sent to
                                          // this channel
  };
};



EOF

Crea el fichero rndc.conf con los siguientes comandos:

cat > /etc/rndc.conf << "EOF"
key rndc_key {
algorithm "hmac-md5";
    secret
    "[Insert secret from rndc-confgen's output here]";
    };
options {
    default-server localhost;
    default-key    rndc_key;
};
EOF

El fichero rndc.conf contiene información para controlar las operaciones de named con la utilidad rndc.

Crea un fichero de zona con el siguiente contenido:

cat > /home/named/etc/namedb/pz/127.0.0 << "EOF"
$TTL 3D
@      IN      SOA     ns.local.domain. hostmaster.local.domain. (
                        1       ; Serial
                        8H      ; Refresh
                        2H      ; Retry
                        4W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.local.domain.
1               PTR     localhost.
EOF

Crea el fichero root.hints con los siguientes comandos:

[Nota]

Nota

Debes tener la precaución de asegurarte de que no dejas espacios sobrantes en este fichero.

cat > /home/named/etc/namedb/root.hints << "EOF"
.                       6D  IN      NS      A.ROOT-SERVERS.NET.
.                       6D  IN      NS      B.ROOT-SERVERS.NET.
.                       6D  IN      NS      C.ROOT-SERVERS.NET.
.                       6D  IN      NS      D.ROOT-SERVERS.NET.
.                       6D  IN      NS      E.ROOT-SERVERS.NET.
.                       6D  IN      NS      F.ROOT-SERVERS.NET.
.                       6D  IN      NS      G.ROOT-SERVERS.NET.
.                       6D  IN      NS      H.ROOT-SERVERS.NET.
.                       6D  IN      NS      I.ROOT-SERVERS.NET.
.                       6D  IN      NS      J.ROOT-SERVERS.NET.
.                       6D  IN      NS      K.ROOT-SERVERS.NET.
.                       6D  IN      NS      L.ROOT-SERVERS.NET.
.                       6D  IN      NS      M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.     6D  IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     6D  IN      A       192.228.79.201
C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     6D  IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     6D  IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     6D  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
EOF

El fichero root.hints es una lista de servidores raices de nombres. Este fichero debe actualizarse periódicamente con la utilidad dig. Una copia actualizada de root.hints puede obtenerse de ftp://rs.internic.net/domain/named.root. Consulta el Manual de Referencia del Administrador de BIND 9 para mas detalles.

Crea o modifica resolv.conf para utilizar el nuevo servidor de nombres con los siguientes comandos:

[Nota]

Nota

Sustituye [yourdomain.com] con el nombre válido de tu propio dominio.

cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search [yourdomain.com]
nameserver 127.0.0.1
EOF

Establece los permisos de la jaula chroot con el siguiente comando:

chown -R named.named /home/named

Para iniciar el servidor DNS en el arranque, instala el guión de inicio /etc/rc.d/init.d/bind incluido en el paquete blfs-bootscripts-20050313:

make install-bind

Ahora inicia BIND con el nuevo guión de arranque:

/etc/rc.d/init.d/bind start

Comprobación de BIND

Comprueba la nueva instalación de BIND 9. Primero consulta la dirección de la máquina local con dig:

dig -x 127.0.0.1

Ahora prueba la búsqueda de un nombre externo, tomando nota de la diferencia de velocidad en repetidas consultas debido al caché. Lanza el comando dig dos veces sobre la misma dirección:

dig www.linuxfromscratch.org &&
dig www.linuxfromscratch.org

Verás que el resultado es casi instantáneo cuando named consulta las direcciones almacenadas. Para saber todas las opciones de configuración consulta el Manual de Referencia del Administrador de BIND que se en cuentra en el fichero bind-9.3.0/doc/arm/Bv9ARM.html del árbol de las fuentes.

Contenido

Programas instalados: dig, dnssec-keygen, dnssec-signzone, host, isc-config.sh, lwresd, named, named-checkconf, named-checkzone, nslookup, nsupdate, rndc y rndc-confgen
Librerías instaladas: libbind9.[so,a], libdns.[so,a], libisc.[so,a], libisccc.[so,a], libisccfg.[so,a] y liblwres.[so,a]
Directorios instalados: /home/named, /usr/include/bind9, /usr/include/dns, /usr/include/dst, /usr/include/isc, /usr/include/isccc, /usr/include/isccfg, /usr/include/lwres y /usr/share/doc/bind-9.3.0

Descripciones cortas

dig

Interroga servidores DNS.

dnssec-keygen

Es un generador de llaves para DNS seguro.

dnssec-signzone

Genera versiones firmadas de los ficheros de zona.

host

Una utilidad para búsquedas DNS.

lwresd

Es un servidor de nombres de sólo caché para usarlo procesos locales.

named

Es el demonio servidor de nombres.

named-checkconf

Comprueba la sintaxis de ficherosnamed.conf.

named-checkzone

Comprueba la validez del fichero de zona.

nslookup

Un programa usado para consultar servidores de nombres de dominios de Internet.

nsupdate

Se usa para suministrar peticiones de actualización de DNS.

rndc

Controla las operaciones de BIND.

rndc-confgen

Genera ficheros rndc.conf.

Last updated on 2005-04-15 21:38:34 +0200