server dns

22
Proiect Tehnologii Moderne de Comunicaţii Configurarea unui server DNS pe sistemul de operare Ubuntu student

Upload: fizique

Post on 09-Aug-2015

63 views

Category:

Documents


3 download

DESCRIPTION

setup server DNS

TRANSCRIPT

Page 1: Server DNS

Proiect Tehnologii Moderne de Comunicaţii

Configurarea unui server DNS pe sistemul de operare Ubuntu

studentAndrei Gabriel-Adrian

CUPRINS

Page 2: Server DNS

Introducere____________________________________2

1. Tipuri de servere BIND9_______________________31.1 Server de tip Caching___________________________________3

1.2 Server de tip Master principal____________________________3

1.3 Server de tip Master secundar____________________________3

1.4 Server de tip hibrid_____________________________________4

1.5 Server de tip Stealth_____________________________________4

2. Tipuri de înregistrări DNS_________________________________4

2.1 Înregistrări de adrese____________________________________4

2.2 Înregistrări de aliasuri___________________________________4

2.3 Înregistrări ale circulației emailurilor______________________5

2.4 Înregistrări ale numelor de servere________________________5

3. Configurarea BIND9_______________________________________5

3.1 Configurarea serverul de tip Caching______________________6

3.2 Configurarea serverului de tip Master principal_____________8

3.3 Configurarea serverului de tip Master secundar____________10

3.4 Pornirea, oprirea şi restartarea serviciului BIND9__________11

3.5 Starea serverului BIND9________________________________11

4. Logarea/înregistrarea datelor serverului BIND9_____11

4.1 Opţiunea Channel_____________________________________12

4.2 Opţiunea Category_____________________________________12

5. Elemente de securitate BIND9___________________________13

5.1 Access Control Lists (ACLs)_____________________________13

5.2 Procedeul Chrooting pentru BIND9______________________13

6. Troubleshooting____________________________________________16

6.1 Probleme comune______________________________________16

6.2 Incrementarea numerelor serial__________________________16

Bibliografie____________________________________________________17

Introducere

Page 3: Server DNS

Domain Name System (DNS) este un sistem distribuit de păstrare şi interogare a unor date arbitrare într-o structură ierarhică. Cea mai cunoscută aplicaţie a DNS este gestionarea domeniilor în Internet.Caracteristicile sistemului de nume (DNS) sunt:

foloseşte o structură ierarhizată; deleagă autoritatea pentru nume; baza de date cu numele şi adresele IP este distribuită.

Fiecare implementare TCP/IP conţine o rutină software (name resolver) specializată în interogarea serverului de nume (DNS) în vederea obţinerii translatării nume/adresă IP sau invers.

Există 2 tipuri de rezoluţie de nume: rezoluţie recursivă (name resolverul cere serverului de nume să facă

translatarea); rezoluţie iterativă (name resolverul cere serverului de nume să îi furnizeze

adresa IP a unui server care poate face translatarea).Tipic, procesul de rezoluţie a numelor se desfăşoară astfel:Name resolverul primeşte de la o aplicaţie client TCP/IP un nume; acesta

formulează o interogare primului server de nume din lista serverelor, Serverul de nume (DNS) determină daca este mandatat (autorizat) pentru domeniul respectiv (dacă există configurată o zonă DNS care conţine numele respectiv). Dacă este autorizat, transmite răspunsul clientului. Dacă nu, transmite o interogare altui server de nume pentru un răspuns autorizat; obţine răspunsul autorizat şi transmite clientului un răspuns neautorizat; totodată stochează răspunsul local pentru a răspunde la alte cereri pentru acelaşi nume.

Resolverul de nume transmite răspunsul aplicaţiei utilizator şi îl păstrează într-un cache pentru o anumită perioadă;

Dacă name resolverul nu primeşte un răspuns într-un anumit timp, transmite cererea următorului server de nume din listă. Când lista este epuizată, va genera o eroare.

