Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Configuración Del DNS: - Max de Mendizábal - 24 de Noviembre de 2008
Configuración Del DNS: - Max de Mendizábal - 24 de Noviembre de 2008
Max de Mendizbal
24 de noviembre de 2008
El servidor de nombres
(DNS)
El servidor de nombres establece una
relacin entre nombres de mquinas
y direcciones IP
Tambin desempea un importante
papel en el enrutamiento del correo
electrnico (ah se definen los
intercambiadores de correo)
Es una base de datos distribuida en
la que cada sitio almacena
informacin sobre sus propias
DNS
Es un espacio de nombres jerrquico para hosts y
direcciones IP
Una tabla de hosts implementada como una base
de datos distribuida
Un resolvedor y una serie de bibliotecas que
hacen preguntas a la base de datos
Un enrutamiento mejorado para el e-mail
Un mecanismo para encontrar servicios en una
red
Un protocolo para intercambiar informacin de
nombres
DNS
El pedazo de base de datos que uno
mantiene consiste en uno o dos
archivos de texto que contienen los
registros para cada uno de los hosts,
por ejemplo
servidor
IN A
192.168.10.1
IN MX 10 correo.cch.unam.mx.
y
1
IN PTR servidor.cch.unam.mx.
DNS
El DNS es un sistema cliente /
servidor
Los servidores (servidores de
nombres) cargan la informacin de
los archivos de DNS en la memoria y
las utilizan para responder preguntas
tanto de los clientes externos como
internos
Todas las mquinas de la red
deberan ser clientes del DNS
DNS
Para las organizaciones pequeas, basta
utilizar un solo servidor de nombres
Una organizacin mediana con varias
subredes pueden utilizar varios DNS
para reducir la latencia de las consultas
y mejorar la fiabilidad
Un sitio muy grande puede dividir un
dominio en varios subdominios y tener
varios servidores por cada dominio
com
Compaas
comerciales
net
Proveedores de red
edu
Instituciones
educativas
org
gov
Agencias
gubernamentales
int
Organizaciones
internacionales
mil
Agencias militares
arpa
Pas
Cdi
go
Pas
Cdi
go
Pas
au
Australi
a
fi
Finlandia
hk
Hong Kong
ca
Canad
fr
Francia
ch
Suiza
br
Brasil
jp
Japn
mx
Mxico
de
Aleman
ia
se
Suecia
hu
Hungra
BIND, el servidor de
nombres
Hay dos tipos principales de servidores
Los de autoridad (authoritative)
Los de cache (caching-only)
BIND, el servidor de
nombres
Tipo de servidor
Descripcin
authoritative
(autoridad)
master (amo)
slave (esclavo)
stub
Similar al esclavo, pero slo copia los datos del nombre del
servidor (sin los datos de los otros hosts)
distribution
nonauthoritative
(sin autoridad)
caching
forwarder
recursive
nonrecursive
IN
IN
IN
A 192.168.0.1
A 192.168.0.2
A 192.168.0.3
Tarea
Instalacin de BIND y
mantenimiento
Para
Frecuencia
Obtener un nombre de
dominio
Sitio
Una vez
Sitio
Una vez o ms
Sitio
Configurar el resolvedor
Cliente
Configurar un resolvedor
eficiente
Cliente
Configurar el cambio de
servicios
Cliente
Servidor
Servidor
Configurar el archivo de
hints
Servidor
Configuracin del
resolvedor
Cada host de la red debe tener un archivo
llamado /etc/resolv.conf que enlista los
servidores DNS a los que se les harn las
preguntas
Si el cliente obtiene su direccin IP y
parmetros de red de un servidor DHCP, el
archivo /etc/resolv.conf debe ponerse
automticamente, de otra forma, se puede
editar a mano, el formato es
search nombrededominio
nameserver direccinip
Configuracin del
resolvedor
Se pueden enlistar hasta tres servidores
de nombres, como en este ejemplo
search cs.colorado.edu colorado.edu ee.colorado.edu
nameserver 128.138.243.151
; ns
nameserver 128.138.204.4
; piper
nameserver 128.138.240.1
; anchor
Configuracin del
resolvedor
La lnea search enlista los dominios
por los que se preguntar si un
hostname no est totalmente
calificado, por ejemplo, si el usuario
hace un ssh foo, el resolvedor
completar el nombre con el primer
dominio de la lista de bsqueda, en
este caso, buscar
foo.cs.colorado.edu, si no lo
encuentra probar tambin con
Configuracin del
resolvedor
Se pueden tener hasta ocho dominios en una lnea
search
Configuracin del
resolvedor
Muchos resolvedores permiten un
mximo de tres servidores de
nombres enlistados, si hay ms,
simplemente se ignoran
silenciosamente
Si un host es por s mismo un
servidor de nombres, debe ser
enlistado al principio en su propio
archivo resolv.conf
Configuracin del
resolvedor
Es una buena idea tener servidores separados
para resolver peticiones internas al dominio
Los servidores internos deberan ser de slo de
cache y recursivos
Un sitio muy grande debera tener varios
servidores de nombres a lo largo de todo el sitio
y utilizar el archivo resolv.conf para propagar la
carga entre los servidores, para minimizar el
trfico de red y reducir la vulnerabilidad de las
mquinas a un solo punto de falla, porque si el
servidor de nombres falla, todo el sitio se detiene
Configuracin del
resolvedor
Los forwarders tambin son una buena forma
de optimizar el servicio de nombres local
Los servidores de nombres locales apuntan a
un forwarder que hace todas las peticiones
externas para tu sitio y construye un cache
muy rico
Esta configuracin minimiza el uso de ancho
de banda externo utilizado por el servidor de
nombres y permite a las mquinas locales
compartir un gran cache
Configuracin del
resolvedor
En la figura siguiente se ilustran las recomendaciones
de diseo que se explicaron anteriormente
Se muestra una jerarqua de dos niveles con forwarding
Es necesario ajustar el balance entre los servidores y
manejar las preguntas de salida y los servidores que
manejan las peticiones hacia adentro, de tal forma que
ninguno de los dos grupos se sobrecargue
Tambin se muestra el uso de un servidor esclavo fuera
del sitio, que se recomienda ampliamente si se puede
conseguir que un ISP o una universidad local cubra este
papel
Configuracin del
resolvedor
BIND, el servidor de
nombres
BIND son las siglas de Berkeley
Internet Name Domain (Nombres de
dominio de Internet, Berkeley) y es
un programa de cdigo abierto que
implementa el protocolo DNS
Para instalarlo en Debian basta con
escribir lo siguiente
aptitude install bind9 bind9-doc bind9-host
BIND, el servidor de
nombres
Los archivos de configuracin se
encuentran en
/etc/bind
BIND, el servidor de
nombres
cat /etc/bind/named.conf
//
//
//
//
//
//
//
This is the primary configuration file for the BIND DNS server named.
Please read /usr/share/doc/bind9/README.Debian.gz for information on the
structure of BIND configuration files in Debian, *BEFORE* you customize
this configuration file.
If you are just adding zones, please do that in
/etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
BIND, el servidor de
nombres
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
include "/etc/bind/named.conf.local";
BIND, el servidor de
nombres
cat /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
//
//
//
//
//
// forwarders {
//
0.0.0.0;
// };
auth-nxdomain no;
# conform to RFC1035
listen-on-v6 { any; };
};
Instrucci
n
Instrucciones del
named.conf
Funcin
include
Interpola un archivo
options
server
key
acl
zone
trustedkeys
controls
logging
view
Lista de coincidencia de
direcciones
Una lista de coincidencia de direcciones
es una generalizacin de una direccin IP
y puede incluir
Una direccin IP (por ejemplo 199.165.145.4)
Una red IP especificada con una mscara
CIDR (por ejemplo 199.165/16)
El nombre de una lista de acceso de control
definida con anterioridad
Una llave criptogrfica para autentificacin
El carcter ! que niega las cosas
Lista de coincidencia de
direcciones
Ejemplos de listas
{ ! 1.2.3.13; 1.2.3/24; };
{ 128.138/16; 198.11.16/24; 204.228.69/24; 127.0.0.1; };
};
[yes]
};
El archivo 77.168.192.inaddr.arpa.zone
; 77.168.192.in-addr.arpa.zone
@ IN SOA ns.guarida.dyndns.org. root.guarida.dyndns.org. (
2009100201 ; Serie
21600 ; Refresco 6 horas
1800 ; Reintentar, 30 min
1209600 ; Expiracin 2 semanas
432000 ) ; Mnimo 5 das
IN NS ns
254 IN PTR ns.guarida.dyndns.org.
1 IN PTR m1.guarida.dyndns.org.
...
253 IN PTR m253.guarida.dyndns.org.
Introduce un comentario
()
Tipo
Zo SOA
na
NS
Nombre
Funcin
Startbase
Of Authority
Define una
zona
de autoridad del
La
de datos
del
DNS
DNS
Los
tipos
DNSde
Name
Server de registro
Identifica adel
los servidores
zona, delega los subdominios
Ba A
sic AAAA
os
A6
Direccin IPv4
Traduccin nombre-a-direccin
Obsoleto NO USAR
Direccin IPv6
Traduccin nombre-a-direccinipv6
PTR
Apuntador
Traduccin direccin-a-nombre
DNAM
E
Redireccin
MX
Intercambiador de
correo
Llave pblica
Siguiente
Firma
Se KEY
gu
rid NXT
ad
SIG
Por ejemplo
cs.colorado.edu.
cs.colorado.edu.
cs.colorado.edu.
INNS ns.cs.colorado.edu.
INNS anchor.cs.colorado.edu.
INNS ns.cs.utah.edu.
IN
IN
NS anchor.cs.colorado.edu.
NS ns.cs.utah.edu.
Por ejemplo
anchor
INA 128.138.243.100
IN PTR hostname
IN PTR
anchor.cs.colorado.edu.
IN MX preferencia host
MX
20
50
IN
20
50
10 piper
mailhub
boulder.colorado.edu.
MX 10 mailhub
anchor
boulder.colorado.edu.
IN MX 10 mailhub.cs.colorado.edu.
IN MX 20 anchor.cs.colorado.edu.
IN MX 50 boulder.colorado.edu.
[ttl]
IN CNAME
hostname
IN CNAME web1
IN CNAME web2
IN CNAME web3
63 IN CNAME 63.0-63
64 IN CNAME 64.64-127
65 IN CNAME 65.64-127
ns1.cliente1.com.
ns2.cliente1.com.
Registros de pegamento,
enlaces entre zonas
Para que haya una jerarqua
coherente es necesario establecer en
el DNS una forma de enlazar
dominios con subdominios
Las referencias del DNS ocurren
nicamente desde los dominios
padre hacia los hijos y no es
necesario que el servidor de nombres
sepa nada sobre las zonas que estn
por encima de su jerarqua en el DNS
Registros de pegamento,
enlaces entre zonas
Los servidores de un dominio padre deben
conocer la direccin IP de los servidores de
nombres de todos sus subdominios
La zona padre necesita contener los
registros NS para cada zona delegada
Los registros NS se escriben en trminos de
nombres de host, ya sea haciendo una
consulta de DNS normal (cuidando evitar
un ciclo de dependencias) o copiando los
registros A que sean apropiados
Registros de pegamento,
enlaces entre zonas
Hay dos formas de cumplir este
requisito
Incluyendo los registros necesarios
Utilizar zonas tocn (stub)
Registros de pegamento,
enlaces entre zonas
En el primer mtodo se incluyen los registros NS y A
que sean necesarios en la zona padre (colorado.edu)
; informacin de subdominio
cs IN NS ns.cs.colorado.edu.
IN NS piper.cs.colorado.edu.
IN NS ns.xor.com.
ee IN NS ns.ee.colorado.edu.
IN NS ns.cs.colorado.edu.
; registros pegamento
ns.cs IN A 128.138.243.151
piper.cs IN A 128.138.204.4
ns.ee IN A 128.138.200.1
Registros de pegamento,
enlaces entre zonas
Ejemplo en la UNAM
En el archivo named.conf del
servidor de nombres que resuelve la
zona unam.mx se escribe
; cch.unam.mx es el subdominio a delegar
cch
IN NS
ns.cch.unam.mx.
ns.cch IN A
132.248.122.1
Registros de pegamento,
enlaces entre zonas
Los registros forneos A se llaman registros de
pegamento porque en realidad no pertenecen a
esta zona
Se reproducen aqu solamente para conectar el
nuevo dominio al rbol de nombres de Internet
Si se omiten o se colocan registros de
pegamento incorrectos, se dejar parte del
espacio de nombres inaccesible, los usuarios
que intenten llegar a ellos obtendrn errores
host unknown
Registros de pegamento,
enlaces entre zonas
Es un error comn incluir registros de
pegamento para nombres de host
que no los necesitan, por ejemplo
ns.xor.com del ejemplo anterior,
podra ser resuelto por una peticin
normal del DNS
Un registro A podra ser a primera
vista simplemente redundante, pero
si hay cambios en xor.com, podra
ocasionar fallas
Registros de pegamento,
enlaces entre zonas
La regla a seguir es que se deben
incluir registros A nicamente para
los hosts que estn dentro del
dominio actual o cualesquiera de sus
subdominios
Las versiones modernas de BIND
ignoran los registros de pegamento
innecesarios y los muestran en la
bitcora como un error
Registros de pegamento,
enlaces entre zonas
El esquema recin descrito es la forma estndar de
conectar zonas, pero requiere de que el hijo se
mantenga en contacto con el padre y le indique
sobre cualesquiera cambios o adiciones a su flotilla
de servidores de nombres
Puesto que las zonas padre e hijas con frecuencia
utilizan mquinas distintas, las actualizaciones son
con frecuencia una tediosa tarea manual que
requiere de coordinacin entre fronteras
administrativas
El corolario es que en el mundo real, este tipo de
configuracin, con frecuencia, est desactualizada
Registros de pegamento,
enlaces entre zonas
La segunda forma de mantener estos
enlaces es utilizando zonas tocn (stub)
Un zona stub es esencialmente lo mismo
que una zona esclava, pero que incluye
nicamente a los registros NS de la zona
En BIND 9 las zonas stub deben ser
configuradas de forma idntica tanto en los
servidores amo y esclavo del padre, algo
que por s mismo es difcil mantener de
forma consistente
Registros de pegamento,
enlaces entre zonas
La mejor apuesta es mantenerse en contacto con
la del dominio padre y verificar la configuracin
al menos dos veces al ao
Se puede usar el programa dig para verificar
cules de tus servidores est siendo anunciado
por el dominio padre. Primero se ejecuta
dig dominio-padre ns
Registros de pegamento,
Sutilezas de las zonas stub
Las zonas stub no son copias con autoridad sobre la
informacin de la zona, los servidores stub no deben
estar enlistados entre los registros de zona NS
Como no estn enlistados en los registros NS, no sern
notificados cuando cambie la informacin de la zona.
Para actualizarlos, se puede aadir una clusula alsonotify a la configuracin de los servidores mster , o
simplemente esperar a que la zona se actualice hacia
el final del intervalo de refresco especificado en el
registro SOA de la zona. La opcin timeout debera
funcionar bien en la mayor parte de los casos, pero
podra resultar en una delegacin coja transitoria en
algunos casos
Actualizacin de archivos de
zona
La informacin de actualizacin de la zona se
propaga hacia los servidores esclavo
inmediatamente puesto que la opcin notify est
prendida por omisin
Si esta opcin est apagada, los servidores
esclavos se actualizarn en cuanto se llegue al
tiempo de refresco que se puso en el registro SOA
Si se quiere actualizar manualmente, se puede
utilizar ndc reload en el esclavo, para que revise si
hubo cambios en su mster y, si los hay, solicita
una transferencia de zona
Actualizacin de archivos de
zona
Cuando se actualice una zona, no olvides
modificar los registros directos e inversos
Si se olvida la modificacin de un registro
inverso, pueden suceder errores difciles de
encontrar, porque algunos comandos
funcionarn y otros no
Si se cambia la informacin y no se
actualiza el nmero de serie, los cambios
funcionarn en el servidor mster despus
de hacer un reload, pero no en los esclavos
Actualizacin de archivos de
zona
Es completamente inadecuado editar
informacin en los servidores esclavos
Es conveniente verlos de vez en cuando
porque se pueden descubrir errores en los
archivos de zona, por ejemplo, cuando
olvidamos poner un punto no es fcil
verlo en el servidor mster, pero si en el
esclavo, porque ah aparecer completo
foo.cs.colorado.edu.cs.colorado.edu
Transferencias de zona
Los servidores de nombres se
sincronizan a travs de un
mecanismo llamado transferencia de
zonas
Antes se tenan que transferir todas
las zonas a la vez, ahora se hacen de
forma incremental, la forma en que
se refieren estas transferencias es
AXFR y IXFR, respectivamente
Transferencias de zona
Un esclavo que quiere refrescar su
informacin hace una peticin de
transferencia de zona a un servidor
mster y hace una copia de respaldo del
archivo de zona
Si la informacin del servidor mster no
ha cambiado (esto se determina
comparando los nmeros de serie) no hay
ninguna actualizacin y los respaldos slo
se tocan
Transferencias de zona
Las transferencias de zona utilizan el
protocolo TCP en el puerto 53 y hacen una
bitcora a travs del syslog con la
etiqueta named-xfer
Tanto el servidor amo como el esclavo
estn disponibles para contestar las
peticiones durante una transferencia de
zona, slo despus de que haya
terminado la transferencia, es cuando el
servidor tendr la nueva informacin
Transferencias de zona
Cuando las zonas son muy grandes,
como la .com, o se actualizan
dinmicamente, los cambios son
muy pequeos con respecto al
tamao de la zona completa
Con IXFR slo se envan los cambios
El mecanismo es como el del
programa patch y slo se aplican las
diferencias sobre una base de datos
anterior
Transferencias de zona
En BIND 9 IXFR est puesto por omisin
Las opciones provide-ixfr y request-ixfr
pueden ser puestas en las sentencias
server para los pares individuales. provideixfr habilita o deshabilita el servicio IXFR
para las zonas para las cuales este
servidor es el mster. La opcin requestixfr hace las peticiones IXFR para las
zonas para las cuales este servidor es
esclavo
Transferencias de zona
Las instrucciones para los archivos
de configuracin son las siguientes
provide-ixfr yes; # en la sentencia server
request-ixfr yes; # en la sentencia server
Transferencias de zona
Ejemplo para un servidor esclavo
Si quisiramos ser servidores esclavos de upn.mx y de acer.com.mx
deberamos escribir las siguientes lneas en named.conf
zone "upn.mx" {
type slave;
masters { 200.23.113.1; };
file "upn.mx.zone";
};
zone "acer.com.mx" {
type slave;
masters { 200.23.80.27; };
file "/var/cache/bind/acer.com.mx.zone";
};
Transferencias de zona
En este caso upn.mx no permite la transferencia de la
zona, por lo que en /var/log/syslog aparecen los
siguientes mensajes
Sep 5 05:16:43 u804 named[13587]: zone upn.mx/IN:
Transfer started.
Sep 5 05:16:43 u804 named[13587]: transfer of
'upn.mx/IN' from 200.23.113.1#53: connected using
192.168.226.129#32821
Sep 5 05:16:44 u804 named[13587]: transfer of
'upn.mx/IN' from 200.23.113.1#53: failed while
receiving responses: REFUSED
Sep 5 05:16:44 u804 named[13587]: transfer of
'upn.mx/IN' from 200.23.113.1#53: end of transfer
Transferencias de zona
En el caso de la zona acer.com.mx los mensajes son los
siguientes
Sep 5 04:26:13 u804 named[13587]: zone
acer.com.mx/IN: Transfer started.
Sep 5 04:26:13 u804 named[13587]: transfer of
'acer.com.mx/IN' from 200.23.80.27#53: connected
using 192.168.226.129#39431
Sep 5 04:26:15 u804 named[13587]: zone
acer.com.mx/IN: transferred serial 2000221205
Sep 5 04:26:15 u804 named[13587]: transfer of
'acer.com.mx/IN' from 200.23.80.27#53: end of
transfer
Sep 5 04:26:15 u804 named[13587]: zone
acer.com.mx/IN: sending notifies (serial 2000221205)
Actualizaciones dinmicas
La premisa del DNS es que los mapeos
nombre-a-direccin son relativamente
estables y no cambian con frecuencia
En los sitios con DHCP esto no es as
Hay dos soluciones clsicas: agregar
entradas genricas a la base de datos del
DNS o editar continuamente los archivos
del DNS
Estas dos soluciones podran no ser
satisfactorias en algunos casos
Actualizaciones dinmicas
La primera solucin es conocida para
cualquiera que haya utilizado un ISP con dialup, la configuracin del DNS es como sigue
dhcp-host1.dominio. IN A 129.168.0.1
dhcp-host2.dominio. IN A 129.168.0.2
Actualizaciones dinmicas
Las ltimas versiones de DHCP y BIND
permiten que, desde el DHCP se notifique cada
vez que se asigne una direccin y se actualice
el servidor de nombres al vuelo
Las actualizaciones dinmicas pueden agregar,
borrar o modificar los registros de recursos
Puesto que es un poco espantoso que se
actualice el DNS con esa frecuencia, se
recomienda para estos casos utilizar un
subdominio
Seguridad en el DNS
El DNS se concibi como un sistema
abierto
En condiciones normales, cualquiera
puede explorar un dominio con
peticiones individuales con las
herramientas dig, host o nslookup,
e incluso obtener la base de datos
completa del dominio
Las versiones nuevas de BIND
proveen las herramientas para hacer
Seguridad en el DNS
Caracterst Sentencias Qu especifica
ica
allow-query
options,
zone
allowtransfer
options,
zone
allowupdate
zone
blackhole
options
bogus
server
acl
various
Seguridad en el DNS
Otra forma de mejorar la seguridad del
DNS es ejecutarlo en un ambiente
chroot, en donde se utilice un UID sin
privilegios de tal forma que se elimine la
posibilidad de explorar los directorios
Tambin se pueden utilizar firmas de
transaccin para controlar las
actualizaciones dinmicas y, por
supuesto el soporte completo de DNSSEC
};
acl mediciones {
128.9.160.157; // mediciones de Bill Manning
198.32.4.0/24; // mediciones de Bill Manning
192.5.5.0/24;// mediciones de Mark Lottors
};
allow-transfer { misesclavos; mediciones; };
Confinacin de named
Para confinar el dao que alguien podra
causar si el servidor queda comprometido,
se puede ejecutar named dentro de un
ambiente confinado con chroot y/o
ejecutarlo como un usuario no privilegiado
La bandera t especifica el directorio a
donde estar el chroot y las banderas u y
g especifican el UID y el GID bajo el cual
se ejecutar
# named u 53 t /var/named
Confinacin de named
Con esto, named iniciar con el UID 53 y en el
directorio root /var/named
Un directorio chroot no puede estar vaco
puesto que debe contener todos los archivos
que normalmente requiere el named para
ejecutarse: /dev/null, las bibliotecas
compartidas, los archivos de zona, named.conf,
etc.
Si se compila named de forma esttica no ser
necesario copiar todas las bibliotecas a
/var/named
Confinacin de named
Si los hackers comprometen a su named,
podran tener acceso a todo el sistema y todos
los derechos del usuario en el que se ejecuta
named
Si el usuario es root y no se hace dentro de un
ambiente chroot, esta brecha de seguridad
podra ser muy destructiva
Muchos sitios no se preocupan por las banderas
-u, -g y -t pero entonces debern ser ms
rpidos que los hackers para actualizar cuando
se anuncie una vulnerabilidad
Confinacin de named
Los pasos detallados para
implementar esta tcnica se pueden
encontrar en
http://tldp.org/HOWTO/Chroot-BIND-HOWTO.
html
Es conveniente, cuando se
implemente esto ejecutar named en
nivel de depuracin 1 para ver los
mensajes de error que se generen
DNSSEC
DNSSEC es una extensin del DNS que
autentifica el origen de la informacin de
la zona y verifica su integridad utilizando
criptografa de llave pblica
Estas extensiones le permiten al cliente
preguntar cosas como De verdad esta
informacin de DNS proviene del dueo
de la zona? y En verdad la informacin
enviada proviene del dueo?
DNSSEC
DNSSEC tiene tres servicios
Distribucin de llaves por medios de los
registros KEY almacenados en los
archivos de zona
Verificacin de origen para servidores e
informacin
Verificacin de la integridad de la
informacin de la zona
DNSSEC
DNSSEC est basado en la confianza
de la cadena en cascada, los
servidores root proveen de
informacin para validar los dominios
de alto nivel, los dominios de alto
nivel proveen informacin validada
para los dominios de segundo nivel y
as sucesivamente
DNSSEC
Los sistemas de criptografa pblica
utilizan dos llaves, uno para codificar
(o firmar) y otro para descodificar (o
verificar)
Los que publican, firman su
informacin con una llave privada
secreta
Cualquiera puede verificar la validez
de una firma con la llave pblica, que
se distribuye a todo el mundo
DNSSEC
Si una llave pblica decodifica correctamente
un archivo de zona, entonces la zona debe
haber sido codificada con la llave privada
correspondiente
El truco es asegurarse de que las llaves
pblicas que se utilicen para verificar sean
autnticas
Los sistemas de llave pblica permiten a una
entidad firmar la llave pblica de otra, para
respaldar la legitimidad de la llave, de ah el
trmino cadena de confianza
DNSSEC
La informacin de una zona de DNS es demasiado
voluminosa como para ser codificada con
criptografa de llave pblica, puesto que la
codificacin sera muy lenta
En cambio, puesto que la informacin no es
secreta, un hash seguro, como una suma de
verificacin MD5, se ejecuta sobre la informacin y
los resultados de ese hash son firmados
(codificados) por la llave privada de la zona. Los
resultados de ese has son como la huella digital de
los datos y la huella digital firmada se llama firma
digital
DNSSEC
Las firmas digitales normalmente se
agregan a la informacin que autentifican
Para verificar la firma, se debe decodificar
con la llave pblica del firmante, pasar la
informacin a travs del mismo algoritmo
de hash y comparar el hash calculado con
el valor del hash decodificado
Si coinciden, se ha autentificado al firmante
y verificado la integridad de la informacin
DNSSEC
En un sistema DNSSEC cada zona
tiene sus propias llaves pblica y
privada
La llave privada firma cada conjunto
RR
La llave pblica verifica las firmas y
estn incluidas en los datos de la
zona en forma de un registro de
recursos KEY
DNSSEC
Las zonas padre firman las llaves pblicas
de las zonas hijas
Named verifica la autenticidad de un
registro de zona hijo KEY revisndola contra
la firma de la zona padre
Para verificar la autenticidad de la llave de
la zona padre, named puede revisar al padre
del padre y as sucesivamente hasta la raz
La llave pblica para la zona raz se incluye
en el archivo de hints del root
DNSSEC
Primero se genera un par de llaves
para la zona
# dnssec-keygen a DSA b 768 n ZONE midominio.com.
Argumento
Significado
-a DSA
-b 768
-n ZONE
midominio.com.
DNSSEC
Se recibe la siguiente salida
alg = 003
key identifier = 12345
flags = 16641
DNSSEC
La llave pblica tpicamente se
incluye en el archivo de zona con
$INCLUDE
Puede ir en cualquier lugar del
registro SOA, pero usualmente se
pone a continuacin del SOA
DNSSEC
DNSSEC requiere de una cadena de
confianza, de tal forma que la llave pblica
de una zona debe ser firmada por su padre
para verificar su validez
El programa dnssec-makekeyset
empaqueta las llaves que se quieren firmar,
un TTL para el conjunto de llaves resultante
y un periodo de validez de la firma, luego
enva el paquete al padre para su firma
# dnssec-makekeyset t 3600 s +0 e +864000 Kmydomain.com.+003+12345
DNSSEC
Esta instruccin empaca la llave pblica de la zona
recin generada con un TTL de 3,600 segundos y
le hace la peticin a la firma del padre para que
sea vlida por 10 das a partir de hoy
dnssec-makekeyset crea un archivo de salida
nico mydomain.com.keyset
Luego se enva este archivo a la zona padre para
su firma
Contiene la llave pblica y las firmas generadas
por las llaves de la zona en s mismas para que el
padre pueda verificar la llave pblica del hijo
DNSSEC
En la zona padre, se utiliza el
programa dnssec-signkey para firmar
el paquete de llaves
# dnssec-signkey midominio.com.keyset Kcom.+003+56789
DNSSEC
Una vez obtenida la firma de la zona padre, se
puede firmar ya la informacin de la zona
actual
La operacin de firma toma un archivo de
zona normal como entrada y le agrega los
registros SIG y NXT inmediatamente despus
de el conjunto de registros de recursos
Los registros SIG son las firmas y los registros
NXT dan soporte de firma a las respuestas
negativas
DNSSEC
El registro SIG contiene informacin muy rica
El tipo de conjunto de registros firmado
El algoritmo utililzado para firmar (DSA en este caso)
El TTL del registro que fue firmado
La hora a la que la firma expira (como
yyyymmddhhssss)
La hora a la que el registro fue firmado (tambin
yyyymmddhhssss)
El identificador de la llave (en este caso 12345)
El nombre del firmante (midominio.com)
La firma digital (hasta al final)
DNSSEC
Para utilizar la zona firmada, cambia
el parmetro file en la sentencia zone
del archivo named.conf para
midominio.com para que apunte a
db.midominio.signed en vez de a
db.midominio
DNSSEC
La firmas digitales estn bien para las
respuestas positivas como Aqu est la
direccin IP para el host
anchor.cs.colorado.edu, junto con una
firma que demuestra que de verdad vino
de cs.colorado.edu y que la informacin es
vlida
Pero en las respuestas negativas tales
como No existe el host no se regresan
registros firmados
DNSSEC
En DNSSEC este problema se resuelve
utilizando los registros NXT que enlistan al
siguiente registro en la zona en una forma
cannica ordenada
El orden es alfabtico, pero con los nombres
que estn ms arriba del rbol en primer
lugar, por ejemplo en la zona cs.colorado.edu,
cs.colorado.edu viene antes de cualquier
host.cs.colorado.edu, es decir se conserva el
orden alfabtico en cada nivel jerrquico
DNSSEC
Si el siguiente registro despus de anchor en
cs.colorado.edu fue
awesome.cs.colorado.edu y si llega una
peticin para anthill.cs.colorado.edu, la
respuesta sera firmada por el registro NXT
de la siguiente forma
anchor.cs.colorado.edu.
DNSSEC
El ltimo registro NXT en una zona se dobla
hasta el primer host de la misma
Por ejemplo, el registro NXT para
zamboni.cs.colorado.edu apuntara de
regreso al primer registro del dominio
zamboni.cs.colorado.edu.
DNSSEC
Este sistema todava no est
implementado en el mundo real
debido a que la infraestructura de
llave pblica necesaria an no est
lista
DNS y Microsoft
En Windows 2000 se utiliza el
registro SRV para descubrir todo:
servidores de nombres, impresoras,
sistemas de archivos y otros
La forma de insertar las
actualizaciones dinmicas de los
registros no es estndar
MS utiliza una variacin de las firmas
de transaccin llamada GSS-TSIG que
tambin est basada en secretos
DNS y Microsoft
El secreto compartido se obtiene a
travs de Kerberos desde el Kerberos
KDC (Key Distribution Center)
El problema es que la implementacin
de Kerberos de MS no es compatible
con Kerberos 5
Esto obliga a tener un servidor
Kerberos en Window para poder
implementar estas opciones
DNS y Microsoft
Cuando se liber Win2k los
servidores raz del DNS mostraron un
incremento significativo de
peticiones
El problema es que los Win2k venan
mal configurado e intentaban
actualizar dinmicamente a los
servidores raz
Esto caus un serio problema con los
servidores raz que MS negaba
Significado
channel
category
module
facility
severity
category category_name {
channel_name;
channel_name;
};
};
default_debug
default_stderr
null
logging {
category default { default_syslog; default_debug; };
};
http://www.jalix.org/ressources/reseaux/misc/bind/~vrac/bind-messag
es.html
Funcin
help
status
trace
notrace
Apaga la depuracin
dumpdb
stats
reload
reload zone
restart
querylog
Funcin
nombre
help o ?
exit
server host
lserver host
set type=xxx
IN
ANY
;; ANSWER SECTION:
amazon.com.
amazon.com.
172725
172725
IN
IN
NS
NS
udns1.ultradns.net.
udns2.ultradns.net.
;; AUTHORITY SECTION:
amazon.com.
amazon.com.
172725
172725
IN
IN
NS
NS
udns2.ultradns.net.
udns1.ultradns.net.
;;
;;
;;
;;
Delegaciones cojas
Cuando se solicita un dominio, una
de las preguntas fundamentales es
qu mquina fungir como servidor
de nombres
Si nunca se utiliza el dominio o se
cambian los servidores de nombres
sin actualizar los registros de
pegamento del dominio, ocurre una
"delegacin coja"
Delegaciones cojas
Los efectos que puede ocasionar una
delegacin coja pueden ser muy malos
Si un usuario intenta contactar a un host en su
dominio cojo, el servidor de nombres rehusar
la peticin
El DNS reintentar varios cientos de veces la
peticin, golpeando tanto a tu servidor de
nombres como a los servidores raz
En una bitcora de 3.5 Mb (a nivel info) despus
de una semana, una tercera parte eran
delegaciones cojas
Delegaciones cojas
De ellas, el 16% de las peticiones,
involucraban a los servidores raz,
posiblemente por dominios no existentes
Un usuario persistente inquiri a los
servidores raz por el dominio
tokyotopless.net cientos de veces, por
ejemplo
Jan 29 05:32:52 ipn.caida.org named[223]: Lame
server on 'www.games.net' (in 'GAMES.net'?):
[207.82.198.150].53 'NS2.EXODUS.net'
Delegaciones cojas
Con dig, se puede ver el problema
dig www.games.net.
;;
;; QUESTIONS:
;;
www.games.net, type = A, class = IN
;; ANSWERS:
www.games.net. 3600 A 209.1.23.92
;; AUTHORITY RECORDS:
games.net. 3600 NS ns.exodus.net.
games.net. 3600 NS ns2.exodus.net.
games.net. 3600 NS ns.pcworld.com.
;; ADDITIONAL RECORDS:
Delegaciones cojas
La primera peticin al servidor local
regresa el registro de direcciones
para www.games.net y una lista de
servidores con autridad
El servidor que est en ns.exodus.net
funciona bien cuando se le pregunta,
pero ns2.exodus.net. es otra historia
Delegaciones cojas
dig @ns2.exodus.net www.games.net.
;; QUESTIONS:
;;
www.games.net, type = A, class = IN
;; AUTHORITY RECORDS:
net. 244362
NS F.GTLD-SERVERS.net.
net. 244362
NS J.GTLD-SERVERS.net.
net. 244362
NS K.GTLD-SERVERS.net.
net. 244362
NS A.GTLD-SERVERS.net.
;; ...
El archivo de hints
El archivo de hints alimenta al cache de
named con informacin sobre los
servidores del dominio root
Cuando se colocan los servidores root en el
inicio del cache se mejora el proceso de
bsqueda para todos los nombres
Si no se pone el archivo hints, BIND9 utiliza
una lista de servidores root que estn
programados dentro de su cdigo y de
todas formas podr cargarse la zona root
El archivo de hints
Los servidores de nombres root
cambian de vez en cuando, pero es
mucho ms simple rastrearlos ahora
de lo que era antes porque todos
estn asignados al dominio rootservers.net
El archivo de hints
Para contactar al servidor de nombres root y
generar un archivo de hints, se puede utilizar
dig. El servidor mster es a.root-servers.net,
pero puede usarse cualquier otro
dig @a.root-servers.net . ns > root.cache
El punto es importante
Si a.root-servers.net no responde se puede
hacer la peticin sin indicar un servidor en
particular
dig . ns > root.cache
El archivo de hints
An cuando el archivo sea similar, se
est obteniendo a partir del cache del
servidor de nombres local y no de una
fuente con autoridad
Es buena idea refrescar un par de
veces al ao al archivo hints
El archivo hints funciona, siempre y
cuando, al menos uno de los
servidores root est operando
El archivo de hints
debian:~# cat /etc/bind/db.root
; <<>> DiG 9.2.3 <<>> ns . @a.root-servers.net.
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18944
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUESTION SECTION:
;.
;; ANSWER SECTION:
.
.
.
.
.
.
.
.
.
.
.
.
.
518400
518400
518400
518400
518400
518400
518400
518400
518400
518400
518400
518400
518400
IN
NS
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
NS
NS
NS
NS
NS
NS
NS
NS
NS
NS
NS
NS
NS
A.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.
El archivo de hints
;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.
;;
;;
;;
;;
3600000
3600000
3600000
3600000
3600000
3600000
3600000
3600000
3600000
3600000
3600000
3600000
3600000
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
A
A
A
A
A
A
A
A
A
A
A
A
A
198.41.0.4
192.228.79.201
192.33.4.12
128.8.10.90
192.203.230.10
192.5.5.241
192.112.36.4
128.63.2.53
192.36.148.17
192.58.128.30
193.0.14.129
199.7.83.42
202.12.27.33
El archivo de hints
Observe que un punto inicia al
primer conjunto de registros, puesto
que definen al dominio root, para el
cual aplican los registros NS
Un archivo de hints actualizado
puede obtenerse de
ftp://ftp.nic.mil/domain/named.root
La configuracin de
localhost
El mapeo directo para el nombre
localhost o localhost.dominio se hace
en el archivo directo de zona para el
dominio
Normalmente, cada servidor es amo
de su propio dominio inverso de
localhost
La configuracin de
localhost
En debian, el archivo de zona es el siguiente
debian:/etc/bind# cat /etc/bind/db.local
;
; BIND data file for local loopback interface
;
$TTL
604800
@
IN
SOA
localhost. root.localhost. (
1
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
604800 )
; Negative Cache TTL
;
@
IN
NS
localhost.
@
IN
A
127.0.0.1
La configuracin de
localhost
El mapeo inverso para la direccin
del localhost, 127.0.0.1 nunca
cambia, por lo tanto, los tiempos de
expiracin pueden ser muy grandes
La configuracin de
localhost
En debian el archivo es el siguiente
debian:/etc/bind# cat /etc/bind/db.127
;
; BIND reverse data file for local loopback interface
;
$TTL
604800
@
IN
SOA
localhost. root.localhost. (
1
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
604800 )
; Negative Cache TTL
;
@
IN
NS
localhost.
1.0.0
IN
PTR
localhost.
La configuracin de
localhost
Observe que slo est enlistado el servidor
local
El significado de @ en este contexto es
"0.0.127.in-addr.arpa."
Es necesario asegurarse que el mapa
inverso de 127.0.0.1 lo haga hacia
"localhost.domain" y no solamente a
"localhost"
Esto es porque los servidores raz reciben
muchas peticiones para "localhost"