Вы находитесь на странице: 1из 11

SERVIDORES DNS

1.- DESCRIPCIN GENERAL

Los objetivos bsicos de un servidor de nombres de dominio son dos:


Por una parte, traducir una direccin DNS (direccin cannica) en una direccin IP. Por otra parte, traducir una direccin IP en una o varias direcciones cannicas, es lo ue se conoce como traduccin inversa.

!l DNS (Domain Name Service) es un sistema jerr uico con estructura de rbol. !l inicio se denomina ra"#, al i$ual ue en las estructuras de datos en rbol % bajo la ra"# se &allan los dominios de mas alto nivel ('LD, del in$les, 'op Level Domain), cu%os ejemplos mas representativos son ()*, +(,, !D- % N!', si bien &a% muc&os mas (como los dominios de paises, .es, .u., . . . ). Del mismo modo ue un rbol, tiene una ra"# % ramas ue de ella crecen. +uando se busca la IP correspondiente a una ma uina, pon$amos por ejemplo ///.dominio.com, la consulta se ejecuta recursivamente en la jerar u"a, empe#ando por la rai# (enviando la cuestion a los root servers), para pasar despu0s a pre$untar sobre el 'LD 1.com2 % as" sucesivamente. 3s" pues, empe#ando por la ra"#, encontramos los sucesivos servidores de nombres para cada nivel en el nombre de dominio por re4erencia. Por supuesto, un servidor DNS al ue se reali#a una consulta % necesita reali#ar sucesivas demandas a otros servidores para resolverla, $uardara toda la in4ormacin obtenida a lo lar$o del proceso, para no tener ue pre$untar de nuevo durante un buen rato, si lle$an peticiones similares. -n 56DN (5ull 6uali4ied Domain Name, Nombre de Dominio 'otalmente +uali4icado) esta 4ormado por un &ost % un nombre de dominio, inclu%endo el de mas alto nivel. Por ejemplo, ///.upc.es es un 56DN. /// es el &ost, upc es el dominio de se$undo nivel % .es es el 'LD, el dominio de de mas alto nivel. -n 56DN siempre comien#a con el nombre del &ost % continua subiendo directo al dominio de mas alto nivel.

2.- FUNCIONAMIENTO BSICO !l DNS de4ine:


-n espacio de nombres jerr uico para los &osts % las direcciones IP. -na tabla de &osts implementada como una base de datos distribuida. -n traductor (resolver) o librera de rutinas ue permite reali#ar consultas a esa base de datos. !nrutamiento mejorado para el correo electrnico. -n mecanismo para encontrar los servicios en una red. -n protocolo para intercambiar in4ormacin de nombres entre servidores.

+ada sitio mantiene una o varias pie#as de la base de datos distribuida ue posibilita el servicio $lobal del sistema DNS. Su pie#a de la base de datos consiste en dos o mas 4ic&eros de te7to ue contienen re$istros para cada uno de los &osts. +ada re$istro es una sencilla linea consistente en un nombre (normalmente el nombre de un &ost), un tipo de re$istro % diversos valores o datos. !s un sistema cliente8servidor. Los servidores (de nombres) car$an los datos de sus 4ic&eros de DNS en memoria % los usan para responder las consultas tanto de los clientes de la red interna como de los clientes % otros servidores en Internet. 'odos nuestros &osts debern ser clientes del DNS, pero relativamente pocos necesitan ser servidores de DNS. Si nuestra or$ani#acin es pe ue9a (unos pocos &osts en una :nica red), podemos ejecutar un servidor en uno de nuestros e uipos o pedirle al ISP (Proveedor de servicios) ue nos proporcione el servicio. Si disponemos de servicios como /eb o mail internos en nuestra L3N, ue tambi0n presten servicio &acia el e7terior, la necesidad de un servidor DNS en la L3N es insosla%able. -n sitio de tama9o medio con diversas subredes deber tener m:ltiples servidores de DNS para reducir la latencia de las consultas % mejorar la productividad. -n sistema mu% $rande puede dividir los dominios de DNS en subdominios % usar al$unos servidores para cada subdominio. Los servicios de los ue se puede disponer con un servidor DNS son:

)esolucion de nombres a direccines IP. )esolucion inversa (de direccines IP a nombres). Listas de control de acceso. Servidores secundarios. 'rans4erencia se$ura de #onas entre servidores primarios % secundarios (% puertos). Locali#acion de servicios. )espuestas parametri#adas en 4uncion del ori$en de la peticion (vistas). ;erramientas de $estion remota como rndc. Lo$s.