1. Tipuri de servere BIND9

BIND9 oferă o gamă variată de servicii DNS. Unele dintre cele mai utile configuraţii sunt:

1.1 Server de tip Caching

Acest tip de server este util cazul unei conexiuni intenet slabe. Prin caching-ul cautărilor DNS, reduci lăţimea benzii şi , mai important, latenţa.

1.2 Server de tip Master principal

BIND9 poate fi folosit ca mediu de stocare pentru înregistrările DNS (grupuri de înregistrări se mai numesc şi zone) pentru un domain name înregistrat sau unu imaginar (dar numai dacă este folosit într-o reţea restricţionată).

Page 4: Server DNS

1.3 Server de tip Master secundar

Un server de tip Master secundar DNS este utilizat pentru întregirea serverului de tip Master principal DNS prin copierea zonelor configurate pe serverul principal. Serverele secundar sunt recomandate în aranjamentele mai complexe. În cazul funcţionării ca un domain name înregistrat serverul secundar asigură faptul ca zonele DNS sunt disponibile, chiar dacă serverul principal este offline.

1.4 Server de tip hibrid

Aceast tip de configurare se referă la posibilitatea de a avea simultan un server de tip Caching şi un server principal de tip Master, un server Caching şi unul secundar de tip Master sau chiar combinarea celor trei tipuri de server, Caching, Master principal şi Master secundar. Tot ceea ce este necesar este simpla combinare a diferitelor configuraţii.

1.5 Server de tip Stealth

Mai există încă două tipuri comune de server DNS ( folosite în lucrul cu zone pentru domain name înregistrat), Stealth principal și Stealth secundar. Acestea sunt efectiv la fel ca serverele DNS principale și secundar, dar cu o mică diferență organizațională. Să luam ca exemplu trei servere DNS : A,B și C. A este serverul principal, iar B și C sunt secundar. Dacă domeniul înregistrat folosește server A și B ca servere DNS ale domeniului, atunci serverul C este un server Stealth secundar. În acest caz serverul C este în continuare un server secundar, dar nu va fi accesat în legătura cu zonele utilizate de serverele A și B. În cazul în care domeniul înregistrat va folosi ca servere DNS, serverele B și C, atunci serverul A va deveni un server Stealth principal. Înregistrările sau modificările zonelor adiționale vor fi făcute în A, dar calculatoarele de pe Internet vor accesa doar serverle B și C.

2. Tipuri de înregistrări DNS

2.1 Înregistrări de adrese

Cel mai întâlnit tip de înregistrare. Acest tip de înregistrare face legătura între o adresă IP și un hostname.

2.2 Înregistrări de aliasuri

www IN A 1.2.3.4

Page 5: Server DNS

Folosit pentru a creea un alias pentru o înregistrare deja existentă (A). Nu există posibilitatea de a creea un alias CNAME care să direcționeze spre un altă înregistrare CNAME.

2.3 Înregistrări ale circulației emailurilor

Definește zona unde ar trebui trimise emailurile și cu ce prioritate. Trebuir să direcționeze spre o înregistare A și nu CNAME. Pot exista mai multe înregistrări MX dacă mai multe servere de mail sunt responsanbile pentru acel domeniu.

2.4 Înregistrări ale numelor de servere

Folosit pentru definirea serverelor folosite pentru copierea unei zone. La fel ca la înregistrările emailurilor trebuie să direcționeze spre o înregistrare A, și nu CNAME. Aici sunt definite serverele principale și secundar. Serverele Stealth sunt inteționat omise.

3. Configurarea BIND9

Fișierele de configurare pentru BIND9 sunt stocate în :

Principalele fișiere de configurare sunt următoarele :

mail IN CNAME wwwwww IN A 1.2.3.4

IN MX 10 mail.example.com.

[...]

mail IN A 1.2.3.4

IN NS ns.example.com.

