940 likes | 1.1k Vues
D omain N ame S ystem DNS is a name resolution protocol. It converts host names to IP addresses and vice-versa. Seminario per il corso di Reti di calcolatori e sicurezza corso di laurea specialistica in Economia Informatica Docente Prof. Stefano Bistarelli Studente Bruno Marien AA2004/05.
E N D
DomainNameSystemDNS is a name resolution protocol. It converts host names to IP addresses and vice-versa Seminario per il corso di Reti di calcolatori e sicurezza corso di laurea specialistica in Economia Informatica Docente Prof. Stefano Bistarelli Studente Bruno Marien AA2004/05
Esercizi e seminari • Scoprire per quali messaggi DNS usa la porta 53 e il TCP (invece che l’UDP) • Seminario su configurazioni del DNS • Seminario su DNSSEC (due persone) dopo che abbiamo fatto crittografia (novembre) • www.dnssec.net
From: "Stefano Bistarelli" <bista@sci.unich.it> To: "Bruno" <brunomarien@yahoo.it> Date: Tue, 12 Oct 2004 12:48:16 +0200 Devi parlare di quello non fatto a lezione. Le slide fino alla 15 devono essere solo 1 slide di introduzione. Mi pare ancora molto nebuloso. Fai vedere configurazione di resolver (su window e linux) e del nameserver (su linux e se vuoi su window2000) parla anche del dynamic update dns e differenze con dhcp
Quindi: • Introduzione (appena più di 1 slide) • La configurazione • del resolver e • del nameserver • Dynamic Update DNS e DHCP
1. Introduzione: la scatola nera • Uomo chiede alla macchina: linguaggio ‘umano’, hostname mnemonico. • Macchina fornisce hostname ad un servizio chiamato resolver • Resolver restituisce l’indirizzo IP • Macchina esegue il sevizio richiesto utilizzando l’indirizzo IP Schema del DNS
L’organizzazine dei nomi di dominio – concetti chiave • DNS è un database gerarchico e distribuito che contiene record di risorse con diversi campi • Resolver (client): query (forward e inverse) • Name Server (locale, assoluti, root, cache) • Concetto di ‘Zona’!! (non è dominio) • Resource Record: campi (owner, Type, Class, TTL, Data)
Vocabolario • Resolver e nameserver • Nameserver assoluto primario • Nameserver assoluto secondario • Nameserver cache / forwarder • File di configurazione • File di zona
2. La configurazione del DNS 2.1. La configurazione del resolver
La configurazione del Resolver2.1.1. Windows • Start > Pannello di controllo > Connessioni di rete > LAN > Generale > Protocollo internet (TCP/IP) > Generale • Scelta: automatica o manuale (fornito dall’amministratore di rete / ISP; preferito, alternativo) • > Avanzate, DNS (lista, suffissi e limitazione della risolutizione dei nomi per nomi non qualificati) Configurazione DNS > Resolver > Windows
Il resolver • I processi in corso: svchost.exe • Dove risiede? Lo scopriamo con: Start > Panello di Controllo > Strumenti di amministrazione >Servizi > Client DNS [dx proprietà] • Attivarlo (avvio di Windows): C:\Windows\System32\svchost.exe –k NetworkService (netsvcs per DHCP) Configurazione DNS > Resolver > Windows > processo
La configurazione del Resolver2.1.2. Linux • File /etc/resolv.conf dice quali nameserver devono essere usati dal resolver domain alei.it nameserver 172.18.9.1 nameserver 172.2.0.1 search alei.com alei.org alei.net options timeout 3 options attempts 3 Configurazione DNS > Resolver > Linux > etc/resolv.conf
Esempio domain alei.it /* identifica il nome del dominio a cui appartiene la propria macchina e il server dns.alei.it */ nameserver 172.18.9.1 /* Indirizzo IP del DNS primario */ nameserver 172.2.0.1 /* Indirizzo IP di un eventuale DNS secondario */ search alei.com alei.org alei.net /* elenca domini che vengono aggiunti a nomi di host per ricerche DNS. Può generare traffico inutile e ritardi */ options timeout 3 options attempts 3 Configurazione DNS > Resolver > Linux > Esempio
Vedere il contenuto del resolver locale (cache) • Ipconfig /displaydns • Ipconfig /flushdns (pulisce la cache) • (Ipconfig /all) Configurazione DNS > Resolver > Ipconfig
2. La configurazione del DNS 2.2. La configurazione del nameserver
Configurazione del Name Server2.2.1. Linux • Il file etc/named.conf • Cache / forwarding nameserver • Nameserver assoluto • Altri parametri • I file di zona in var/named/zones/ • Aggiornamenti • Controllo Configurazione DNS > Nameserver > Linux
2.2.1.1. /etc/named.conf • /etc/named.conf (BIND 8 e superiori) contiene i parametri di configurazione organizzato in sessioni: • affermazioni {...} e • commenti /*...*/// # • Sicurezza: bind gira come root. Usare un utente con minor privilegi e mettere bind in un chroot, un ambiente in cui il processo può lavorare con una propria directory root, per esempio: /var/named/ quindi: /var/named/etc/named.conf; /var/named/var/run/named.pid; var/named/zones/; var/named/zones/slave/ Comando di partenza: named –t /var/named –c /etc/named.conf Configurazione DNS > Nameserver > Linux > named.conf
Un primo esempio acl "reteaz" {172.18.9.0/28; 10.0.0.0/8;}; options {directory "/var/named"; pid-file "named.pid"; allow-query {“reteaz"; };}; zone "." { type hint; file "root.hint"; }; zone "0.0.127.in-addr.arpa" { type master; file "localhost.rev"; notify no;}; Configurazione DNS > Nameserver > Linux > named.conf
Sezioni di named.conf: acl acl: access control list (nome simbolico per una lista di indirizzi IP). Predefinito: none, any, localhost, localnets. acl“fidati” {172.18.9.0/28; 131.13.3.3;}; // fidati: rete interna meno sottozona e altra rete acl“secondari” {172.18.22.5; 131.13.3.5;}; // secondari: due host, nameserver assoluti secondari acl“diffidati” {155.111.222.0/24;}; // diffidati: rete intera sospetta Configurazione DNS > Nameserver > Linux > named.conf > acl
Sezioni di named.conf: options options: fornisce informazioni globali sul server e valori di default di altre sezioni (es. directory dei file). Esempio options {blackhole {diffidati;}; allow-query {any;}; allow-recursion {fidati;}; allow-transfer {secondari;}; } Configurazione DNS > Nameserver > Linux > named.conf > options
Altri parametri: forwarders {172.18.9.22;}; forward {first | only;}; controlla il comportamento di forwarders: first: inoltrare prima di risolvere in proprio only : solo inoltrare, non risolvere in propio Configurazione DNS > Nameserver > Linux > named.conf > options
notify {yes | no | explicit;} listen-on {10.0.1.1;}; Specifica l’interfaccia di rete sulla quale il programma è in attesa di query (qui interfaccia della rete interna). Default: tutte le interfaccie. statistics-file Specifica un posto per i file statistici. Default:/var/named/named.stats Configurazione DNS > Nameserver > Linux > named.conf > options
Sezioni di named.conf: zone zone: diversi tipi di file di configurazione: • zona assoluto primario: type master • zona assoluto secondario: type slave • root: type hint • cache, intermedio, inoltro:type stub, type forward, type delegation-only Configurazione DNS > Nameserver > Linux > named.conf > zone
L’importanza del nome della zona nella voce zone “nomedellazona” {....} nel file named.conf per i file di zona: @ (valore di default) $ ORIGIN (valore di default) nomi non assoluti (non finiscono con un punto!!!) Dopo il nome della zona si può anche inserire la classe della zona che di solito è IN e viene spesso ommesso Esempio: zone“esempio.com” IN {type master; file “esempio.com.db”; }; Configurazione DNS > Nameserver > Linux > named.conf > zone
Altre opzioni per zone: allow-query allow-transfer allow-update file masters notify zone-statistics Configurazione DNS > Nameserver > Linux > named.conf > zone
named.conf per solo cache /* file di configurazione per solo cache */ acl"reteaz" {172.18.9.0/28; 10.0.0.0/8;}; options {directory "/var/named"; pid-file "named.pid"; allow-query {“reteaz"; };}; zone "." {type hint; file "root.hint"; }; zone "0.0.127.in-addr.arpa" { type master; file "localhost.rev"; notify no;}; Configurazione DNS > Nameserver > Linux > named.conf > cache
named.conf per assoluto /* Server assoluto è simile al cache, ma aggiunge delle zone*/ options {directory "/var/named"; pid-file "named.pid"; allow-query{any;}; recursion no;}; Configurazione DNS > Nameserver > Linux > named.conf > assoluto
zone "." { type hint; file"root.hint"; }; zone "0.0.127.in-addr.arpa" { type master; file"localhost.rev"; notify no;}; zone "localhost" { type master; file"localhost.db"; }; Configurazione DNS > Nameserver > Linux > named.conf > assoluto
/*zona associazione laureati in economia informatica per cui è il server assoluto primario*/ zone "alei.it" {type master; file“alei.it.db"; allow-transfer {172.18.22.5; 131.13.3.5;};}; /*zona associazione laureati in economia ambientale per cui è un server assoluto secondario*/ zone "aleam.it" {type slave; file“aleam.it.bk"; masters {172.18.9.32;};}; /* zona inversa per alei.it*/ zone “9.18.172.in-addr.arpa" {type master; file“alei.it.rev"; notify no;}; Configurazione DNS > Nameserver > Linux > named.conf > assoluto
Altre sezioni in named.conf controls: usato per definire canali di controllo per rndc (più avanti). key: definisce chiavi da usare per autenticazione e autorizzazione trusted-keys: definisce chiavi per DNSSEC logging: specifica di cosa il server tiene traccia (logging) e dove memorizza queste informazioni. Una sola volta per named.conf Configurazione DNS > Nameserver > Linux > named.conf > altro
server: opzioni di configurazione per singoli server (esempio più avanti con aggiornamento) include “nomefile” permette di includere informazioni sensibili (per esempio chiavi) contenuti in file separati con accesso ristretto (percorso assoluto) view: definisce delle viste (diverse a secondo del server o indirizzi IP: sicurezza) Configurazione DNS > Nameserver > Linux > named.conf > altro
2.2.1.2. I file di zona • root.hint file con le definizioni dei root nameserver • file con le definizioni locali (localhost.db) • Costruiamo insieme • alei.it.db file per risoluzione diretta • alei.it.rev (localhost.rev è analogo) file per risoluzione inversa (reverse) • aleam.it.bk è ottenuto tramite zone-transfer Configurazione DNS > Nameserver > Linux > File di zona
var/named/root.hint • file con le definizioni dei root nameserver • scaricare dalla rete: ftp://ftp.rs.internic.net/domain/named.root ftp://ftp.nic.it/pub/DNS/named.root • qualche volta chiamato named.root o db.root Configurazione DNS > Nameserver > Linux > File di zona > root
; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; formerly NS.ISC.ORG ; . 3600000 NS F.ROOT- Configurazione DNS > Nameserver > Linux > File di zona > root
var/named/alei.it.db alei.it. 86400 IN SOA alei.it. master.alei.it ( 2004102601 ; numero di serie 21600 ; refresh per slave 6 ore anche 6H 3600 ; retry 10 min anche 10M 3600000 ; expire slave 1000 ore anche 41D o 6W 900 ) ; min neg caching (max 3 ore) • Ogni zona ha esattamente un record soa: indica che i dati sono assoluti per la zona • Il nome di dominio in cima è proprietario di questo SOA • Valori in SOA: nome del nameserver assoluto; email amministratore, numero di serie da incrementare dopo ogni cambiamento, parametri per il tempo Configurazione DNS > Nameserver > Linux > File di zona > alei.it
alei.it. 43200 IN NS ns.tecweb.unich.it. alei.it. IN NS ns.alei.aruba.com. IN NS ns.free.ac.be. services IN NS s.alei.it. services IN NS b2b.bald.biz. • I record NS indicano il nome (non indirizzo IP) dei diversi nameserver assoluti della zona (uno primario e almeno uno secondario, disolocati,...) non va mai riferito ad un RR di tipo CNAME • notate le ‘omissioni’ in riga 2, 3 e 4; nomi assoluti e relativi (services è una sottozona) • services (services.alei.it) è una sottozona di alei.it con un proprio nameserver assoluto su s.alei.it. e b2b.bald.biz. Configurazione DNS > Nameserver > Linux > File di zona > alei.it
ns.tecweb.unich.it.IN A 172.18.9.12 ns.alei.aruba.com. IN A 122.15.15.3 ns.free.ac.be. IN A 131.13.3.5 s.alei.it. IN A 172.18.9.55 b2b.bald.biz. IN A 187.12.50.67 Configurazione DNS > Nameserver > Linux > File di zona > alei.it
www 43200 IN CNAME fabio.alei.it. ftp IN CNAME ftp.alei.it. pop IN CNAME mail.alei.it smpt IN CNAME mail.alei.it @ IN MX 0 mail.alei.it. 50 rescue.alei.it. 10 bruno.alei.it. Configurazione DNS > Nameserver > Linux > File di zona > alei.it
localhost IN A 127.0.0.1 mail IN A 172.18.9.7 ftp IN A 172.18.9.22 ftp IN A 172.18.9.21 rescue IN A 131.22.14.1 bruno IN A 172.18.9.1 fabio IN A 172.18.9.2 claudia IN A 172.18.9.3 marianna IN A 172.18.9.4 stefano IN A 172.18.9.5 s.alei.it. IN A 172.18.55.2 quest’ultimo è un ‘glue’RR perché il server che cerchiamo sta nel sottodominio di alei.it Configurazione DNS > Nameserver > Linux > File di zona > alei.it
scorciatoie $ORIGIN alei.it. $TTL 86400; 24 ore default TTL per RR @ IN SOA alei.it. master.alei.it ( 2004101801 ; numero di serie 21600 ; refresh 6 ore 3600 ; retry 10 min 3600000 ; expire 1000 ore 900 ) ; negative caching ; max 3 ore NS ns.tecweb.unich.it. Configurazione DNS > Nameserver > Linux > File di zona
$GENERATE è una direttiva per la generazione automatica di insiemi di RR (A, CNAME, NS e PTR) che differiscono tra loro soltanto per un numero progressivo $TTL 3H $ORIGIN alei.it. $GENERATE 10-30/2 PC$ CNAME PC$.membri equivale a inserire in un file di zona: PC10.alei.it. 10800 IN CNAME PC10.membri.alei.it. PC12.alei.it. 10800 IN CNAME PC12.membri.alei.it. ... PC30.alei.it. 10800 IN CNAME PC30.membri.alei.it. Configurazione DNS > Nameserver > Linux > File di zona
/var/named/localhost.rev $TTL 86400 ; $ORIGIN 0.0.127.IN-ADDR.ARPA. @ IN SOA localhost. root.localhost. ( 2004102200 ; Serial 3h ; Refresh 15 ; Retry 1w ; Expire 3h ) ; Minimum IN NS localhost. 1 IN PTR localhost. Configurazione DNS > Nameserver > Linux > File di zona > localhost.rev
var/named/alei.it.rev $TTL 1d $ORIGIN 9.18.172.in-addr.arpa. @ IN SAO alei.it. master.alei.it ( 2004010301 86400 3600 864000 86400 ) alei.it. 43200 IN NS ns.tecweb.unich.it. alei.it. IN NS ns.alei.aruba.com. IN NS ns.free.ac.be. 21 IN PTR ftp.alei.it. 7 IN PTR mail.alei.it. 22 IN PTR ftp.alei.it. 1 IN PTR bruno.alei.it. 2 IN PTR fabio.alei.it. 3 IN PTR claudia.alei.it. 4 IN PTR marianna.alei.it. 5 IN PTR stefano.alei.it. Configurazione DNS > Nameserver > Linux > File di zona > alei.it.rev
2.2.1.3. Aggiornamento Distinguere: • aggiornamento named.conf: amministratore • aggiornamento file di zona assoluto primario: • manuale • dinamico: allow-update • aggiornamento file di zona assoluto secondario: notify; allow-notify, zone-transfer: axfer e ixfer • aggiornamento della cache: TTL Configurazione DNS > Nameserver > Linux > Aggiornamento
Aggiornare primario • Master zonefile: manuale (amministratore di zona), numero seriale • Aggiornamento dinamico (default: disattivato) zone “alei.it” {type master; file “alei.it.db”; allow-update{172.18.22.5;};}; Configurazione DNS > Nameserver > Linux > Aggiornamento
Notify (RFC 1996) è un meccanismo che permette ad un nameserver primario di dare un avviso ai nameserver secondari (NS oppure also-notify) dei cambiamenti apportati ai file di zona. Il secondario verficherà il numero di serie: se diverso inizia il trasferimento. options { notifyyes_or_no | explicit; }; Configurazione DNS > Nameserver > Linux > Aggiornamento
Transaction SIGnatures (TSIG) per la comunicazione sicura tra server, usando delle chiavi: zone transfer, notify, messaggi di query recursive, dynamic update (non solo in base a indirizzo IP, ma anche con una chiave). keyhost1-host2.{algorithm hmac-md5; secret "La/E5CjG9O+os1jq0a2jdA==";}; /* da inserire nel named.conf di host1 e host2 */ server 10.1.2.3 {keys {host1-host2.;};}; /* nel named.conf di host1 con 10.1.2.3 indirizzo IP dell’host2 e analogo per il contrario */ allow-update {key host1-host2. ;}; /* uso di chiavi oltre indirizzi IP in affermazioni di tipo ‘allow-qualcosa’ Configurazione DNS > Nameserver > Linux > Aggiornamento
Meccanismo dell’aggiornamento dinamico • RFC 2136: aggiungere, modificare, cancellare RR o insiemi di RR nel file assoluto primario • Cambiamenti registrati in file alei.it.db.jnl • Server periodicamente (15’) scarica (dump) il contenuto completo della zona aggiornata sul file di zona • Server che riparte rilegge file .jnl e incorpora tutti gli aggiornamenti posteriori all’ultimo dump • Cambiamenti da trasferimenti incrementali di zona in ingresso trattati nello stesso modo • Non aggiornare manualmente! Configurazione DNS > Nameserver > Linux > Aggiornamento
Attenzione non cambiare manualmente /etc/named.conf o i file di zona se si usa Bind Configuration Tool: ogni cambiamento manuale verrà sovrascritto la volta successiva che viene usato Bind Configuration Tool Configurazione DNS > Nameserver > Linux > Aggiornamento