Servidores Bind
| ||||
Servidores Bind. Son los mas utilizado en el internet, una vez configurado permite que tu sitio WEB y Correo sean localizados desde cualquier parte de la WWW. El software que implementan estos tipos de servidores para la traducción de dominios en direcciones IP fue escrito en los años 80 bajo el patrocinio de DARPA (Defense Advanced Research Projects Agency) y la versión más actualizada es Bind 9.
Sumario
- 1 Instalación
- 2 DNS Chroot
- 2.1 Configuración de DNS chroot.
- 2.2 Modo de ejecución
- 2.3 Creando el árbol chroot
- 2.4 Moviendo la configuración bind al chroot
- 2.5 Creando enlaces chroot
- 2.6 Dispositivos chroot
- 2.7 Dueño en árbol chroot
- 2.8 Configuración de syslogd
- 2.9 Configuración de apparmor
- 2.10 Inicio/Reinicio de los servicios
- 2.11 Zonas DNS
- 2.12 Configurar el archivo zona
- 2.13 Configurar el archivo zona inversa
- 2.14 Configurar named.conf
- 2.15 Comprobación de DNS
- 2.16 Logs de DNS
- 3 Fuentes
Instalación
Para poder hacer la instalación de un Servidor Bind 9 ejecutamos el siguiente comando:
root@server1:~# apt-get install bind9
Al terminar de instalar toda la configuración de bind estará dentro de:
/etc/bin
Pero tendremos que modificar esta configuración para tener un DNS chroot.
DNS Chroot
Es recomendable ejecutar el servicio de DNS en un entorno aislado o enjaulado, para que el servicio DNS no se comprometido hacia un ataque y esto pueda afectar al resto de los servicios disponibles o al sistema operativo.
Configuración de DNS chroot.
El primer paso a dar para comenzar la configuración es detener el servicio de DNS.
root@server1:~# /etc/init.d/bind9 stop
* Stopping domain name service... bind [ OK ]
root@server1:~#
Ahora detendremos el servicio apparmor el cual es el encargado de la seguridad de nuestro sistema.
root@server1:~# /etc/init.d/apparmor stop
Unloading AppArmor profiles : done.
root@server1:etc#
Modo de ejecución
En este paso configuremos el archivo /etc/default/bind9, el cual especificaremos que usuario va ejecutar el servicio de bind y en donde se encuentra ubicado. Para eso tendremos que usar nuestro editor de texto:
root@server1:~# vim /etc/default/bind9
Dentro de este archivo tendremos agregar o modificar los siguientes parámetro de OPTIONS.
OPTIONS="-u bind"
por
OPTIONS="-u bind -t /var/lib/named"
Creando el árbol chroot
Tendremos que crear el árbol de directorios de chroot.
root@server1:~# mkdir -p /var/lib/named/etc
root@server1:~# mkdir /var/lib/named/dev
root@server1:~# mkdir -p /var/lib/named/var/cache/bind
root@server1:~# mkdir -p /var/lib/named/var/run/bind/run
Moviendo la configuración bind al chroot
Lo procederemos hacer es mover toda la configuración del servicio bind dentro de /etc/bind a /var/lib/named/etc para poder utilizar el chroot.
root@server1:~# mv /etc/bind /var/lib/named/etc
Creando enlaces chroot
Deberemos crear un enlace simbólico de /etc/bind a /var/lib/named/etc/bind.
root@server1:~# ln s /var/lib/named/etc/bind /etc/bind
Dispositivos chroot
Crearemos los dispositivos null y random, dentro del chroot y cambiaremos los permisos de los mismos de modo de Lectura/escritura para todos.
root@server1:~# mknod /var/lib/named/dev/null c 1 3
root@server1:~# mknod /var/lib/named/dev/random c 1 8
root@server1:~# chmod 666 /var/lib/named/dev/null
root@server1:~# chmod 666 /var/lib/named/dev/random
Dueño en árbol chroot
Solamente cambiaremos quien sera el encargado del arbol de chroot.
root@server1:~# chown -R bind:bind /var/lib/named/var/*
root@server1:~# chown -R bind:bind /var/lib/named/etc/bind
Configuración de syslogd
Necesitamos modificar el archivo de configuración de syslogd, para poder tener el registro de los logs de nuestro servicio de DNS.
root@server1:~# vim /etc/default/syslogd
Tendremos que buscar el parámetro SYSLOGD, el cual no contiene ninguna información tendremos que agregarle lo siguiente.
SYSLOGD=""
SYSLOGD="-a /var/lib/named/dev/log"
Configuración de apparmor
Tendremos que modificar y agregar algunas opciones dentro del archivo de configuración para poder agregar las rutas de servidor DNS.
root@server1:~# vim /etc/apparmor.d/usr.sbin.named
Ya estando ahí tendremos que modificarlo.
Agregado por el Administrador indicamos el path del servidor DNS.
/var/lib/named/etc/bind/* rw,
/etc/bind/** r,
/var/lib/bind/** rw,
/var/lib/bind/ rw,
/var/cache/bind/** rw,
/var/cache/bind/ rw,
Agregado/modificar por Administrador
Comentamos la linea por defualt y agregamos nuestra ubicación del pid del DNS
/var/lib/named/var/run/bind/run/named.pid w,
# /var/run/bind/run/named.pid w,
# support for resolvconf
Agregado/modificar por Administrador
Comentada la linea por default y agregando la ruta en donde se encuentra el archivo opciones de Bind.
#/var/run/bind/named.options r,
/var/lib/named/var/run/bind/named.options r,
Agregado por el Administrador
Agregamos lineas para dispositivos chroot.
/var/lib/named/dev/null rw,
/var/lib/named/dev/random rw,
Agregamos las zonas de dominio
/var/lib/named/etc/bind/zones/* rw,
Guardamos los cambios realizados.
Inicio/Reinicio de los servicios
Primero tendremos que reiniciar sysklogd.
root@server1:~# /etc/init.d/sysklogd restart
Después iniciamos el apparmor.
root@server1:~# /etc/init.d/apparmor restart
Por ultimo iniciamos bind9.
root@server1:~# /etc/init.d/bind9 start
Con esto ya tendremos configurado nuestro DNS Chroot.
Zonas DNS
En las zonas DNS es donde configuramos todos los dominios que vaya a tener nuestro servidor, se debe crear archivo por archivo por cada dominio que se tenga.
Esta configuración deberá ser guardada en:
/etc/bind/zones
Tenemos que crear el archivo de configuración del domino que se agregar a nuestro DNS.
root@server1:zones# touch ascariote.net.db
El siguiente archivo a crear debe contener los 3 primero segmentos de nuestra red, ejemplo nuestra red es 192.168.1.0, ya este archivo es de tipo resolución inversa quedaría de la siguiente manera 1.168.192.in-addr.arpa.
root@server1:zones# touch 1.168.192.in-addr.arpa
Configurar el archivo zona
Editaremos el archivo de configuración de nuestro dominio.
root@server1:zones# vim ascariote.net.db
Agregaremos las siguientes opciones
$TTL 1W
@ IN SOA ascariote.net. admin.ascariote.net.(
2; Serial Number
1W; Time To Refresh
1D; Time To Retry
28D;Time To Expire
1W );Negative Cache TTL
@ IN NS ascariote.net.
@ IN A 192.168.1.243
@ IN MX 10 ascariote.net
www IN A 192.168.1.243
Ahora explicaremos:
- Todo lo que esta después de un punto y coma (;) es comentario.
- $TTL 1W: directiva obligatoria que indica el tiempo de vida de la información contenida en la BDs.
- @ IN SOA ascariote.net. admin.ascariote.net. ( : el dominio ascariote.net se encuentra en la maquina ascariote.net y el encargado del dominio es admin.ascariote.net.
- 2 ;Serial Number:Es un numero que se incrementa por cada vez que sea modificado el archivo.
- 1W ; Time To Refresh: indica a los servidores eslavos cuanto tiempo deben esperar antes de preguntar a su servidor primario si se ha hecho algún cambio.
- 1D ; Time to Retry : Indica el tiempo de espera para reintentar conectarse a nuestro servidor DNS.
- 28D ; Time To Expire : Tiempo que no hubo comunicación con el servidor DNS, toda la información del primero se vuelve inservible y deja de responder peticiones.
- 1W ); Negative Cache TTL: indica el tiempo de los DNS almacenados en cache.
- @ IN NS ascariote.net: Especificamos en donde se encontrara el servidor DNS.
- @ IN A 192.168.1.243: Especificamos la IP del servidor DNS.
- @ IN MX 10 ascariote.net: Indicamos que se utiliza como servidor de correo con prioridad máxima 10.
- www IN A 192.168.1.243 : Indicamos que el servidor web se encuentra en la dirección IP.
Configurar el archivo zona inversa
Editaremos el archivo de configuración zona inversa.
root@server1:zones# vim 1.168.192.inaddr.arpa
Y agregaremos los siguientes parámetros:
$TTL 1W
@ IN SOA ascariote.net. admin.ascariote.net. (
2 ; Serial Number
1W ; Time To Refresh
1D ; Time To Retry
28D ; Time To Expire
1W ) ; Negative Cache TTL
@ IN NS ascariote.net.
243.1.168 IN PTR ascariote.net.
Como pueden ver casi tiene la misma configuración que el archivo de las zonas a excepción de un parámetro.
- 243.1.168 IN PTR ascariote.net. : Enlazamos la IP con el nombre del servidor,para la resolución inversa.
Configurar named.conf
Es el archivo de configuración de nuestro servidor DNS, dentro de el tendremos que agregar algunos parámetros para que mande a llamar los archivos que hemos creados.
root@server1:zones# vim /etc/bind/named.conf
Agregaremos algunos parámetros casi al final del archivo y antes del include.
zone "255.inaddr.arpa" {
type master;
file "/etc/bind/db.255";
};
Agregado por el Administrador
zone "ascariote.net" {
type master;
file "/etc/bind/zones/ascariote.net.db";
};
zone "1.168.192.inaddr.arpa" {
type master;
file "/etc/bind/zones/1.168.192.inaddr.arpa";
};
include "/etc/bind/named.conf.local";
Solamente agregamos la zona ascariote.net, adentro indicamos que es tipo maestro y la ruta donde se encuentra el archivo de configuración de la zona. Como también se agrego la resolución inversa, indicamos tipo maestro y la ruta del archivo de configuración.
Ahora tendremos que reiniciar el servicio de bind9.
root@server1:zones# /etc/init.d/bind9 restart
Comprobación de DNS
Vamos a verificar que nuestro servidor DNS ya se encuentra en linea, primero haremos la comprobación localmente en nuestro servidor.
Para esto usaremos el comando host.
root@server1:~# host ascariote.net 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:
ascariote.net has address 192.168.1.243
ascariote.net mail is handled by 10 ascariote.net.ascariote.net.
root@server1:~#
Por medio del comando netstat, para verificar que el servicio esta en escucha.
root@server1:~# netstat -tanp | grep named
tcp 0 0 192.168.1.243:53 0.0.0.0:* LISTEN 7132/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 7132/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 7132/named
root@server1:~#
Para poder hacer una comprobación desde otra máquina tenemos que agregar la IP de nuestro servidor DNS.
lucifer:~# vim /etc/resolv.conf
Modificaremos para quede de la siguiente manera.
nameserver 192.168.1.243
Y comprobamos.
lucifer:~# dig ascariote.net
; <<>> DiG 9.5.0-P2 <<>> ascariote.net
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<-opcode: QUERY, status: NOERROR, id: 57068
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1,
ADDITIONAL: 0
;; QUESTION SECTION:
;ascariote.net.
IN
A
;; ANSWER SECTION:
ascariote.net.
604800IN A 192.168.1.243
604800IN NS ascariote.net.
;; AUTHORITY SECTION:
ascariote.net.
;; Query time: 0 msec
;; SERVER: 192.168.1.243#53(192.168.1.243)
;; WHEN: Wed Mar 4 14:25:34 2009
;; MSG SIZE rcvd: 61
lucifer:~#
Logs de DNS
Nuestro DNS guarda los log dentro de /var/log/syslog, para poder ver los ultimos sucesos de los log de DNS tendremos que ejecutar el siguiente comando :
root@server1:~# tail -f /var/log/syslog | grep named
Nos deberá mostrar algo parecido a esto.
Mar 4 14:37:22 server1 named[7957]: zone 127.in-addr.arpa/IN:
Mar 4 14:37:22 server1 named[7957]: zone ascariote.net/IN: loaded
serial 2
Mar 4 14:37:22 server1 named[7957]: running
Mar 4 14:37:22 server1 named[7957]: zone 1.168.192.in-
addr.arpa/IN: sending notifies (serial 2)
Mar 4 14:37:22 server1 named[7957]: zone ascariote.net/IN:
sending notifies (serial 2)
En este archivo encontraremos si tenemos algún error en la configuración, un posible problema o indicando que servicio se levanto bien y sin ningún problema.