BIND 9.2.2

Introducción a BIND 9.2.2

Localización de descarga (HTTP):		
Localización de descarga (FTP):			ftp://ftp.isc.org/isc/bind9/9.2.2/bind-9.2.2.tar.gz
Versión usada:					9.2.2
Tamaño del paquete:				4.8 MB
Estimación del espacio necesario en disco:	38 MB

El paquete BIND proporciona un servidor DNS y utilidades de cliente.

Instalación de BIND

Instala BIND ejecutando los siguientes comandos:

./configure --prefix=/usr &&
make &&
make install

Configuración de BIND

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 algunos ficheros y directorios que necesita BIND:

groupadd -g 200 named &&
useradd -m -g named -u 200 -s /bin/false named &&
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

Ficheros de configuración

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

Crea el fichero named.conf con los siguientes comandos:

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 "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
 };
 zone "." {
     type hint;
     file "root.hints";
 };
 zone "0.0.127.in-addr.arpa" {
     type master;
     file "pz/127.0.0";
 };
EOF

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:

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

Crea el fichero rndc.conf con los siguientes comandos:

cat > /etc/rndc.conf << "EOF"
key rndc_key {
algorithm "hmac-md5";
    secret
    "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
    };
options {
    default-server localhost;
    default-key    rndc_key;
};
EOF

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

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

Crea el guión de arranque de BIND:

cat > /etc/rc.d/init.d/bind << "EOF"
#!/bin/bash
# Inicio $rc_base/init.d/bind
# Basado en el guión sysklogd de LFS-3.1 y anteriores.
# Reescrito por Gerard Beekmans  - gerard@linuxfromscratch.org
source /etc/sysconfig/rc
source $rc_functions
case "$1" in
	start)
		echo "Iniciando named..."
		loadproc /usr/sbin/named -u named -t /home/named -c \
		        /etc/named.conf
		;;
	stop)
		echo "Parando named..."
		killproc /usr/sbin/named
		;;
	restart)
		$0 stop
		sleep 1
		$0 start
		;;
   reload)
                echo "Recargando named..."
                /usr/sbin/rndc -c /etc/rndc.conf reload
                ;;

	status)
		statusproc /usr/sbin/named
		;;
	*)
		echo "Uso: $0 {start|stop|restart|status}"
		exit 1
		;;
esac
# End $rc_base/init.d/bind
EOF

Añade los enlaces simbólicos en los niveles de arranque:

chmod 754 /etc/rc.d/init.d/bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc0.d/K49bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc1.d/K49bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc2.d/K49bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc3.d/S22bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc4.d/S22bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc5.d/S22bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc6.d/K49bind

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

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

Explicación de los comandos de configuración

groupadd -g 200 named
useradd -m -g named -u 200 -s /bin/false named
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
: Crea el usuario y grupo sin privilegios named, junto con los ficheros de dispositivos a los que named necesita acceder desde dentro de la jaula chroot.

cat > /home/named/etc/named.conf << "EOF" : Crea el fichero de configuración de BIND, del que named leerá la localización de los ficheros de zona, los servidores de nombres raíz y las llaves DNS seguras.

cat > /home/named/etc/namedb/pz/127.0.0 << "EOF" : Crea un fichero de zona simple.

cat > /home/named/etc/namedb/root.hints << "EOF" : El fichero root.hints es una lista de servidores de nombres raíz. Este fichero debe actualizarse periódicamente con la utilidad dig. Consulta los detalles en el Manual de Referencia del Administrador de BIND 9.

cat > /etc/rndc.conf << "EOF" : El fichero rndc.conf contiene información para controlar las operaciones de named con la utilidad rndc.

cat > /etc/resolv.conf << "EOF" : El fichero resolv.conf especificará la máquina local (127.0.0.1) como servidor de nombres.

cat > /etc/rc.d/init.d/bind << "EOF" : Crea el guión de arranque para BIND 9, usado para iniciar y parar el demonio del servidor de nombres, named.

Contenido

El paquete BIND contiene dig, host, rndc, rndc-confgen, named-checkconf, named-checkzone, lwresd, named, dnssec-signzone, dnssec-signkey, dnssec-keygen, dnssec-makekeyset y nsupdate.

Descripciones