[...]

ns IN A 1.2.3.4

/etc/bind/

/etc/bind/named.conf/etc/bind/named.conf.options/etc/bind/named.conf.local

Page 6: Server DNS

3.1 Configurarea serverul de tip Caching

Configurarea implicită este modificată pentru a acționa ca un server de tip caching. Trebuie doar adugată adresa IP a serverului DNS al ISPului. Acest lucru se face prin decomentarea și modifcarea următoarele linii din fișierul /etc/bind/named.conf.options:

Numerele 101.102.103.104 și 105.106.107.108 reprezintă adresele IP ale serverului DNS ale ISPului.

Următorul pas este restartarea aplicației bind prin următoare comandă:

Dacă ai instalat pachetul dnsutils poți testa configurația folosind comanda dig:

Dacă totul a decurs cum trebuie data de ieșire ca arată cam așa :

Comanda dig poate fi folosită și pe alte domenii, ca de exemplu;

[...]

forwarders { 101.102.103.104; 105.106.107.108; };

[...]

sudo /etc/init.d/bind9 restart

dig -x 127.0.0.1

; <<>> DiG 9.5.1-P2.1 <<>> -x 127.0.0.1;; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25213;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:;1.0.0.127.in-addr.arpa. IN PTR

;; ANSWER SECTION:1.0.0.127.in-addr.arpa. 0 IN PTR localhost.

;; Query time: 28 msec;; SERVER: 192.168.1.1#53(192.168.1.1);; WHEN: Sun Jan 17 16:23:32 2010;; MSG SIZE rcvd: 63

Page 7: Server DNS

Dacă folosiți comanda dig pe un domeniu de mai multe ori, se va observa o îmbunătățire a Query time între prima și a doua folosire :

Prima folosire:

Query time : 41 msec

A doua folosire:

dig google.com

; <<>> DiG 9.5.1-P2.1 <<>> google.com;; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31469;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:;google.com. IN A

;; ANSWER SECTION:google.com. 32 IN A 209.85.129.104google.com. 32 IN A 209.85.129.99google.com. 32 IN A 209.85.129.103google.com. 32 IN A 209.85.129.147

;; Query time: 41 msec;; SERVER: 192.168.1.1#53(192.168.1.1);; WHEN: Sun Jan 17 16:37:47 2010;; MSG SIZE rcvd: 92

; <<>> DiG 9.5.1-P2.1 <<>> google.com

...

;; Query time: 41 msec;; SERVER: 192.168.1.1#53(192.168.1.1);; WHEN: Sun Jan 17 16:37:47 2010;; MSG SIZE rcvd: 92

Page 8: Server DNS

Query time : 38 msec

Acest lucru se îmtâmplă datorită cachingului efectuat de server.

3.2 Configurarea serverului de tip Master principal

În această secțiune BIND9 va fi configurat ca server Master principal pentru domeniul nume.com. Domeniul principal.com poate fi înlocuit cu FQDN-ul propriu.

Pentru a adaugă o zona DNS la BIND9, astfel transformându-l într-un server Master principal, trebuie făcute următoarele modificări în fişierul named.conf.local :

Folosiţi un fişier zone deja existent ca şablon :

Editaţi noul fişier zone /etc/bind/db.nume.com, schimbând localhost. Cu FQDN propriului server, lăsând „ . ”-ul de la sfârşit. Modificaţi 127.0.0.1 cu adresa IP a serverului şi root.localhost cu o adresă de email validă, dar cu „ . „ în loc de „ @ „.

De asemenea, creaţi o înregistrare de tip A pentru ns.nume.com ca în exemplul următor:

; <<>> DiG 9.5.1-P2.1 <<>> google.com

...

;; Query time: 38 msec;; SERVER: 192.168.1.1#53(192.168.1.1);; WHEN: Sun Jan 17 16:37:49 2010;; MSG SIZE rcvd: 108

