Você está na página 1de 13

Configuracin de servidor de nombres de dominio

(DNS), parte I.
Autor: Joel Barrios Dueas
Correo electrnico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org
Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
1999-2014 Joel Barrios Dueas. Usted es libre de copiar, distribuir y comunicar pblicamente la obra y hacer obras derivadas bajo las
condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo
su publicacin, a travs de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una
obra derivada, slo puede distribuir la obra generada bajo una licencia idntica a sta. Al reutilizar o distribuir la obra, tiene que dejar
bien claro los trminos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de
los derechos de autor. Los derechos derivados de usos legtimos u otras limitaciones no se ven afectados por lo anterior. Licencia
completa en castellano. La informacin contenida en este documento y los derivados de ste se proporcionan tal cual son y los autores
no asumirn responsabilidad alguna si el usuario o lector, hace mal uso de stos.

Introduccin.
Es imprescindible primero estudiar y comprender, los conceptos descritos en el documento titulado
Introduccin al protocolo DNS.

Acerca de Bind (Berkeley Internet Name Domain).


BIND (acrnimo de Berkeley Internet Name Domain) es una implementacin del protocolo DNS y
provee una implementacin libre de los principales componentes del Sistema de Nombres de
Dominio, los cuales incluyen:

Un servidor de sistema de nombres de dominio (named).

Una biblioteca resolutoria de sistema de nombres de dominio.

Herramientas para verificar la operacin adecuada del servidor DNS (bind-utils).

El Servidor DNS BIND es utilizado de manera amplia en Internet en aproximadamente el 99% de los
servidores DNS del mundo, proporcionando una robusta y estable solucin.

Equipamiento lgico necesario.


Paquete.

Descripcin.

bind

Incluye el Servidor DNS (named) y herramientas para verificar su


funcionamiento.

bind-libs

Bibliotecas compartidas, que consisten en rutinas para aplicaciones


para utilizarse cuando se interacte con Servidores DNS.

Paquete.

Descripcin.

bind-chroot

Contiene un rbol de archivos que puede ser utilizado como una


jaula chroot para named aadiendo seguridad adicional al servicio.

bind-utils

Coleccin de herramientas para consultar Servidores DNS.

cachingnameserver

Archivos de configuracin que harn que el Servidor DNS acte


como un cach para el servidor de nombres. Este paquete
desaparece en CentOS 6 y Red Hat Enterprise Linux 6, pues su
contenido se incorpor en el paquete principal de bind.

Instalacin a travs de yum.


Si se utiliza CentOS 6 o Red Hat Enterprise Linux 6, se puede instalar Bind 9.8 utilizando lo
siguiente:

yum -y install bind bind-chroot bind-utils


Si se utiliza CentOS 5 o Red Hat Enterprise Linux 5 se puede instalar Bind 9.3.6 utilizando lo
siguiente:

yum -y install bind bind-chroot bind-utils


caching-nameserver
Si se utiliza CentOS 5 o Red Hat Enterprise Linux 5, tambin puede instalar, aunque de manera
opcional, Bind 9.7, el cual incluye soporte para DNSSEC, utilizando lo siguiente:

yum remove bind-libs bind-utils bind bind-chroot


caching-nameserver
yum -y install bind97 bind97-chroot bind97-utils
Firma digital del servidor.
Con la finalidad de mejorar la seguridad, genere una firma digital de 512 bits (el valor
predeterminado es 128 bits) para el servidor DNS. Ejecute lo siguiente:

rndc-confgen -a -r /dev/urandom -b 512 -c


/etc/rndc.key
Cambie las pertenencias para que este archivo sea propiedad del usuario root y grupo named:

chown root:named /etc/rndc.key


Asegure que los permisos de acceso sean lectura y escritura para usuario, slo lectura para grupo y
nada para otros, es decir un permiso 640 (rw-r-----):

chmod 640 /etc/rndc.key


Actualice el archivo de cache con los servidores DNS raz.

El archivo /var/named/named.ca contiene la informacin de los servidores DNS raz necesaria para
poder iniciar el cache de todo servidor DNS de Internet. Actualice este archivo para evitar problemas
para la resolucin de algunas zonas ejecutando lo siguiente:

wget -N
http://www.internic.net/domain/named.root \
-O /var/named/named.ca
Tambin puede ejecutar lo siguiente para lograr el mismo fin.
dig +bufsize=1200 +norec NS . @a.root-servers.net > /var/named/named.ca

Conviene verificar peridicamente si hay alguna actualizacin de este archivo. La versin ms


