En esta oportunidad veremos como instalar y configurar un servidor DNS con Bind9 en Debian 4.0 Etch. El protocolo de DNS (Domain Name System) es el que básicamente permite realizar la traducción entre un nombre de una página Web como lo entendemos nosotros (por ejemplo www.vensign.com) a una dirección IP (172.30.30.1) que es lo que realmente entienden los servidores en Internet. Es un servicio fundamental y sin el simplemente no existiría Internet como la conocemos hoy en día.
BIND9 es un servidor de DNS de código abierto, gratis y que es utilizado por la gran mayoría de los servidores DNS que existen en Internet.
Voy a suponer que tienes un cierto nivel de conocimientos de Linux (no mucho se requiere realmente) solo que sepas abrir un terminal y escribir comandos eso es todo. Te aconsejo que sigas esta guía paso a paso para que le saques el mayor provecho.
Esta instalación fue probada en servidores Debian Etch 4.0. Funciona bien en servidores basados en Debian y en versiones de Ubuntu previas a 8.04.
Vamos a comenzar…
En este caso vamos a hacer la configuración típica de servidores DNS con un servidor primario o maestro con dirección IP 192.168.249.1 y un servidor secundario con dirección IP 192.168.249.2 en caso de que falle el primero. Se utilizará como dominio ejemplo ejemplo.lan
Instalando BIND 9.5
Esta parte aplica tanto para instalar el servidor maestro como el secundario, para esto ejecutamos los siguientes comandos como root:
apt-get update && apt-get upgrade
Para asegurarnos de tener actualizados nuestros repositorios:
apt-get bind9 dnsutils
Con esto se instala el servidor Bind9 y los dnsutils son varias utilidades de DNS que nos serviran más adelante para comprobar nuestro servidor.
Chroot Bind
Cuando se habla de realizar un Chroot a un servicio en Linux se refiere que se va a crear una jaula a su alrededor, esto se hace para medidas de seguridad sobre todo en servidores que están expuestos a Internet como es el caso de nuestros servidores DNS. Esto hace que el servicio se ejecute con su propio usuario dentro de directorios que no tienen privilegios de root para que si llegan a quedar comprometidos el atacante no pueda accesar a otros recursos del sistema.
Para hacer el Chroot de Bind ejecutamos los siguientes pasos:
/etc/init.d/bind9 stop
Para detener el bind
Luego apuntamos el archivo de configuración al directorio que vamos a crear para el Chroot:
vim /etc/default/bind9
Puedes utilizar el editor de tu preferencia en cambio de vim (puede ser nano, emacs, etc)
Y modificamos la línea que dice OPTIONS=”-u bind” por:
OPTIONS="-u bind -t /var/lib/named"
Luego creamos los directorios necesarios para el Chroot
mkdir -p /var/lib/named/etc mkdir /var/lib/named/dev mkdir -p /var/lib/named/var/cache/bind mkdir -p /var/lib/named/var/run/bind/run
Ahora movemos la configuración del Bind de /etc a /var/named/etc:
mv /etc/bind /var/lib/named/etc
Creamos un link simbólico entre la configuración vieja y la nueva para no tener problemas cuando se actualice el Bind:
ln -s /var/lib/named/etc/bind /etc/bind
Luego creamos los dispositivos necesarios para la jaula:
mknod /var/lib/named/dev/null c 1 3 mknod /var/lib/named/dev/random c 1 8
Y por último modificamos los permisos necesarios:
chmod 666 /var/lib/named/dev/* chown -R bind:bind /var/lib/named/var/* chown -R bind:bind /var/lib/named/etc/bind
Con esto ya creamos la Jaula y Bind tiene su propio espacio de directorios para sus procesos.
Ahora debemos modificar sysklogd para que se registren (log) los eventos del Bind:
vim /etc/default/syslogd
Puedes utilizar el editor de tu preferencia en cambio de vim (puede ser nano, emacs, etc)
Y modificamos la línea que dice SYSLOGD=”" por:
SYSLOGD="-a /var/lib/named/dev/log"
Ahora debemos modificar el archivo resolv.conf de nuestro servidor:
vim /etc/resolv.conf
Y agregamos la siguientes líneas (recuerda cambiar ejemplo.lan por tu nombre de dominio):
search ejemplo.lan nameserver 127.0.0.1
Reiniciamos el sysklogd:
/etc/init.d/sysklogd restart
E iniciamos el Bind:
/etc/init.d/bind9 start
Este procedimiento lo tenemos que repetir para el servidor secundario.
Ahora vamos a configurar nuestros servidores.
Configurar Servidor Maestro
Ahora que tenemos el Bind9 instalado vamos a proceder a configurarlo, lo primero que vamos a hacer es decirle que envie las peticiones externas hacia el servidor DNS de nuestro ISP o hacia cualquiera que queramos, yo en lo personal utilizo OpenDNS. Para esto modificamos el archivo /etc/bind/named.conf.options:
vim /etc/bind/named.conf.options
Y descomentamos las líneas que dicen forwarders para que quede de la siguiente forma:
forwarders { 208.67.222.222 };
Recuerda utilizar la IP del DNS de tu ISP, también puedes utilizar la que está en el ejemplo ya que es la de OpenDNS.
Luego vamos a crear nuestra zona que no es más que lo que va a manejar nuestro dominio de ejemplo.lan para esto seguimos los siguientes puntos:
mkdir /etc/bind/zones/
vim /etc/bind/zones/master_ejemplo.lan
Luego dentro de este archivo colocamos la siguiente configuración:
$TTL 3D
@ IN SOA ns1.ejemplo.lan. hostmaster.ejemplo.lan. (
200808161 ; serial, fecha AAAA-MM-DD + serial
8H ; refrescamiento, en segundos
2H ; reentrar, segundos
4W ; expira, segundos
1D ) ; minimo, segundos
;
TXT "Ejemplo.LAN, servicio de DNS"
NS ns1 ; Direccion Inet del servidor de dominio
NS ns2
MX 10 mail ; Exchanger de Mail primario
localhost A 127.0.0.1
ns1 A 192.168.249.1
ns2 A 192.168.249.2
www CNAME ns1
Este es un archivo de Zona básico donde declaramos el dominio de ejemplo.lan, los servidores de dominio ns1 y ns2, además declaramos como servidor www (servidor web) a ns1 pero podría ser cualquier otro servidor donde tengas instalado Apache o algún otro servidor Web.
Ahora editamos el archivo /etc/bind/named.conf.local:
vim /etc/bind/named.conf.local
Y escribimos las siguientes líneas:
zone "ejemplo.lan" {
type master;
file "/etc/bind/zones/master_ejemplo.lan";
};
Ya con esto podemos probar nuestro servidor master a ver si funciona:
/etc/init.d/bind9 restart
ping ns1.ejemplo.lan
Deberia responder nuestro servidor ns1, recuerda que el servidor debe tener una dirección IP fija y que no debe estar corriendo ningún cliente dhcp.
Tambien podemos probar ejecutando:
host ns1.ejemplo.lan
Debería responder con la dirección de nuestro servidor.
Por útilmo para configurar nuestro servidor master modificamos el archivo /etc/bind/named.conf.options y agregamos la siguiente línea:
dnssec-enable yes;
Creamos una llave segura esto es para que la comunicación entre el servidor master y el secundario sea encriptada.
dnssec-keygen -a hmac-md5 -b 128 -n host ejemplo.lan
Anota el resultado ya que lo utilizaremos tanto en el servidor MASTER como en el SECUNDARIO.
Modificamos el archivo /etc/bind/named.conf y agregamos las siguientes líneas:
include "/etc/bind/rndc.key";
key "TRANSFER" {
algorithm hmac-md5;
secret "---HASHKEY---";
};
server 192.168.249.2 {
keys {
TRANSFER;
};
};
Donde dice HASHKEY colocas la clave que generamos anteriormente. Y luego reiniciamos el servidor Bind:
/etc/init.d/bind9 restart
Con esto ya tenemos configurado nuestro servidor master vayamos ahora con nuestro servidor secundario.
Configurar Servidor Secundario o Esclavo DNS
La instalación del servidor Bind en el Secundario es exactamente igual que la del servidor Maestro, voy a mostrar sólo los archivos de configuración que necesitan modificación:
mkdir /etc/bind/zones/
vim /etc/bind/zones/slave_ejemplo.lan
Luego dentro de este archivo colocamos la siguiente configuración:
$TTL 3D
@ IN SOA ns1.ejemplo.lan. hostmaster.ejemplo.lan. (
200808161 ; serial, fecha AAAA-MM-DD + serial
8H ; refrescamiento, en segundos
2H ; reentrar, segundos
4W ; expira, segundos
1D ) ; minimo, segundos
;
TXT "Ejemplo.LAN, servicio de DNS"
NS ns1 ; Direccion Inet del servidor de dominio
NS ns2
MX 10 mail ; Exchanger de Mail primario
localhost A 127.0.0.1
ns1 A 192.168.249.1
ns2 A 192.168.249.2
www CNAME ns1
Esto es idéntico al master solo que identificamos como slave al archivo. Luego modificamos el archivo:
vim /etc/bind/named.conf.local
Y escribimos:
zone "ejemplo.lan" {
type slave;
file "/etc/bind/zones/slave_ejemplo.lan";
masters { 192.168.249.1; };
allow-notify { 192.168.249.1; };
};
Luego modificamos:
vim /etc/bind/named.conf
Y agregamos las siguientes líneas
server 192.168.249.1 {
keys {
TRANSFER;
};
};
Y repetimos lo que hicimos de último con el servidor Maestro.
Modificamos el archivo /etc/bind/named.conf y agregamos las siguientes líneas:
include “/etc/bind/rndc.key”;
key “TRANSFER” {
algorithm hmac-md5;
secret “—HASHKEY—”;
};
server 192.168.249.1 {
keys {
TRANSFER;
};
};
Donde dice HASHKEY colocas la clave que generamos anteriormente. Y luego reiniciamos el servidor Bind:
/etc/init.d/bind9 restart
Ya con esto tenemos configurado el servidor Esclavo o Secundario, ahora debes indicarle a tus PC que que estan son las direcciones de servidores DNS primario y secundario que deben utilizar y si quieres probar que uno funciona cuando el otro se cae puedes detener el bind en cualquiera de los dos.
Espero que les haya servido este tutorial, cualquier duda, pregunta o sugerencia puedes dejar tu comentario y lo responderé a la brevedad posible.
Saludos
Olivers
Si quieres recibir notificaciones de cuando se publican nuevos artículos y tutoriales en Vensign por favor subscribete a nuestro boletín RSS.













Hola
Te comento que todo salio bien solo la parte de la seguridad “llave incriptada ” que no funciona me salta el siguiente error
Stopping domain name service….: bindrndc: connect failed: 127.0.0.1#953: connection refused
failed!
Starting domain name service…: bind failed!
Si pudieras darme algun consejo como superarlo te lo agradesco
Atte
neco
18 Septiembre, 2008