[...]

zone "nume.com" { type master; file "/etc/bind/db.nume.com"; };

[...]

sudo cp /etc/bind/db.local /etc/bind/db.example.com

;; BIND data file for local loopback interface;$TTL 604800@ IN SOA ns.nume.com. admin.nume.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS ns.nume.com.@ IN A 192.168.1.4

Page 9: Server DNS

Trebuie să incrementezi numărul serial de fiecare dată când modifici fişierul zone. Dacă faci mai multe schimbări înainte de a restarta BIND9, incrementează serialul o dată. Poţi adăuga înregistrări DNS în josul zonei.

După schimbările efectuate în fişierul zone, va trebui să restartezi serviciul BIND9 pentru ca schimbările să aibă efect :

Pentru configurarea serverului este necesară şi un fişier reverse zone pentru trecerea de la o adresă ip la un nume. Pentru acestă se vor adaugă următoarele linii în fişierul /etc/bind/named.conf.local :

Următorul pas este crearea unui fişier db.192 :

în care vom avea de făcut aproximativ aceleaşi modificări ca în fişierul /etc/bind/db.nume.com :

Pentru fiecare înregistrare de tip A făcută în fişierul etc/bind/db.example.com, una de tip PTR va trebui făcută în fişierul /etc/bind/db.192.

După crearea fişierul reverse zone se va da un restart serviciul BIND9:

sudo /etc/init.d/bind9 restart

zone "1.168.192.in-addr.arpa" { type master; notify no; file "/etc/bind/db.192";};

sudo cp /etc/bind/db.127 /etc/bind/db.192

;; BIND reverse data file for local loopback interface;$TTL 604800@ IN SOA ns.nume.com. admin.nume.com. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS ns.10 IN PTR ns.nume.com.

sudo /etc/init.d/bind9 restart

Page 10: Server DNS

3.3 Configurarea serverului de tip Master secundar

După finalizarea configurării serverului de tip Master principal este necesară configurarea unui server secundar pentru a menţine accesibilitatea domeniului în cazul în care serverul principal nu mai este funcţional.

În primul rând, pe serverul principal trebuie să fie permis transferul de zone. Pentru aceasta trebuie adăugată opţiunea allow-transfer în fişierul /etc/bind/named.conf.local ca în următorul exemplu :

Înlocuiţi @ip_secondary cu adresa IP a serverului secundar.Următorul pas este asemănător doar că va fi efectuat în fişierul

/etc/bind/named.conf.local aflat pe serverul secundar :

În locul @ip_master va fi trecut adresa IP a serverului principal. Restartaţi serviciul BIND9 pentru a se aplica schimbările efectuate.

[...]

zone "nume.com" { type master; file "/etc/bind/db.nume.com"; allow-transfer { @ip_secondary; }; };

[...]

zone "1.168.192.in-addr.arpa" { type master; notify no; file "/etc/bind/db.192"; allow-transfer { @ip_secondary; }; };

[...]

zone "nume.com" { type slave; file "/var/cache/bind/db.nume.com"; masters { @ip_master; }; };

[...] zone "1.168.192.in-addr.arpa"; { type slave; file "/var/cache/bind/db.192"; masters { @ip_master; }; };

Page 11: Server DNS

3.4 Pornirea, oprirea şi restartarea serviciului BIND9

Pentru pornirea se foloseşte comanda :

Pentru oprire :

Şi pentru restartare :

3.5 Starea serverului BIND9

Pentru a verifica starea serverului dumneavoastra utilizaţi una din următoarele comenzi :

sau

De exemplu :

4. Logarea/înregistrarea datelor serverului BIND9

BIND9 are disponibilă o gamă variată de opţiuni de înregsitrare a datelor. Vom vorbi despre două, cele mai importante, dintre acestea. Opţiunea channel, care stabileşte unde se stochează înregistrările şi opţiunea category, care determină ce să înregistreze.