reciente al momento de redactar este documento corresponde al 3 de enero de 2013.
El archivo debe pertenecer a root y el grupo named.

chown root:named /var/named/named.ca


Asigne permiso de lectura y escritura para usuario, slo lectura para grupo y nada para otros (rwr-----).

chmod 640 /var/named/named.ca

Procedimientos.
SELinux y el servicio named.
A mediados de 2008, Common Vulnerabilities and Exposures List y US-CERT, reportaron que el
investigador Dan Kaminskydescubri una vulnerabilidad que afectaba a varias implementaciones
de DNS (BIND 8 y 9 antes de 9.5.0-P1, 9.4.2-P1 y 9.3.5-P1; Microsoft DNS en todas las versiones
de Windows 2000 SP4, XP SP2 y SP3, as como Server 2003 SP1 y SP2).
Esta vulnerabilidad permite a cualquier atacante remoto el poder falsificar trfico DNS a travs de
ciertas tcnicas de contaminacin de cache en servidores que realizan resolucin recursiva (es decir
cuando se usa la opcin allow-recursion abierta a todo el mundo, como ocurre en los servidores
DNS pblicos) y se relaciona a insuficiente aleatoriedad de las identidades de transaccin y de los
puertos de origen. Es decir, una vulnerabilidad de entropa de insuficiencia de zcalos (sockets) de
DNS (conocido como DNS Insufficient Socket Entropy Vulnerability). A travs de esta
vulnerabilidad un atacante puede contaminar el cache de un servidor DNS y hacer que los clientes
se conecten hacia direcciones falsas. Es importante aclarar que en realidad se trata de una
vulnerabilidad en el diseo del protocolo DNS.
SELinux protege casi por completo al servicio named contra la vulnerabilidad anteriormente
descrita. Es por tal motivo que es importante utilizar SELinux.
Ejecute lo siguiente para que SELinux permita al servicio named trabajar con permisos de escritura
para zonas maestras, es decir un esquema de servidor maestro con servidores esclavos o bien
como servidor DNS dinmico:

setsebool -P named_write_master_zones 1
Lo anterior aplica para CentOS 5 y 6 y Red Hat Enterprise Linux 5 y 6.

Nota.
Slo para CentOS 5 y Red Hat Enterprise Linux 5: ejecute lo siguiente para definir que se desactive la
proteccin de SELinux para el servicio named, haciendo que todo lo anteriormente descrito en esta seccin
pierda sentido y que el servidor sea parcialmente susceptible a la vulnerabilidad descubierta por Kaminski:
setsebool -P named_disable_trans 1
S realiza el procedimiento anterior, es importante configurar la funcin de consultas recursivas exclusivamente
para redes en la que se confe plenamente.
Esta poltica, al igual que otras similares, fue eliminada en CentOS 6 y Red Hat Enterprise Linux 6.

Cualquier archivo de zona que se vaya a utilizar a travs del servicio named debe tener el contexto
de SELinux tiponamed_zone_t. En el siguiente ejemplo se utiliza chcon para cambiar el contexto
del archivo denominado mi-dominio.zone:

chcon -t named_zone_t /var/named/mi-dominio.zone

Nota.
S se utiliza CentOS 5 o Red Hat Enterprise Linux 5 y se va a configurar un DNS dinmico, SELinux
impedir crear los archivos *.jnl (journal, archivos de registro por diario) correspondientes. Las zonas de DNS
dinmicas deben ser almacenadas en directorios especficos que solamente contengan zonas dinmicas. Se debe
crear el directorio/var/named/dynamic para tal fin ,y configurar ste para qu pertenezca al usuario y
grupo, named y tenga permisos de lectura, escritura y ejecucin para el usuario y grupo named (770) y tenga
los contextos de SELinux de usuario de sistema (system_u), rol de objeto (object_r) y tipo cache del
servicio named (named_cache_t), con el fin de permitir escritura en este directorio.
cd /var/named
mkdir dynamic
chmod 770 dynamic
chown named:named dynamic
chcon -u named_cache_t dynamic
Este directorio viene incluido en la instalacin estndar de Bind 9.7 en CentOS 6 o Red Hat Enterprise
Linux 6, por lo cual es innecesario realizar el procedimiento anterior con estos sistemas operativos.

Configuracin mnima para el archivo /etc/named.conf.


Puede descargar un archivo plantilla desde AlcanceLibre.org, ejecutando lo siguiente:

cd /etc/
mv named.conf named.conf.original
wget
http://www.alcancelibre.org/linux/secrets/named.co
nf
restorecon named.conf
cd
Edite el archivo /etc/named.conf:

vim /etc/named.conf
La configuracin mnima de este archivo y la cual permitir utilizar el servicio para todo tipo de uso,
es la siguiente:

options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file

"/var/named/data/named_stats.txt";
memstatistics-file
"/var/named/data/named_mem_stats.txt";
version "BIND";
forwarders {
8.8.8.8;
8.8.4.4;
};
forward first;
// Slo habilite lo siguiente si va a utilizar
DNSSEC y si los servidores de
// la seccin de forwarders tienen soporte para
DNSSEC.
dnssec-enable no;
dnssec-validation no;
//
dnssec-lookaside auto;
//
bindkeys-file "/etc/named.iscdlv.key";
};
include "/etc/rndc.key";
controls {
inet 127.0.0.1 allow { 127.0.0.1; } keys
{ "rndc-key"; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
category lame-servers { null; };
};
view "local" {
match-clients {
127.0.0.0/8;
10.0.0.0/8;
172.16.0.0/12;
192.168.0.0/16;
};
recursion yes;
include "/etc/named.rfc1912.zones";
zone "." IN {
type hint;
file "named.ca";
};
};

view "public" {
match-clients { any; };
recursion no;
zone "."" IN {
type hint;
file "named.ca"";
};
};
Lo anterior define como opciones que el directorio predeterminado ser /var/named, se define un
archivo donde se almacena la informacin del cach en /var/named/data/cache_dump.db; un
archivo de estadsticas en /var/named/data/named_stats.txt, un archivo de estadsticas especficas
en lo concerniente al uso de la memoria en /var/named/data/named_mem_stats.txt; consultas
recursivas permitidas solamente a 127.0.0.1 y 192.168.1.0/24, se definen como ejemplos de
servidores DNS para reenviar consultas a 8.8.8.8 y 8.8.4.4, que corresponden a los servidores DNS
pblicos de Google, los cuales puede reemplazar por los servidores DNS del proveedor de
acceso a Internet utilizado); se define que la primera opcin al realizar una consulta ser reenviar
a los DNS que se acaban de definir; se incluyen los archivos de
configuracin /etc/named.rfc1912.zones, que corresponde a las zonas del RFC 1912 y la firma
digital nica que se gener automticamente tras instalar el paquete bind; Se define que los
controles se realizan solamente desde 127.0.0.1, hacia 127.0.0.1, utilizando la firma digital nica.
Tome en consideracin que los cambios en CentOS 6 y Red Hat Enterprise Linux 6 respecto
de CentOS 5 y Red Hat Enterprise Linux 5, consisten en que se utiliza rndc-key en lugar
de rndckey en la configuracin de la firma digital, se aaden las lneas correspondientes a la
configuracin de DNSSEC, se aade configuracin para el registro en bitcora y la zona de los
servidores raz va separada del archivo named.rfc1912.zones. CentOS 5 y Red Hat Enterprise
Linux 5 puede utilizar exactamente la misma configuracin instalando los paquetes bind97, bind97chroot, bind97-libs y bind97-utils (desaparece el paquete caching-nameserver, cuyo contenido
se integr al paquete bind97).
Conviene asegurarse que el archivo /etc/named.conf tenga los contextos correspondientes para
SELinux a fin de evitar potenciales problemas de seguridad.
chcon -u system_u -r object_r -t named_conf_t /etc/named.conf

Preparativos para aadir dominios.


Idealmente se deben definir primero los siguiente datos:
1.

Dominio a resolver.

2.

Servidor de nombres principal (SOA). ste debe ser un nombre que ya est
plenamente resuelto, y debe ser unFQDN (Fully Qualified Domain Name).

3.

Lista de todos los servidores de nombres (NS) que se utilizarn para efectos de
redundancia. stos deben ser nombres que ya estn plenamente resueltos y deben
ser adems FQDN (Fully Qualified Domain Name).

4.

Cuenta de correo del administrador responsable de esta zona. Dicha cuenta debe
existir y debe ser independiente de la misma zona que se est tratando de
resolver.

5.

Al menos un servidor de correo (MX), con un registro A, nunca CNAME.

6.

IP predeterminada del dominio.

7.

Sub-dominios dentro del dominio (www, mail, ftp, ns, etc.) y las direcciones IP que
estarn asociadas a stos.