3.- INSTALACIN Si necesitamos proveer un servicio de nombres para un dominio, podemos utili#ar un servidor de nombres completo: como named, ue viene con el pa uete bind o bind<. Para nuevas instalaciones se recomienda bind<, %a ue soluciona problemas de se$uridad ue tenian las versiones anteriores. DNS es uno de los puntos mas 4ra$iles % puede ser atacado en cual uier momento, %a ue es un blanco evidente para cual uier atacante. Para instalar bind<, se necesitan los si$uientes pa uetes:
bind9 bind9-doc dnsutils

Para instalarlos simplemente reali#amos un apt:


apt-get install bind9 bind9-doc dnsutils

3un ue puede ue tambien ueramos instalar estos pa uetes de utilidades:


bind9-host dns-browse dnscvsutil nslint libbind-dev libnet-dns-perl dhcp-dns

!l demonio named utili#a como arc&ivo de con4i$uracin 8etc8bind<8named.con4, pero, para ue no resulte demasiado lar$o % di4icil de entender, la distribucin Debian distribu%e sus 4unciones en varios arc&ivos, re4erenciados desde varias lineas 1include2 en el 4ic&ero principal. Los arc&ivos de con$uracion ue intervendrn seran los si$uientes: 8etc8bind8named.con4 8etc8bind8named.con4.local 8etc8bind8named.con4.options 8etc8bind8db.root Para de4inir las #onas DNS basicas. Para de4inir las #onas locales. Para con4i$urar opciones. Servidores root DNS

3dems, los 4ic&eros db.local , db.empt% , db.= , db.>?@ % db.?AA aparecern %a con4i$urados para reali#ar las tareas bsicas del servidor DNS, por lo ue no deben modi4icarse. !n al$unas distribuciones, aun ue no es lo normal en Debian, el arc&ivo /etc/bind/named.conf.options tambien es procesado por resolvcon4 para producir /var/run/bind/named.options . !ste arc&ivo es el mismo ue el ori$inal, e7cepto ue la especicacion forwarders es una lista de los servidores de nombres no locales, actualmente disponibles. Para &acer uso de ello, cambiamos la linea include del /etc/bind/named.conf de modo ue inclu%a 8var/run/bind/named.options. Los arc&ivos de base de datos sin una ruta e7plicita, % ue se &an de4inido en cual uiera de los arc&ivos de con4i$uracion de named se almacenaran en /var/cache/bind.

