Servidor DNS Bind
BIND (Berkeley Internet Name Domain)
- Bind és el servidor DNS utilitzant més freqüentment, sobretot en sistemes operatius tipus Unix. De fet, és l'standard de facto.
- Actualment hi ha dues versions de bind. Bind a seques i BIND 9 (release 9 de Bind).
- BIND 9 va ser reescrit des de zero per millorar bind i per afegir noves funcionalitats i suport per a DNSSEC (DNS Security Extensions).
- Les versions antigues de bind a l'igual que passa amb altres programes com sendmail són coneguts pel gran nombre de vulnerabilitats conegudes.
- Bind 9 té un historial de vulnerabilitats més baix.
Zones versus dominis
- Una zona és un punt de delegació dins d'un arbre DNS.
- Una zona esta formada per diferents parts contigües de l'arbre de domini sobre les quals un servidor de DNS té la informació completa i en té l'autoritat.
- La zona conté tota la informació des de un punt de l'arbre de domini cap avall excepte aquelles zones que estan delegades a altres servidors DNS.
- Un punt de delegació esta marcat per un o més registres NS a la zona pare.
Funcions d'un servidor DNS i tipus de configuracions
- Hi ha dos possibles configuracions principals d'un servidor DNS per a una xarxa:
- Cau de resolució de noms: El servidor de DNS només fa de memòria CAU de les resolucions de nom de la nostra xarxa. Cada cop que hi ha una petició de resolució de nom de domini el servidor consulta la seva memòria cau. Si la resolució està a la memòria ell mateix envia la resposta, sinó segueix el procés normal de resolució de noms. També s'anomena FORWARDING.
- Servidor de noms: El servidor de DNS és responsable de la resolució de noms d'una o més zones. Les zones poden ser xarxes privades o xarxes públiques. Normalment aquest tipus de servidors DNS també fan de memòria cau.
- Hi ha una tercera opció que és tenir servidors de DNS que només fan de "routers" d'altres servidors de DNS i que quan reben una petició de resolució de noms l'únic que fan és redirigir-la a un servidor DNS central. Això s'utilitza en xarxes grans per controlar el tràfic de DNS:
- Amb Bind, podem activar el cau modificant el fitxer named.conf o named.conf.options a Debian/Ubuntu:
NOTA: Fer de servidor cau no implica que no podem gestionar també un domini. Es poden combinar les dues opcions.
Arbre de fitxers de bind
- Els fitxers de configuració del dimoni bind (seguint els estàndards de Debian GNU/Linux) es troben a la carpeta /etc/bind.
- Per modificar la configuració de bind o bé canviem les opcions o bé modifiquem o creem noves zones.
- Les zones especifiquen les parts del nom de domini de les quals s'encarrega un servidor de DNS, normalment les zones es corresponen amb dominis tot i que no necessàriament ha de ser així (un domini sencer pot estar controlat per una o més zones en diferents servidors DNS).
- El fitxer principal de configuració és el fitxer /etc/bind/named.conf.
- Si consultem el fitxer veurem que apunta a tres fitxers:
- El fitxer /etc/bind/named.conf.local
- En aquest fitxer hem de configurar les zones de les que volem que el servidor de DNS s'encarregui.
- El fitxer /etc/bind/named.conf.options
- Aquest fitxer permet configurar l'apartat forwarders i és on s'especifiquen els servidors DNS del nostre proveïdor de serveis.
- També permet configurar el bit AA auth-nxdomain que indica si el nostre servidor està autoritzat a respondre sobre consultes de la seva zona.
- Si anem a disposar d'un servidor esclau i fer-li transferència dels registres de la zona és convenient posar dins les opcions la directiva allow-transfer {"none";}; i habilitar la transferència específica en el fitxer de declaració de zones.
- El fitxer /etc/bind/named.conf.default-zones
- Aquest fitxer conté les referències a les zones per defecte:
- Fitxer /etc/bind/zones.rfc1918 on s'especifiquen les xarxes privades.
- Zona "." és la zona arrel. El mínim que ha de tenir un servidor de DNS (que funcioni com a cache i no controli zones pròpies) és aquesta zona per delegar les resolucions de noms encara que no tingui el cache. Fa referència al fitxer /etc/bind/db.root.
- La resta de zones són les que el servidor de DNS controla (es diu que el servidor de DNS és authoritative):
- La zona de localhost i la seva resolució inversa 127.0.0.0 (127.in-addr.arpa). Fan referència als fitxers /etc/bind/db.local i /etc/bind/db.127 respectivament. És obligatòria de forma similar el que passa amb els fitxers /etc/hosts i també ens proporciona la resolució del nom de màquina localhost
- La zona de resolució inversa de difisió o broadcast (255.in-addr.arpa). Fa referència al fitxer /etc/bind/db.255.
- La zona de resolució inversa de xarxa (0.in-addr.arpa). Fa referència al fitxer /etc/bind/db.0.
- Aquest fitxer conté les referències a les zones per defecte:
- El fitxer /etc/bind/named.conf.local
- El fitxer /etc/nscd.conf és el fitxer de configuració del servei NSCD (Name Service Cache Daemon) en tots els sistemes.
NOTA: En altres sistemes Linux el fitxer named.conf el trobem directament a la carpeta /etc. també és comú que no hi hagi la divisió de la configuració en tres fitxers i estigui tot junt en un sol fitxer /etc/named.conf.
Tipus de servidors
- Primary masters: Llegeix el fitxer de zona d'un fitxer del propi servidor.
- Secondary masters o slave: Llegeix el fitxer de zona del master server que té autoritat a la zona. També son coneguts com a servidors esclaus.
- El procés de connexió del secundari al principal per tal d'obtenir la informació de la zona s'anomena transferència de zona (zone transfer).
- Tan el servidor primari com el secundari o secundaris són servidors autoritzats de la zona.
- Aquesta relació facilita la gestió de la zona. Només cal mantenir un sol fitxer de zona al servidor primari i tota la resta de servidors secundaris es sincronitzen.
- Cal tenir en compte que més aviat parlem de master o de'esclau quan parlem de zones i no pas servidors.
- Un servidor pot ser esclau d'una zona i master d'un altre.
- La definició de si una zona és master o esclava es fa al fitxer principal de configuració (o a /etc/bind/named.conf.local en cas de Debian/Ubuntu).
Tipus de zones
- IN: IN ve d'INternet
- Actualment gairebé es pot dir que l'únic tipus de zona que s'utilitza és Internet.
Directives de bind
- $INCLUDE: Serveix per incloure altres fitxers. Per exemple incloure un fitxer de xona dins d'un altre zona
- $ORIGIN: Estableix el nom del domini que s'utilitzarà per a tots els noms de màquina abreviats (sense punt final) . Normalment no s'utilitza ja que el nom del domini ja s'ha establert al fitxer named.conf però us podeu trobar sovint exemples amb aquesta directiva ja que mostra de forma explicita quin és el nom de domini.
- $TTL: Estableix el time to live per defecte. És una variable general ja que cada zona pot sobreescriure aquest valor.
Configuració de zones
- Els comentaris es fan amb el caràcter ";" i poden estar al principi de línia o al final.
- El caràcter @ es pot utilitzar per a referir-se a la zona que estem configurant
- La comanda $GENERATE serveix per crear loops.
Noms de màquina
-
Hi ha dos tipus de noms:
- CNAME: Canonical Names, son el nom principal. Algunes màquines poden tenir múltiples IP (multihomed). S'especifiquen amb registres A
- Alias: Són altres noms de les màquines, s'especifiquen amb: alias CNAME CanonicalName
- Mai un alias pot sortir a la dreta (només ho poden fer els noms canònics).
NOTA: Els registres PTR que indiquen les resolucions inverses només es poden fer amb canonical names
Multihomed hosts
- Una màquina multihomed és una màquina amb més d'una IP vàlida (ja sigui per que tingui múltiples interfícies de xarxa o interfícies virtuals amb ip aliasing).
Comentaris
-
Als fitxers de configuració:
- /* This is a C-style comment */
- // This is a C++-style comment
- # This is a shell-style comment
-
Als fitxers de zona:
- S'usa un ";"
Abreviatures
- Als fitxers de zona es consideraren abreviatures tots els noms que no acabin en punt.
Noms de màquina correcta
-
Hi ha unes quantes normes a complir amb els noms canònics, segons el RFC 952:
- Caràcters alfanumèrics
- Guions
NOTA: Els guions baixos no són vàlids.
NOTA: No s'aplica als CNAMES que poden tenir qualsevol caràcter ASCII imprimible.
Control del servei bind. Execució, parada, status i reconfiguració de BIND
- Seguint els estàndards de Debian GNU/Linux (basat en el sistema d'scripts d'inicialització SystemV l'script de control del dimoni bind és /etc/init.d/bind9.
- Les accions que podem fer amb el servei són start|stop|reload|restart|force-reload.
- Cada cop que fem un canvi a la configuració de bind haurem de fer un restart o, millor encara, un reload del servei /etc/init.d/bind9 reload.
Exemples de configuració de servidor
- Es fan al fitxer /etc/bind/named.conf.local
- Tipus master sense esclau (zona directa)
zone "nom_domini" in {
type master;
file "/etc/bind/db.nom_domini";
};
- Tipus master amb esclau (zona directa)
zone "nom_domini" in {
type master;
file "/etc/bind/db.nom_domini";
allow-transfer {IP_SERVIDOR_ESCLAU;};
};
- Tipus esclau
zone "nom_domini" in {
type slave;
file "/etc/bind/bk.nom_domini";
masters { IP_SERVIDOR_MASTER; };
};
- Tipus master (zona inversa)
zone "part_ip_xarxa_al_reves.in-addr.arpa" in {
type master;
file "/etc/bind/db.part_ip_xarxa_al_reves";
};
NOTA: Sovint a l'esclau s'indica a quin fitxer es guardarà la zona transferida, com en l'exemple anterior on la zona transferida s'emmagatzema al fitxer bk.nom_domini.
Exemple configuració zona directa
- El fitxer el podem anomenar /etc/bind/db.nom_domini
- Les primeres línies indiquen quina és la zona, i qui és el responsable (hostmaster, que és equivalent a hostmaster@domini.com) i altres informacions importants de la zona.
- És important destacar el número de sèrie que és important actualitzar (augmentar en un nombre) cada cop que s'actualitza el fitxer (important per temes de sevidors DNS secundaris i propagacions).
- El nombre serial té el següent: any + mes + dia + ordinal_que_incrementes si modifiques el DNS més d'un cop al dia.
- Detall:
- La primera línia indica el TTL o TIME TO LIVE.
- Després ve el registre SOA que ocupa múltiples línies. Cal assegurar-se que el nom de la zona és troba a la primera columna. És pot utilitzar @ i s'utilitza el nom de la zona especificat al fitxer principal de configuració named.conf o es pot posar el nom de la zona directament.
- Els camps nom_del_domini.nom_del_domini_amb_punt_final. i hostmaster són primer el nom del servidor DNS primari de la zona (també acabat en punt) (cal definir més avall la IP de la màquina amb un registre A) i després el correu electrònic de l'administrador de la zona (el primer punt es substitueix per una @). Es poden utilitzar correus Unix (o posar d'inventats, no es comprova que existeixi realment).
- El parèntesi s'utilitza per tal de poder expandir el registre SOA en múltiples línies. Els valors entre parèntesi son importants per als servidors esclaus.
- Després ens trobem amb el registre NS o registres. Cal indicar un registre NS er cada servidor de DNS responsable (authoritative) de la zona, siguin primaris o secundaris.
NOTA: Alternativament, si hem utilitzat una arroba per indicar el nom del domini, ens podem saltar, no posar, el nom del domini:
- Després hi ha registres A o registres de host
;; Aquí pots posar una descripció de la zona $TTL 1H @ IN SOA servidor_dns.nom_del_domini_amb_punt_final. hostmaster ( 200703021 ; serial 8H ; refresh for slaves 3H ; retry 4W ; expire time at slaves 1H ; negative TTL ) @ IN NS servidor_dns.nom_del_domini_amb_punt_final.;Exemple per afegir màquines host1.domini_amb_punt_final. IN A adreça_IP_host1 ;Exemple per afegir servei de correu correu IN MX nom_maquina_correu.nom_del_domini_amb_punt_final. ;Exemple per afegir un gatewaygateway IN A adreça_ip_del_gateway;Alternativament podem utilitzar una iteració amb GENERATE $GENERATE 0-19 hosts${0,2} A 192.168.0.${0,2} ;Els servidors de noms i de correu electrònic han de ser host A correu IN A ip_del_servidor_de_correu domain IN A ip_del_servidor_de_DNS ;Defineix dominis de serveis amb CNAMEs. IMPORTANT: es posen noms de màquina que resolgui DNS i no IPs. www IN CNAME nom_host_web ldap IN CNAME nom_host_ldap ssh IN CNAME nom_host_ssh
Exemple de configuració de zona inversa
- El fitxer el podem anomenar /etc/bind/db.MM.172 on MM és la teva xarxa assignada.
;; Aquí pots posar una descripció de la zona $TTL 1H @ IN SOA servidor_dns.nom_del_domini_amb_punt_final. hostmaster ( 2003080101 ; serial 8H ; refresh for slaves 3H ; retry 4W ; expire time at slaves 1H ; negative TTL ) @ IN NS nom_del_domini_amb_punt_final. ;;Exemples de noms de màquines amb A adreça_IP_gateway_al reves IN PTR gateway.nom_del_domini_amb_punt_final. ;;Exemple per afegir màquines (hosts) adreça_IP_host1_al_reves IN PTR host1.nom_del_domini_amb_punt_final. ; Alternativament podem utilitzar una iteració amb GENERATE. Exemple per crear 20 hosts $GENERATE 0-19 ${2} PTR host${0,2}.nom_del_domini_amb_punt_final.