Es importante tener bien en claro que los puntos 2, 3 y 4, involucran datos que deben existir
previamente y estar plenamente resueltos por otro servidor DNS; Lo anterior quiere decir que jams
se deben utilizar datos que sean parte o dependan, del mismo dominio que se pretende resolver. De
igual modo, el servidor donde se implementar el DNS deber contar con un nombre FQDN y que
est previa y plenamente, resuelto en otro DNS.
Se debe crear una zona de reenvo por cada dominio sobre el cual se tenga autoridad plena y
absoluta y se crear una zona de resolucin inversa por cada red sobre la cual se tenga plena y
absoluta autoridad. Es decir, si usted es el propietario del dominiocualquiercosa.com, debe crear
el archivo de zona correspondiente con el fin de resolver dicho dominio. Por cada red con
direcciones IP privadas, sobre la cual se tenga control y absoluta autoridad, se debe crear un
archivo de zona de resolucin inversa a fin de resolver inversamente las direcciones IP de dicha
zona.
Regularmente la resolucin inversa de las direcciones IP pblicas es responsabilidad de los
proveedores de servicio ya que son stos quienes tienen el control sobre stas.
Todos los archivos de zona deben pertenecer al usuario named a fin de que el
servicio named pueda acceder a stos o bien modificar stos en el caso de tratarse de zonas
esclavas.

Creacin de los archivos de zona.


Los siguientes corresponderan a los contenidos para los archivos de zona requeridos para la red
local y por el NIC con el que se haya registrado el dominio. Cabe sealar que en las zonas de
reenvo siempre se especifica al menos un registro SOA y un registro NS. De manera opcional y en
caso de que exista un servicio de correo electrnico, aada al menos un registro MX (Mail
Exchanger o intercambiador de correo). Solamente necesitar sustituir nombres y direcciones IP y
quiz aadir nuevos registros para complementar su red local.

Configuracin mnima para /etc/named.conf en CentOS 5 y Red Hat Enterprise Linux 5.


La configuracin mnima del archivo /chroot/etc/named.conf y que permitir utilizar el servicio para
todo tipo de uso, es la siguiente:

options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file
"/var/named/data/named_stats.txt";
memstatistics-file
"/var/named/data/named_mem_stats.txt";

version "BIND";
forwarders {
8.8.8.8;
8.8.4.4;
};
forward first;
// Slo habilite lo siguiente si va a utilizar
DNSSEC y si los servidores de
// la seccin de forwarders tienen soporte para
DNSSEC.
dnssec-enable no;
dnssec-validation no;
//
dnssec-lookaside auto;
//
bindkeys-file "/etc/named.iscdlv.key";
};
include "/etc/rndc.key";
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
category lame-servers { null; };
};
controls {
inet 127.0.0.1 allow { 127.0.0.1; } keys
{ "rndckey"; };
};
view "local" {
match-clients {
127.0.0.0/8;
10.0.0.0/8;
172.16.0.0/12;
192.168.0.0/16;
};
recursion yes;
include "/etc/named.rfc1912.zones";
};
Lo anterior define como opciones que el directorio predeterminado ser /var/named, se define un
archivo donde se almacena la informacin del cach en /var/named/data/cache_dump.db; un
archivo de estadsticas en /var/named/data/named_stats.txt, un archivo de estadsticas especficas
en lo concerniente al uso de la memoria en /var/named/data/named_mem_stats.txt; consultas
recursivas permitidas solamente a 127.0.0.1 y 192.168.1.0/24; se definen como ejemplos de
servidores DNS para reenviar consultas a 8.8.8.8 y 8.8.4.4, que corresponden a servidores DNS
pblicos de Google, los cuales puede reemplazar por los servidores DNS del proveedor de
acceso a Internet utilizado; se define que la primera opcin al realizar una consulta ser reenviar a

los DNS que se acaban de definir; se incluyen los archivos de


configuracin /etc/named.rfc1912.zones, que corresponde a las zonas del RFC 1912 y la firma
digital nica que se gener automticamente tras instalar el paquete bind; Se define tambin que los
controles se realizan solamente desde 127.0.0.1, hacia 127.0.0.1, utilizando la firma digital nica.
Conviene asegurarse que el archivo /etc/named.conf tenga los contextos correspondientes para
SELinux a fin de evitar potenciales problemas de seguridad.
chcon -u system_u -r object_r -t named_conf_t /etc/named.conf

Ejemplo de Zona de reenvo red local /var/named/data/red-local.zone.

$TTL 86400
@

IN
SOA
dns.red-local.
alguien.gmail.com. (
2009091001; nmero de serie
28800 ; tiempo de refresco
7200 ; tiempo entre reintentos de

consulta
604800 ; tiempo tras el cual expira
la zona
86400 ; tiempo total de vida
)
@

IN

NS

dns.red-local.net.

IN

MX

10

IN

TXT

"v=spf1 a mx -all"

IN

192.168.1.1

