User Tools

Site Tools


podesavanje_bind_9_na_freebsd

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

podesavanje_bind_9_na_freebsd [2017/04/28 10:25] (current)
Line 1: Line 1:
 +\\
 +====== Uvod ======
 +
 +Ovo je kratak i brz pregled kroz podesavanja DNS-a. To znaci da nece moci da objasni sve zapetljanosti koje se javljaju u DNS-u kao i da ovo nije knjiga (kao sto je DNS and BIND od O’Reilly publishing). U stvari je namenjen da vam pomogne da za kratko vreme podignete DNS i pruzi vam osnovno znanje o tome kako sve radi. 
 +Vecina ovih konfiguracija ce raditi i na Bind 8. Ali ipak, ovo nije testirano. Gde god je to moguce, preporucujem da koristite verziju 9 iz sledecih razloga: ​
 +
 +  * Bind9 sadrzi dosta bezbednosnih poboljsanja u odnosu na Bind8. ​
 +  * Bind9 i njegovi alati imaju punu podrsku za IPv6. 
 +  * Dolazi sa trenutnom stabilnom verzijom FreeBSD (5.3 u vreme pisanja). ​
 +
 +====== Omogucavanje Named ======
 +
 +Mozete omoguciti bind u vasem /​etc/​rc.conf tako da startup skripta zna da hocete da je pokrenete: ​
 +
 +  named_enable="​YES"​
 +  named_chrootdir="/​var/​named"​
 +  named_chroot_autoupdate="​YES"​
 +
 +====== Chroot-ovanje Bind9 ======
 +
 +Mozda cete upitati, “Zasto bih chroot-ovao Bind?”. Prvo i najvaznije, morate da pretpostavite da postoji mogucnost da ce neko nekada pokusati da hakuje vase servise na neki nacin. Ako podesite chroot za Bind na nacin opisan dole imacete server koji je pokrenut da ne radi kao root u svom licnom “sandbox-u” tako da iako neko i uspe da udje, najgore sto ce moci da uradi je da manipulise fajlovima u direktorijumu gde je vas bind server zatvoren. Iz ovog razloga cete zeleti da backup-ujete vase zone fajlove. ​
 +
 +Ako koristite najsveziju verziju FreeBSD sistema, ovo dole nije ustvari potrebno. Startup skripta ce uraditi sve umesto vas sa izuzetkom kreiranja named.conf i named.root. Ono sto trebate da uradte je da kreirate ispravni named.conf u /​var/​named/​etc/​namdb/​named.conf i uradite: ​
 +
 +  cp /​usr/​src/​etc/​namedb/​named.root /​var/​named/​etc/​namedb/​named.root
 +
 +Odavde mozemo aktivirati startup skriptu i pretpostavljajuci da je vas named.conf ispravan (sto se moze proveriti sa named-checkconf) mozete pokrenuti named sa: 
 +
 +  /​etc/​rc.d/​named start
 +
 +===== Kreiranje chroot okruzenja (zastarelo) =====
 +
 +Ako pustite da startup kreira vase chroot okruzenje kao sto je to objasnjeno u gorjnoj sekciji onda ovo mozete da preskocite. Nastavite sa [[http://​www.section6.net/​wiki/​index.php/​Using_DNS_with_BIND#​Finishing_Touches|Zavrsnim Koracima.]]
 +
 +Prvo morate da kreirate direktorijume za vase chroot-ovano okruzenje tako sto cete uraditi sledece:
 + 
 +  mkdir -p /​var/​named/​dev /​var/​named/​etc /​usr/​named/​var/​run ​
 +
 +Sledece, moracete da ubacite odgovarajuce fajlove u direktorijume koje ste upravo kreirali: ​
 +
 +  cp /​etc/​named/​named.root /​var/​named/​named.root
 +  cp /​etc/​localtime /​var/​named/​etc/​localtime
 +
 +Ako vec imate postojece conf ili zone fajlove onda i njih prebacite u /var/named. Obavezno promenite opcije direktorijuma u vasem postojecem named.conf (pogledajte ispod). ​
 +
 +Posto ce Bind biti u svom skoro nezavisnom okruzenju moracete da kreirate neke unose za uredjaje tako sto cete uradite sledece: ​
 +
 +  mknod /​var/​named/​dev/​null c 2 2                                              ​
 +  mknod /​var/​named/​dev/​random c 2 3 
 +
 +Na kraju, omogucicemo da Bind bude vlasnik svih fajlova i direktorijuma koje smo kreirali: ​
 +
 +  chown -R bind:bind /​var/​named/​*
 +
 +===== Zavrsni Koraci =====
 +
 +OK, kreirali smo okruzenje, sada samo moramo da podesimo syslog i /​etc/​rc.conf. ​
 +
 +  /​etc/​rc.d/​syslogd stop
 +  /​etc/​rc.d/​syslogd start
 +
 +syslogd skripta ce detektovati da ste pokrenuli named, i da mora da doda dodatni socket. Ovo ce restartovati syslogd sa dodatnim socket-om za logovanje u /​var/​named/​dev. Postarajte se da je syslogd pokrenut u vasem /​etc/​rc.conf ako vec nije tamo: 
 +
 +  syslogd_enable="​YES" ​                                                        
 +
 +====== Podesavanje Bind9 za IPv4 ======
 +
 +Pokazacemo kako da podesite bind server za NAT i Internet server. Naravno ako ne zelite da ovo bude vidljivo na Internetu mozete to onda blokirati zastitnim zidom. Vecina vas ce verovatno podesavati bind9 za standardne v4 adrese. Ovo mozda nije najbolji tutorijal koji postoji, dacu samo pregled podesavanja za Ipv6, ako znate kako da podesite IPv4 bind onda mozete ovo da preskocite. Isto tako, pretpostavicemo da koristite chroot-ovano okruzenje kao sto je to gore objasnjeno. ​
 +
 +===== Podesavanje rndc =====
 +
 +rndc alatka je korisna za kontrolisanje named lokalno ili sa udaljenog racunara, neke od njegovih funkcija vam mogu dati i korisne statistike. Vredi da se podesi. Evo i kako. 
 +
 +Pokrenite rndc-confgen -a. Ovo ce postaviti fajl rndc.key u /​etc/​namedb/​. Primeticete da kljuc izgleda otprilike ovako: ​
 +<​code>​
 +key "​rndc-key"​ {
 +       ​algorithm hmac-md5;
 +       ​secret "​5CKK3LlNDdkxshC5gmnzYQ==";​
 +};
 +</​code>​
 +Ubacite kljuc u vas /​var/​named/​etc/​namedb/​named.conf. Radice ako stavite rndc specifikacije na pocetku fajla ovako: ​
 +<​code>​
 +controls {
 +  inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
 +};
 +key "​rndc-key"​ {
 +  algorithm hmac-md5;
 +  secret "​5CKK3LlNDdkxshC5gmnzYQ==";​
 +};
 +</​code>​
 +Ovo omogucava da samo localhost ima pristup kontrolisanju named sa rndc, ali se ovo moze modifikovati. ​
 +
 +Ubacite kljuc u vas /​etc/​rndc.conf. Ovo je primer ovog fajla sa kljucem iz gornjeg primera. ​
 +<​code>​
 +options {
 +        default-server ​ localhost;
 +        default-key ​    "​rndc-key";​
 +};
 +
 +server localhost {
 +        key     "​rndc-key";​
 +};
 +
 +key "​rndc-key"​ {
 +        algorithm hmac-md5;
 +  secret "​5CKK3LlNDdkxshC5gmnzYQ==";​
 +};
 +</​code>​
 +Pokrenite named ili killall -HUP named da bi se promene primenile ako vec imate named pokrenut. Ako nije, onda ce promene nastupiti sledeci put kada pokrenete named.. ​
 +
 +===== Podesavanje named.conf =====
 +
 +Prvo, trebace vam konfiguracioni fajl. Pokusacu da vas provedem kroz ovo i da na primerima objasnim kako je to uradjeno na Section6 Mrezama tako da mozete nauciti i primeniti prema vasim potrebama. ​
 +
 +==== Podesite opcije za vas /etc: ====
 +<​code>​
 +Options {
 +        directory "/";​
 +        listen-on { 1.2.3.4; };
 +        recursion no; #Make it so people can only look up records on this host
 +        version "";​
 +        pid-file "/​var/​run/​named/​pid";​
 +        rrset-order {
 +           class IN type A name "​www.example.com"​ order random;
 +        };
 +};
 +</​code>​
 +Ovo ce postaviti vas glavni direktorijum kao chroot-ovan dikrektorijum. Posto je named chroot-ovan,​ njegov root je /​var/​namedb/​ ako ste ga podesili prema primeru. ​
 +
 +**Objasnjenje opcija**
 +
 +  * Nemojte da postavite recursion no; ako podesavate dns za intranet. ​
 +  * version "";​ na ovaj nacin hakeri nece dobiti verziju koju koristite kada vas skeniraju, sto vas cini manje potencijalnom metom. ​
 +  * rrset-order oznacava kako podesavate round robin dns. Ako hocete round robin dns za sve visestruke A unose u vasim zonama mozete jednostavno uraditi ovo: 
 +<​code>​
 +rrset-order {
 +   order random;
 +};
 +</​code>​
 +Pored random postoje i opcije cyclic, i fixed 
 +
 +==== Podesite informacije o vasim zonama: ====
 +<​code>​
 +zone "​."​ {
 +       type hint;
 +       file "​named.root";​
 +};
 +zone "​section6.net"​ {
 +       type master;
 +       file "​zones/​db.section6.net";​
 +      notify yes;
 +      allow-transfer { 216.7.11.132;​ 64.71.191.27;​ 212.100.224.176;​ 66.37.215.46;​ };
 +};
 +zone "​0.0.10.in-addr.arpa"​ {
 +       type master;
 +       file "​zones/​db.0.0.10.in-addr.arpa";​
 +};
 +zone "​89.67.45.123.in-addr.arpa"​ {
 +       type master;
 +       file "​zones/​db.13.180.230.12.in-addr.arpa";​
 +};
 +// Provide a reverse mapping for the loopback address 127.0.0.1
 +zone "​localhost"​ {
 +    type master;
 +    file "​zones/​db.localhost";​
 +};
 +zone "​0.0.127.in-addr.arpa"​ {
 +    type master;
 +    file "​zones/​db.0.0.127.in-addr.arpa";​
 +    notify no;
 +};
 +</​code>​
 +U redu, ovo je dosta. Generalno imamo root hints fajl, fajl koji je obavezan kada se potrazuju nepoznati DNS, i jedna forward zona: section6.net koja pokazuje mapiranje imena u adrese. Imamo 2 mapiranja adresa u imena, jedna za vasu privatnu mrezu 10.0.0.0/24 i jedna za vas spoljasnji IP, 123.45.67.89. Primetite formate ovih zona, kasnije ce vam biti jasnije. Imamo i obavezne fajlove za localhost zone, nas kompjuter koji je localhost i 127.0.0.1. Primeticete da je section6.net jedini sa notify yes i allow transfer opcijama. notify yes znaci da obavestava hostove o promenama. Imamo notify no postavljenu u vecini zona zato sto su one samo za unitrasnju upotrebu. allow transfer odredjuje hostove kojima je dozvoljeno da transferuju vase informacije do njihovih. ​
 +
 +==== Zonski fajlovi ====
 +
 +Za svaku definisanu zonu u vasem named.conf trebace vam odgovarajuci zonski fajl koji opisuje forward ili reverse informacije za tu zonu. Ispod je primer IPv4 forward zonskog fajla za section6.lan. Ime fajla, prema named.conf je db.section6.lan. ​
 +<​code>​
 +$ORIGIN section6.net.
 +$TTL 1d
 +section6.net. IN SOA    syndie.section6.net. root.syndie.section6.net. (
 +                       ​1 ​              ; Serial
 +                       ​10800 ​          ; Refresh after 3 hours
 +                       ​3600 ​           ; Retry after 1 hour
 +                       ​604800 ​         ; Expire after 1 week
 +                       86400 )         ; Minimum TTL of 1 day
 +
 +               IN NS   ​syndie.section6.net.
 +;
 +section6.net ​   IN MX 10 syndie.section6.net.
 +;
 +@               IN A    10.0.0.1
 +localhost ​      IN A    127.0.0.1
 +syndie ​         IN A    10.0.0.1
 +vpn             IN A    10.0.0.2
 +schism ​         IN A    10.0.0.5
 +test            IN A    10.0.0.20
 +ganymede ​       IN A    10.0.0.42
 +web             IN A    10.0.0.99
 +gabrielle ​      IN A    10.0.0.242
 +;
 +hades           IN CNAME        syndie
 +ns              IN CNAME        syndie
 +mail            IN CNAME        syndie
 +ftp             IN CNAME        ganymede
 +</​code>​
 +Primeticete nekoliko stvari ovde. $ORIGIN ustvari govori named-u koji domen da prikaci zapisima tako da nemoramo da pisemo istu stvar svaki put. Ovo . na kraju domena je vazno, ako je zaboravite stvari nece raditi. Postoje 2 stringa nakon SOA (Start of Authority). Jedna govori ko je SOA za domen, a druga imenuje kontakte (root.syndie.section6.lan = root@syndie.section6.lan). A zapisi upucuju na IP adrese, CNAME zapisi su druga imena za A zapise. Dobra je praksa da nemate CNAME koji upucuje na drugi CNAME. MX zapis kaze mail exchanger-ima da salju mail na tu adresu za taj domen. Broj nakon toga je prioritet, od kojih je 1 najveci. ​
 +
 +A sada primer za reverse zonski fajl. Ovo je za zonu 0.0.10.in-addr.arpa. ​
 +<​code>​
 +$TTL 1d
 +0.0.10.in-addr.arpa. IN SOA syndie.section6.net. root.syndie.section6.net. (
 +                       ​1 ​       ; Serial
 +                       ​10800 ​   ; Refresh after 3 hours
 +                       ​3600 ​    ; Retry after 1 hour
 +                       ​604800 ​  ; Expire after 1 week
 +                       86400 )  ; Minimum TTL of 1 day
 +
 +@               IN NS syndie.section6.net.
 +
 +1               IN PTR syndie.section6.net.
 +2               IN PTR vpn.antithesist.net.
 +5               IN PTR schism.section6.net.
 +20              IN PTR test.section6.net.
 +42              IN PTR ganymede.section6.net.
 +99              IN PTR web.section6.net.
 +242             IN PTR gabrielle.section6.net.
 +</​code>​
 +Vecina deklaracija ovde su iste kao i u forward fajlu. Svi zapisi ovde su PTR zapisi. Posto imate definisan 0.0.10.in-addr.arpa (koji se prevodi u 10.0.0.x) samo treba da stavite “x” vrednost za svaku adresu. Opet, ne zaboravite . nakon svakog punog imena domena ili nece raditi. ​
 +
 +====== Podesavanje Bind9 za IPv6 ======
 +
 +Na pocetku, ako vam se ovaj tutorijal ne svidja i zelite da procitate nesto drugo vezano za podesavanje BIND-a za IPv6 mozete procitati [[http://​www.section6.net/​help/​IPv6DNS.pdf|Ovaj dokument]]. Neke dodatne beleske za IPv6 DNS. Postoje 2 formata za A zapise u IPv6: AAAA i A6. Posto jos uvek cekam da vidim A6 zapis javno, uputicu vas na gore navedeni dokument ako zelite da ga podesite. Ali cu opisati kako da podesite 2 formata za reverse DNS (nibble i bitstream). IPv6 zone u named.conf ​
 +
 +Ja sam podesio moje IPv6 forward zapise u istom zonskom fajlu u kojem se nalaze IPv4 zapisi, iako ovo radi mozda neki nece hteti da to tako urade. Mozete kreirati pod-domen da bi odvojili vase IPv4 i IPv6 zapise, ali ne postoji nista lose da oba zapisa budu u istom fajlu, ili 2 indenticna imena koji upucuju na IPv6 i na IPv4 zapis. Do sada je kod mene radilo ovako. Ovo su IPv6 specificne informacije koje su dodate u moj named.conf primer iznad. ​
 +<​code>​
 +// IPv6 zone files
 +// ==========
 +//
 +// First, load the zone for the IPv6 loopback address.
 +//
 +//The new current way of reverse (Bitstream)
 +zone "​\[x0000000000000000/​64].ip6.arpa"​ {
 +       type master;
 +       file "​zones/​db.0000:​0000:​0000:​0000.ip6.arpa";​
 +       ​allow-transfer {none;};
 +};
 +//The old (depreciated) reverse (Nibble format)
 +zone "​0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" ​ {
 +       type master;
 +       file "​zones/​db.0000:​0000:​0000:​0000.ip6.int";​
 +       ​allow-transfer {none;};
 +};
 +zone "​\[x200104701f000222/​64].ip6.arpa"​ {
 +       type master;
 +       file "​zones/​db.2001.470.1f00:​222.ip6.arpa";​
 +};
 +zone "​2.2.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.int"​ {
 + type master;
 +       file "​zones/​db.2001.470.1f00:​222.ip6.int";​
 +};
 +</​code>​
 +Kao sto mozete videti imam prve 4 grupe od po 16 bita (poznate i kao /64 posto je 16 * 4 = 64) definisane u zonskim fajlovima. Prva dva unosa definisu moj localhost, a druga 2 definisu moj opseg javnih adresa 2001.470.1f00.222/​64. Vecina ovog dela fajla je razumljiva i bez komentara. ​
 +
 +
 +
 +\\
 +\\
 +Izvor: http://​www.section6.net/​wiki/​index.php/​Using_DNS_with_BIND
  
podesavanje_bind_9_na_freebsd.txt · Last modified: 2017/04/28 10:25 (external edit)