4.- MODOS DE TRABAJO DEL SERVIDOR DNS. CONFIGURACIN 4.1- SERVIDOR DE DNS CACHE -n servidor DNS cac&e no $estiona nin$:n dominio, solo recibe peticiones para resolver nombres por parte de clientes L3N % rediri$e esas mismas peticiones a la jerar uia de servidores DNS, entre$ando la respuesta 4inal a los clientes L3N. Su 4uncin es simplemente a$ili#ar el acceso a internet, actuando como un cac&e de nombres 56DN % sus IP correspondientes. Para conse$uir un DNS server en modo cac&e, 8etc8bind8named.con4.options, % dejalo tal como aparece a u":
options { directory "/var/cache/bind"; forwarders { !; 100.10.0.3; 100.10.0. ;

edita

el

arc&ivo

auth-n"do#ain no; $ confor# to %&'103( listen-on-v) { any; !; !;

Las lineas ue comien#an por 88 son comentarios ue, se$uramente, vendran por de4ecto tambi0n en tu 4ic&ero. Donde los 4or/arders son n:meros IP de servidores de nombres DNS de la red, los mismos del arc&ivo 8etc8resolv.con4 indicados en el parametro nameserver, % ue, normalmente, sern los de ue te proporcione tu ISP. !s conveniente desinstalar el pa uete resolvcon4, si es ue esta instalado,
apt-get --purge re#ove resolvconf

Por :ltimo, edita 8etc8resolv.con4 % modi4"calo para ue ten$a


search #i.do#inio do#ain #i.do#inio na#eserver 1* .0.0.1

!n donde searc& indica el dominio de la red en la ue se inte$ra el e uipo. Si la red no tiene dominio, borra ls instruccin searc&. )einicia el daemon de BIND (named) con:
/etc/init.d/bind9 restart

Lue$o, si es necesario (normalmente no lo es), reinicia la red:


/etc/init.d/networ+ing restart

Lo ue &emos &ec&o es trans4ormar a local&ost (>?@.=.=.>) en el servidor de nombres, ue a trav0s de BIND &ace re uerimientos a los DNS de la red.

Si ti ! " #! $%&t'(# )%"* +',i-it' - .# &t% /3 UDP 0 TCP +'$i' & 1# &i2i !t%" .%& -' i!t &('" 1# 3' ' " &3i& BIND. Para ver el servidor DNS local en accin usa el comando di$. Por ejemplo:
dig debian.ciencias.uchile.cl

ue debe dar un resultado similar a este:


; ,,-- .i/ 9.(.1-03 ,,-- debian.ciencias.uchile.cl ;; global options1 printc#d ;; /ot answer1 ;; ---234.3%,,- opcode1 563%78 status1 9:3%%:%8 id1 ; *9) ;; flags1 <r rd ra; 563%71 18 49=>3%1 18 46?2:%@?71 08 4..@?@:94A1 0 ;; 563=?@:9 =3'?@:91 ;debian.ciencias.uchile.cl. @9 4 4 *00.B9. ;.1

;; 49=>3% =3'?@:91 debian.ciencias.uchile.cl. ;3010 @9 ;; ;; ;; ;; 5uery ti#e1 B0; #sec =3%C3%1 1* .0.0.1$(3D1* .0.0.1E >2391 &ri 4pr * 091;3131 *00 F=/ =@G3 rcvd1 1(B

La primera consulta tard C=D milise$undos (6uer% time). )epetir el mismo re uerimiento ser prcticamente instantneo si se &ace desde un cliente (desde el propio servidor pueden darse di4erentes situaciones). !l servidor a&ora consulta su propia tabla, en dnde e7iste $uardada una entrada con la in4ormacin sobre debian.ciencias.uc&ile.cl. Si vuelves a ejecutar el mismo comando di$, podrs observar al$o similar a esto:
; ,,-- .i/ 9.(.1-03 ,,-- debian.ciencias.uchile.cl ;; global options1 printc#d ;; /ot answer1 ;; ---234.3%,,- opcode1 563%78 status1 9:3%%:%8 id1 ; *9) ;; flags1 <r rd ra; 563%71 18 49=>3%1 18 46?2:%@?71 08 4..@?@:94A1 0 ;; 563=?@:9 =3'?@:91 ;debian.ciencias.uchile.cl. @9 4 4 *00.B9. ;.1

;; 49=>3% =3'?@:91 debian.ciencias.uchile.cl. ;3010 @9 ;; ;; ;; ;; 5uery ti#e1 1 #sec =3%C3%1 1* .0.0.1$(3D1* .0.0.1E >2391 &ri 4pr * 091;;10( *00 F=/ =@G3 rcvd1 1(B

!l comando di$ admite parmetros para pedir in4ormaciones especiales sobre una ma uina o sobre un dominio, como, por ejemplo, uien es su servidor de correo o su servidor de nombres. 'ambi0n se puede e7i$ir ue di$ dirija la cuestin a un servidor DNS directamente, p.ej. C.C.C.C, en ve# de utili#ar el establecido por de4ecto en el sistema:
dig HB.B.B.B www.pregunta.es

4.2- SERVIDOR DNS PRIMARIO 4MAESTRO5 PARA UN DOMINIO La con4i$uracin avan#ada de BIND a u" presentada es apta para un servidor Debian con n:mero IP esttico % conectado permanentemente a Internet. Para de4inir un nuevo dominio % &acer ue el servidor act:e como su DNS autoritativo, necesitas primero &aber comprado un dominio en un re$istro de nombres de dominio (NI+), % de4inir el servidor de nombres primario del nuevo dominio con el n:mero IP % 56DN del servidor BIND. Eamos a usar de ejemplo el dominio 4icticio.es.

!dita 8etc8bind8named.con4.local % a$re$a al 4inal del arc&ivo,


Ione "ficticio.es" { type #aster; file "/etc/bind/db.ficticio.es"; allow-<uery { any; !; !;

+rea el arc&ivo 8etc8bind8db.4icticio.es % a$re$a (los 1F2 son comentarios):


; ; archivo J@9. para Iona ficticio.es ; K??A )0;B00 H @9 =:4 ficticio.es. host#aster.ficticio.es. D 1 ; =erial B);00 ; %efresh *00 ; %etry 1*09)00 ; 3"pire 10B00 E ; 9egative 'ache ??A ficticio.es. ficticio.es. ficticio.es. ficticio.es. localhost ficticio.es. ns1 ns* www s#tp @9 @9 @9 @9 @9 @9 @9 @9 @9 @9 9= 9= FL FL 4 4 4 4 4 4 ns1.ficticio.es. ns*.ficticio.es. 1 ns1.ficticio.es. * ns*.ficticio.es. 1* .0.0.1 100.10.10.10 100.10.10.10 100.10.*0.*0 100.10.10.10 100.10.10.11

P3)3,!')(S D! L3 +3B!+!)3 (S(3, Start (4 3ut&orit%):

!l parametro ''L ('ime 'o Live) indica la valide# (en se$undos) de las consultas ue se realicen a este servidor, tras la cual deber ejecutarse una actuali#acin. G=DC== se$undos e uivalen a una semana. !l n:mero Serial deber"a incrementarse cada ve# ue se modi4ica la #ona. !l campo )e4res& indica el intervalo de tiempo ue los DNS secundarios deben re4rescar la in4ormacin del arc&ivo de #ona si &an &abido cambios (> d"a). )etr% indica el intervalo de tiempo ue los DNS secundarios deben reintentar actuali#ar la in4ormacin si el DNS primario no responde (? &oras). !7pire indica el tiempo ue el DNS secundario e7pira como servidor de nombres de la #ona en caso el DNS primario no responda a re uerimiento de actuali#acin (? semanas). Ne$ative +ac&e ''L indica el ''L en caso de una consulta con respuesta ne$ativa (H &oras).

LIN!3S D! D!5INI+IIN D! N(,B)!S:

La linea estandar inclu%e un nombre, los indicativos IN 3 % una direccin IP. 'odo nombre ue no termine en punto, supone ue debe considerarse parte del dominio (es decir, /// se entiende como ///.4icticio.es). !sta re$la tambi0n vale para las lineas ue no son del tipo IN 3. !n este ejemplo, se puede ver ue 4icticio.es % ///.4icticio.es apuntan al mismo n:mero IP. !sto no debe necesariamente ser as" %, en al$unas situaciones, no es recomendable. -na linea puede identi4icar a un &ost mediante una direccin DNS en ve# de una IP, cambiando la directiva IN 3 por IN +N3,! , % manteniendo las mismas re$las vlidas para las directivas IN 3. Las lineas IN ,J indican los servidores de correo electrnico asociados al dominio. !l n:mero despu0s de ,J indica el orden de prioridad a la &ora de atender el correo (> es el principal). NS incica el servidor DNS del dominio, la ma uina ue ejecuta BIND. Por tanto, ns> es el &ost ue reali#a es 4uncin %, mas adelante, se de4ine el n:mero IP ue el corresponde (en una linea de tipo IN 3). +uando &a% mas de una linea NS, eso supone ue e7isten otros servidores DNS para el dominio, es decir, servidores secundarios. !n este caso, ns? es el nombre de &ost del DNS secundario. No es obli$atorio tenet servidor DNS secundario para un dominio.

Por :ltimo, reinicia named


/etc/init.d/bind9 restart

4.3- SERVIDOR DNS SECUNDARIO 4ESCLAVO5 PARA UN DOMINIO 3N'!S D! !,P!K3): No hay que confundir un servidor secundario (esclavo) con el hecho de que un cliente tenga dos servidores DNS definidos en su configuracion de red. Un servidor secundario (esclavo) actua como una copia de seguridad y ayuda a descongestionar el trafico del servidor principal mientras que para un cliente definir un segundo DNS server tan solo significa que ese cliente se dirigir! al segundo DNS server establecido si el primero no responde. Lo primero es establecer en el servidor primario la e7istencia del secundario. Para llo, es preciso reali#ar dos tareas en el maestro:

el DNS primario debe apuntar a la IP del servidor ue va a actuar de DNS secundario con una directiva NS en el 4ic&ero de de4inicin de #ona. La se$unda tarea es modi4icar el 4ic&ero named.con4.local del primario % a$re$ar a la #ona el parametro allo/Ltrans4er con la direccin IP del servidor DNS secundario:
Ione "ficticio.es" { type #aster; file "/etc/bind/db.ficticio.es"; allow-<uery { any; !; allow-transfer { 100.10.*0.*0; !; !;

Ma en el secundario, &a% ue editar named.con4.local en el DNS secundario % a$re$ar, al 4inal del arc&ivo, una de4inicin de #ona similar a la del maestro:
Ione "ficticio.es" { type slave; file "/etc/bind/db.ficticio.es"; allow-<uery { any; !; #asters { 100.10.10.10; !; !;

en donde masters debe llevar el n:mero IP del servidor DNS primario indicado en el arc&ivo de #ona. !l usuario de sistema bind en el DNS secundario necesita permisos para modi4icar arc&ivos en el directorio 8etc8bind,
ch#od gMws /etc/bind

M necesitaremos reiniciar named, tanto en el primario como en el secundario, mediante sendas instrucciones
/etc/init.d/bind9 restart

E- DNS .&i2'&i% !3i'&6 #! & 1# &i2i !t% 7 '$t#'-i8'$i9! '- DNS " $#!7'&i% 0 :"t $& '&6 #!' $%.i' ;'$t' 7 - '&$+i3% 7 8%!' < t$<,i!7<7,.(i$ti$i%. ". Para terminar, comprueba ue el DNS secundario responde, reali#ando una consulta con di$ e7presamente diri$ida a al e uipo ue &ace de DNS secundario:
dig Hservidorsecundario www.ficticio.es

4.- LOGGING Los re$istros de lo$ del demonio named se pueden encontrar en los 4ic&eros de lo$ del sistema (directorio 8var8lo$8). !n concreto, la distribucin Debian utili#a los 4ic&eros 8var8lo$8s%slo$ % 8var8lo$8daemon.lo$ Si se &ace preciso disponer de lo$s mas detallados de las operaciones reali#adas por el demonio named, es posible &abilitar un 4ic&ero de lo$ complementario, previamente creado de 4orma manual. Para crear el 4ic&ero de lo$, vacio:
#+dir /var/log/na#ed ch#od 0 /var/log/na#ed/ touch /var/log/na#ed/na#ed.log ch#od ))0 /var/log/na#ed/na#ed.log chown -% bind.bind /var/log/na#ed/

%, reiniciar el servidor con:


/etc/init.d/bind9 restart

-na ve# creado, se inclu%en las opciones de lo$$in$ 8var8bind<8named.con4.options . -n ejemplo t"pico seria el si$uiente:

en

el

4ic&ero

logging { channel defaultNsyslog { file "/var/log/na#ed/na#ed.log" versions 3 siIe (#; severity debug; print-ti#e yes; print-severity yes; print-category yes; !; category default { defaultNsyslog; !; !;

!ste ejemplo utili#a el 4ic&ero named.lo$ ue previamente &emos creado, con un tama9o m7imo de A ,b % almacenando en el re$istros correspondientes al nivel debu$. !ste nivel se puede cambiar, para obtener mas o menos detalle en la in4ormacin de lo$ % una ma%or o menor cantidad de lineas de re$istro.

/.- REVERSE DNS 4DNS i!3 &"%5 +onsiste en resolver el nombre DNS a partir de la direccin IP. !s una comprobacin de se$uridad ue reali#an muc&os servicios (smtp, ss&, etc) como paso previo a establecer cone7in, tratando de veri4icar si la direccin IP % el 56DN corresponden en ambos sentidos. Para resolver el DNS inverso es preciso de4inir nuevos 4ic&eros de #ona con el aspecto si$uiente (para unas direcciones DNS ue corresponden a e uipos de una misma red local ><?.>GC.H.=) >.L !n el 8etc8bind8named.con4.local
Ione "3.1)B.19*.in-addr.arpa" { type #aster; file "/etc/bind/Iones/#aster/db.19*.1)B.3"; !;

?.L 5ic&ero db.><?.>GC.=


; ; J@9. reverse data file for 3.1)B.19*.in-addr.arpa ; K??A )0;B00 3.1)B.19*.in-addr.arpa. @9 =:4 ns1.ficticio.es. ad#in.ficticio.es. D 1 ; =erial 3h ; %efresh after 3 hours 1h ; %etry after 1 hour 1w ; 3"pire after 1 wee+ 1h ; 9egative caching ??A of 1 day E ; 3.1)B.19*.in-addr.arpa. @9 9= ns1.ficticio.es. 3.1)B.19*.in-addr.arpa. @9 9= ns*.ficticio.es. 10.3.1)B.19*.in-addr.arpa. @9 0?% www.ficticio.es.

(BS!)E3):

Los re$istros P') (pointer) &acen la 4uncin de los re$istros 3 , pero en direccin contraria. Los nombres de los 4ic&eros de de4inicion de #ona tienen las direcciones IP escritas al reves, incluso los ue se re4ieren a una red (><?.>GC.H.= se escribe H.>GC.><?) , dejando solo la direccion de red % uitando la parte ue se dedicar a las direcciones de &ost (en este caso, una red clase +, el ultimo b%te)
dig -" direccionN@0

+(,P)(B3+IIN:

!l comando di$ tambien puede devolver el nombre DNS correspondiente a esa direccin IP. !l comando loo+up tambien sirve para ese proposito.

=.- SEGURIDAD G.>L Los servidores DNS utili#an el puerto AH de '+P %, mas especialmente, de -DP, para comunicarse tanto con otros servidores, como para recibir consultas % responderlas. Puede ser conveniente, por tanto, tratar de ase$urar, mediante iptables, las trans4erencias de pa uetes por ese puerto. -n ejemplo para abrir los puertos necesarios (suponiendo una pol"tica por de4ecto D)(P), podr"a ser este:
iptables iptables iptables iptables -4 -4 -4 -4 @906? @906? @906? @906? -p -p -p -p udp udp tcp tcp --sport --dport --sport --dport (3 (3 (3 (3 -# -O -O -O state --state 3=?4JA@=23.8%3A4?3. -O 4''30? 4''30? 4''30? 4''30?

G.?.L -n servidor DNS puede reali#ar, adems de sus 4unciones normales, la llama da & "%-#$i9! i!3 &"', es decir, ue, dada una IP, pueda in4ormar del nombre o nombres DNS asociados. !ste servicio es 4undamental en cuestiones de se$uridad ue se dan, por ejemplo, en entidades con servidores de email propios, por ejemplo, %a ue permiten ase$urarse de ue el servidor al ue se envia o del ue se recibe correo es la ma uina ue dice ser. La resolucin inversa no se puede dele$ar % tampoco se puede, en !spa9a, llevar a cabo correctamente en internet, salvo en ciertos casos. !l problema estriba en ue nuestros ISP asocian la IP ue te proporcionan a un 56DN de su propio dominio % no pueden asociarla a dominios no $estionados por ellos mismos. Salvo ue contrates el dominio con el propio ISP, es realmente complejo resolver este problema, e, incluso &aci0ndolo as", tampoco resulta 4cil ni barato. !n cambio, en la propia red local, si resulta 4cil &acerlo, pero carece de inter0s prctico.

Вам также может понравиться