Dacă nu se configurează o opţiune de înregistrare, exista deja una implicită, şi anume :

$ sudo /etc/init.d/bind9 start

$ sudo /etc/init.d/bind9 stop

$ sudo /etc/init.d/bind9 restart

$ host localhost

$ dig @localhost

logging { category default { default_syslog; default_debug; }; category unmatched { null; };};

$ host nume.com 127.0.0.1nume.com has address 192.168.1.4

Page 12: Server DNS

4.1 Opţiunea Channel

Pentru această opţiune vom specifica un channel (canal) unde vor fi trimise mesajele. În fişierul /etc/bind/named.conf.local vom adaugă următoarele :

4.2 Opţiunea Category

Activarea acestei opţiuni necesită configurarea unei category specificând tipul de mesaje ce vor fi stocate. Vom face aceasta ca adăugând următoarele linii :

Valoare debug poate fi setată între 1 şi 3, altfel aceasta va fi setată implicit 1.Trebuie de asemenea creat şi fisierul /var/log/query.log unde vor fi stocate

informaţiile:

Pentru ca toate schimbările să aibă efect va trebui să daţi din nou un restart :

logging { channel query.log { file "/var/log/query.log"; // Set the severity to dynamic to see all the debug messages. severity dynamic; }; };

logging { channel query.log { file "/var/log/query.log"; // Set the severity to dynamic to see all the debug messages. severity debug 3; };

category queries { query.log; }; };

sudo touch /var/log/query.logsudo chown bind /var/log/query.log

sudo /etc/init.d/bind9 restart

Page 13: Server DNS

5. Elemente de securitate BIND9

5.1 Access Control Lists (ACLs)

Access Control Lists (ACLs), sunt liste de adrese ce pot fi configurate si denumite pentru utilizări anterioare în opţiunile allow-notify, allow-query, allow-recursion, blackhole, allow-transfer, etc.

Folosirea ACLs-urilor permit un mai bun control asupra accesului la sever, fără a creea confuzie în configurări cu liste enorme de adrese IP. Limitarea accesului la server de către elemente exterioare pot preveni atacurile împotriva serverului dumneavoastră.

Iată un exemplu de ACLs:

Acest lucru permite căutări recursive ale serverului, din exterior, în cazul în care această opţiune a fost dezactivat.

5.2 Procedeul Chrooting pentru BIND9

Procedeul Chrooting este recomandat din punct de vedere al securizării în cazul în care nu ai instalat AppArmor. Într-un mediu Chroot, BIND9 are acces la toate fişierele şi elementele hardware de care are nevoie .

Pentru a aplica procedeul chroot unui server BIND9 creeaţi un mediu chroot şi aplicaţi următoarele configurări.

// Setaţi un ACLs numit „lista1” pentru a bloca RFC 1918,// adesea folosit în atacuriacl lista1 { 0.0.0.0/8; 1.0.0.0/8; 2.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3; 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; };// Setaţi un ACLS numit „lista2”. Înlocuiţi-o cu adresele IP.acl lista2 { x.x.x.x/24; x.x.x.x/21; }; options { ... ... allow-query { lista1; }; allow-recursion { lista1; }; ... blackhole { lista2; }; ...};zone "nume.com" { type master; file "m/nume.com"; allow-query { any; };};

Page 14: Server DNS

Mediul Chroot

Creeaţi următoare structură de directoare

Setaţi permisiunea pentru mediul chroot.

Copiaţi fişierul de configurare bind.

Daţi permisiunea de scriere utilizatorului bind pentru directorul /chroot/named/etc/namedb/slave.

Aici este locul unde fişierele pentru zonele slave vor fi ţinute. Astfel este sporită securitate, oprind atacatorul să modifice fişiere din zona principală, dacă acesta reuşeşte să acceseze serverul cu utilizatorul bind. Toate numele fişierelor slave din fişierul /chroot/named/etc/named.conf vor avea nevoie de nume de directoare către directorul slave. Iată un exemplu :

Creeaţi dispozitivele necesare serviciului BIND9

Permiteţi accesul utilizatorului bind către directorul /chroot/named/var/run unde vor fi stocate date statistice.

$ sudo mkdir -p /chroot/named$ cd /chroot/named$ sudo mkdir -p dev etc/namedb/slave var/run

$ sudo chown root:root /chroot$ sudo chmod 700 /chroot$ sudo chown bind:bind /chroot/named$ sudo chmod 700 /chroot/named

$ sudo cp /etc/named.conf /chroot/named/etc

$ sudo chown bind:bind /chroot/named/etc/namedb/slave

zone “my.zone.com.” { type slave; file “slaves/my.zone.com.dns”; masters { 10.1.1.10; };};

$ sudo mknod /chroot/named/dev/null c 1 3$ sudo mknod /chroot/named/dev/random c 1 8

$ sudo chown bind:bind /chroot/named/var/run

Page 15: Server DNS

Configurarea BIND9

Editaţi opţiunea startup ce se găseşte în /etc/default/bind9. Schimbaţi liniile :

cu :

Opţiunea –t schimbă directorul iniţial cu /chroot/named. Opţiunea –c spune BIND9 că fişierul de configurare se găseşte în /etc/named.conf. Fişierul name.conf trebui să arate în felul următor :

Ultimul pas este configurarea syslod Daemon a sistemului Ubuntu.

Restartaţi serverul syslog şi BIND9

/etc/default/bind9:

OPTIONS=”-u bind”

/etc/default/bind9:

OPTIONS="-u bind -t /var/named -t /chroot/named -c /etc/named.conf"

/chroot/named/etc/named.conf:

options { directory "/etc/namedb"; pid-file "/var/run/named.pid"; statistics-file "/var/run/named.stats";};

/etc/init.d/sysklogd:

[...]

SYSLOGD="-u syslog -a /chroot/named/dev/log"

[...]

$ sudo /etc/init.d/sysklogd restart$ sudo /etc/init.d/bind9 restart

Page 16: Server DNS

6. Troubleshooting

6.1 Probleme comune

Cea mai bună soluţie de rezolvae a problemelor de instalare şi configurare este să aveti fişiere de înregistrare (log), fişiere ce sunt o sursă de indicii şi informaţii despre problema pe care o aveţi şi despre cum poate fi ea rezolvată.

6.2 Incrementarea numerelor serial

Numere serial ale zonelor sunt doar numere şi nu au legătură cu data. Se obişnuieşte ca acest număr să fie data în care s-a făcut ultima modificare, de obicei de forma AAAALLZZRR, de exemplu 2010011812. S-a încercat testarea acestor seriale cu numărul 2000 trecut ca an. După modificare s-a încercat revenirea la vechiul număr serial. Această modificare a creat probleme deoarece numerele serial arată dacă o zonă a fost modificată. Dacă numărul serial de pe serverul secundar este mai mic decât cel de pe serverul principal, serverul secundar va încerca să copie configuraţia zonei de pe serverul principal. Setarea numărul serial pe serverul principal mai mic ca pe serverul secundar va opri serverul secundar din încercarea de a actualiza zona.

Soluţia este adăugarea numărului 2147483647 (2^31-1) la numărul serial, reîncărcarea zonei şi actualizarea servereleor secundar cu noul număr serial, apoi schimbarea numărul cu unul dorit şi din nou reîncărcarea zonei.

Page 17: Server DNS

Bibliografie

Liu, Cricket, DNS & BIND Cookbook, Editura O'Reilly, Statele Unite ale Americii, 2002

Liu, Cricket, Albitz, Paul, DNS and BIND, 5th Edition, Editura O'Reilly, Statele Unite ale Americii, 2006

http://www.bind9.net/manuals