intranet

IN

192.168.1.1

maquina2

IN

192.168.1.2

maquina3

IN

192.168.1.3

maquina4

IN

192.168.1.4

www

IN

192.168.1.1

mail

IN

192.168.1.1

ftp

IN

CNAME intranet

dns

IN

CNAME intranet

mail

Zona de resolucin inversa red local /var/named/data/1.168.192.in-addr.arpa.zone

$TTL 86400
@

IN
SOA
dns.red-local.
alguien.gmail.com. (
2009091001 ; nmero de serie
28800 ; tiempo de refresco
7200 ; tiempo entre reintentos de

consulta
604800 ; tiempo tras el cual expira
la zona
86400 ; tiempo total de vida
)
@

IN

NS

dns.red-local.

IN

PTR

intranet.red-local.

IN

PTR

maquina2.red-local.

IN

PTR

maquina3.red-local.

IN

PTR

maquina4.red-local.

Zona de reenvo del dominio /var/named/data/dominio.com.zone


Suponiendo que hipotticamente se es la autoridad para el dominio dominio.com, se puede crear
una Zona de Reenvo con un contenido similar al siguiente:

$TTL 86400
@

IN
SOA
fqdn.dominio.tld.
alguien.gmail.com. (
2009091001; nmero de serie
28800 ; tiempo de refresco
7200 ; tiempo entre reintentos de
consulta
604800 ; tiempo tras el cual expira
la zona
86400 ; tiempo total de vida
)
@
IN
NS
fqdn.dominio.tld.
@
IN
MX
10
mail
@
IN
TXT
"v=spf1 a mx -all"
@
IN
A
201.161.1.226
servidor
IN
A
201.161.1.226

www
mail
ftp
dns

IN
IN
IN
IN

A
A
CNAME
CNAME

201.161.1.226
201.161.1.226
servidor
servidor

Zona de resolucin inversa del dominio /var/named/data/1.161.201.in-addr.arpa.zone


Suponiendo que hipotticamente se es la autoridad para el segmento de
red 201.161.1.0/24 (regularmente lo debe de hacer el proveedor de servicio de acceso hacia
Internet), se puede crear una Zona de Resolucin Inversa con un contenido similar al siguiente:

$TTL 86400
@

IN
SOA
fqdn.dominio.tld.
alguien.gmail.com. (
2009091001 ; nmero de serie
28800 ; tiempo de refresco
7200 ; tiempo entre reintentos de
consulta
604800 ; tiempo tras el cual expira
la zona
86400 ; tiempo total de vida
)
@
IN
NS
fqdn.dominio.tld.
1
IN
PTR
servidor.dominio.com.
2
IN
PTR
maquina2.dominio.com.
3
IN
PTR
maquina3.dominio.com.
4
IN
PTR
maquina4.dominio.com.
Cada vez que haga algn cambio en algn archivo de zona, deber cambiar el nmero de serie a fin
de que tomen efecto los cambios de inmediato cuando se reinicie el servicio named, ya que de otro
modo tendra que reiniciar el equipo, algo poco conveniente.
Las zonas de resolucin inversa que involucran direcciones IP pblicas son responsabilidad de los
ISP (proveedores de servicio de acceso hacia Internet). Crear una zona de resolucin inversa sin ser
la autoridad de dicha zona tiene efecto slo para quien use el servidor DNS recin configurado como
nico DNS.

Configuracin de opciones del archivo /etc/named.conf

options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file
"/var/named/data/named_stats.txt";
memstatistics-file
"/var/named/data/named_mem_stats.txt";
version "BIND";

forwarders {
8.8.8.8;
8.8.4.4;
};
forward first;
// Slo habilite lo siguiente si va a utilizar
DNSSEC y si los servidores de
// la seccin de forwarders tienen soporte para
DNSSEC.
dnssec-enable no;
dnssec-validation no;
//
dnssec-lookaside auto;
//
bindkeys-file "/etc/named.iscdlv.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
category lame-servers { null; };
};
controls {
inet 127.0.0.1 allow { 127.0.0.1; } keys
{ "rndc-key"; };
};
include "/etc/rndc.key";
view "local" {
match-clients {
127.0.0.0/8;
10.0.0.0/8;
172.16.0.0/12;
192.168.0.0/16;
};
recursion yes;
include "/etc/named.rfc1912.zones";
zone "." IN {
type hint;
file "named.ca";
};
zone "red-local" {
type master;
file "data/red-local.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" {
type master;
file "data/1.168.192.in-

addr.arpa.zone";
allow-update { none; };
};
};

Você também pode gostar