ďťż
 
 
   ISC BIND
 
 

Tematy

 
    
 

 

 

 

ISC BIND





wiking - 22-07-2007 14:33
1. Czym jest BIND

Cytując polską Wikipedię:
BIND (Berkeley Internet Name Domain, poprzednio: Berkeley Internet Name Daemon) jest popularnym serwerem (demonem) DNS. Został on stworzony przez Paula Vixie w roku 1988 podczas jego pracy w DEC. BIND jest jednym z najpopularniejszych serwerów DNS wykorzystywanym w systemach Linux i Unix. BIND stanowi niezmiernie ważny składnik zapewniający poprawne działanie systemu nazw w Internecie. Wielu użytkowników globalnej sieci bezwiednie korzysta z serwera BIND, kiedy ich przeglądarka WWW odpytuje go o adres IP komputera udostępniającego interesującą ich stronę.

2. Instalacja

W Debianie sprowadza się do wydania polecenia:

aptitude install bind9 bind9-host No i mamy zainstalowanego BINDa. Domyślna konfiguracja pozwala na pracę jako serwer cachujący. Co to daje?

stacjonarny:~# dig www.debian.org
; <<>> DiG 9.4.1 <<>> www.debian.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50622
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 0

;; QUESTION SECTION:
;www.debian.org.                        IN      A

;; ANSWER SECTION:
www.debian.org.        543    IN      A      194.109.137.218

;; AUTHORITY SECTION:
.                      510149  IN      NS      L.ROOT-SERVERS.NET.
.                      510149  IN      NS      D.ROOT-SERVERS.NET.
.                      510149  IN      NS      K.ROOT-SERVERS.NET.
.                      510149  IN      NS      E.ROOT-SERVERS.NET.
.                      510149  IN      NS      J.ROOT-SERVERS.NET.
.                      510149  IN      NS      A.ROOT-SERVERS.NET.
.                      510149  IN      NS      F.ROOT-SERVERS.NET.
.                      510149  IN      NS      B.ROOT-SERVERS.NET.
.                      510149  IN      NS      C.ROOT-SERVERS.NET.
.                      510149  IN      NS      H.ROOT-SERVERS.NET.
.                      510149  IN      NS      M.ROOT-SERVERS.NET.
.                      510149  IN      NS      G.ROOT-SERVERS.NET.
.                      510149  IN      NS      I.ROOT-SERVERS.NET.

;; Query time: 47 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jul 22 10:15:37 2007
;; MSG SIZE  rcvd: 259 Zwróć uwagę na

Wydajemy jeszcze raz to samo polecenie

stacjonarny:~# dig www.debian.org
; <<>> DiG 9.4.1 <<>> www.debian.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63968
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 0

;; QUESTION SECTION:
;www.debian.org.                        IN      A

;; ANSWER SECTION:
www.debian.org.        315    IN      A      194.109.137.218

;; AUTHORITY SECTION:
.                      509921  IN      NS      G.ROOT-SERVERS.NET.
.                      509921  IN      NS      K.ROOT-SERVERS.NET.
.                      509921  IN      NS      B.ROOT-SERVERS.NET.
.                      509921  IN      NS      F.ROOT-SERVERS.NET.
.                      509921  IN      NS      D.ROOT-SERVERS.NET.
.                      509921  IN      NS      L.ROOT-SERVERS.NET.
.                      509921  IN      NS      M.ROOT-SERVERS.NET.
.                      509921  IN      NS      E.ROOT-SERVERS.NET.
.                      509921  IN      NS      H.ROOT-SERVERS.NET.
.                      509921  IN      NS      A.ROOT-SERVERS.NET.
.                      509921  IN      NS      I.ROOT-SERVERS.NET.
.                      509921  IN      NS      C.ROOT-SERVERS.NET.
.                      509921  IN      NS      J.ROOT-SERVERS.NET.

;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jul 22 10:19:25 2007
;; MSG SIZE  rcvd: 259 I co widzimy?

Nic dodać, nic ująć. Niby niewiele, jednak w dużych sieciach znacząco oszczędza to czas i pasmo.

3. Konfiguracja

Czas teraz na właściwą konfigurację serwera dns. Przedstawię tutaj w jaki sposób zamknąć BINDa w więzieniu (chroot), stworzyć własną domenę, domenę odwrotną oraz nieco rozszerzone logowanie.

3.1 Chroot

Jako, że BIND nie należy do najbezpieczniejszych demonów zamkniemy go w więzieniu czyli w chroot jail. Co nam to da? Tyle, że gdy padniemy ofiarą ataku, napastnik nie będzie mógł się wydostać poza więzienie, czyli tak naprawdę katalog, jakie przygotowaliśmy dla BINDa.

No to zaczynamy:

Pierwszym krokiem jest zatrzymanie usługi

stacjonarny:~# /etc/init.d/bind9 stop Edytujemy plik /etc/default/bind9. Powinien mieć on taką postać:

OPTIONS="-u bind -t /var/lib/named"
RESOLVCONF=yes Następnie tworzymy katalogi dla BINDA:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run Tworzymy urządzenia null i random oraz poprawiamy uprawnienia:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind Ostatnią rzeczą będzie zmodyfikowanie pliku /etc/dafault/syslogd. Jego zawartość powinna być następująca:

SYSLOGD="-a /var/lib/named/dev/log" Teraz pozostaje jedynie uruchomić ponownie demony:

/etc/init.d/syslogd restart
/etc/init.d/bind9 start Nie muszę chyba dodawać, że dobrze jest rzucić okiem na plik /var/log/syslog, żeby sprawdzić czy demony uruchamiają się bez błędów.

3.2 Wstępna konfiguracja

Poniżej zamieszczam swój plik /etc/bind/named.conf.options. Jeśli chcesz go użyć musisz dostosować go do swoich potrzeb. Sekcje logging i acl nie są konieczne.

options {
        directory "/var/cache/bind";
        statistics-file "/var/cache/bind/bind.stats";
        dump-file "/var/cache/bind/bind.dump";
        zone-statistics yes;
        allow-recursion { 127.0.0.1; 192.168.0.0/8; };
        allow-transfer { 192.168.0.3; };
        notify yes;
        transfer-format many-answers;
        query-source address * port 53;
        transfer-source * port 53;
        notify-source * port 53;
        forwarders {
                208.67.222.222;
                208.67.220.220;
        };
        auth-nxdomain yes;
        listen-on { 127.0.0.1; 192.168.0.1; };
        listen-on-v6 { none; };
};

// Logowanie
logging {
        channel default_file { file "/var/log/named/default.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel general_file { file "/var/log/named/general.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel database_file { file "/var/log/named/database.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel security_file { file "/var/log/named/security.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel config_file { file "/var/log/named/config.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel resolver_file { file "/var/log/named/resolver.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel xfer-in_file { file "/var/log/named/xfer-in.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel xfer-out_file { file "/var/log/named/xfer-out.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel notify_file { file "/var/log/named/notify.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel client_file { file "/var/log/named/client.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel unmatched_file { file "/var/log/named/unmatched.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel queries_file { file "/var/log/named/queries.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel network_file { file "/var/log/named/network.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel update_file { file "/var/log/named/update.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel dispatch_file { file "/var/log/named/dispatch.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel dnssec_file { file "/var/log/named/dnssec.log" versions 3 size 5m; severity dynamic; print-time yes; };
        channel lame-servers_file { file "/var/log/named/lame-servers.log" versions 3 size 5m; severity dynamic; print-time yes; };

        category default { default_file; };
        category general { general_file; };
        category database { database_file; };
        category security { security_file; };
        category config { config_file; };
        category resolver { resolver_file; };
        category xfer-in { xfer-in_file; };
        category xfer-out { xfer-out_file; };
        category notify { notify_file; };
        category client { client_file; };
        category unmatched { unmatched_file; };
        category queries { queries_file; };
        category network { network_file; };
        category update { update_file; };
        category dispatch { dispatch_file; };
        category dnssec { dnssec_file; };
        category lame-servers { lame-servers_file; };
};

// ACL
acl "moje_sieci" {
        192.168.1.0/24;
        127.0.0.1;
}; Teraz należy jeszcze utworzyć pliki logów (zwróć uwagę na ścieżkę)

touch /var/lib/named/var/log/named/client.log
touch /var/lib/named/var/log/named/config.log
touch /var/lib/named/var/log/named/database.log
touch /var/lib/named/var/log/named/default.log
touch /var/lib/named/var/log/named/dispatch.log
touch /var/lib/named/var/log/named/dnssec.log
touch /var/lib/named/var/log/named/general.log
touch /var/lib/named/var/log/named/lame-servers.log
touch /var/lib/named/var/log/named/network.log
touch /var/lib/named/var/log/named/notify.log
touch /var/lib/named/var/log/named/queries.log
touch /var/lib/named/var/log/named/resolver.log
touch /var/lib/named/var/log/named/security.log
touch /var/lib/named/var/log/named/unmatched.log
touch /var/lib/named/var/log/named/update.log
touch /var/lib/named/var/log/named/xfer-in.log
touch /var/lib/named/var/log/named/xfer-out.log ÂŻeby mieć wszystkie logi w jednym miejscu tworzymy dowiązanie symbliczne

ln -s /var/lib/named/var/log/named /var/log/named 3.3 Plik strefy

Nadeszła pora na główną część konfiguracji czyli plik strefy dla naszej domeny.

Edytujemy plik /etc/bin/named.conf.local

zone "siec.domowa" IN {
        type master;
        file "/etc/bind/db.siec.domowa";
        allow-query { moje_sieci; };
}; No i plik strefy /etc/bind/db.siec.domowa
$TTL    604800
@      IN      SOA    stacjonarny.siec.domowa. root.stacjonarny.siec.domowa. (
                        1                ; Serial
                        604800                ; Refresh
                        86400                ; Retry
                        2419200        ; Expire
                        604800 )              ; Negative Cache TTL

        IN        NS        dns1.siec.domowa.
        IN        NS        dns2.siec.domowa.
        IN        MX        10        smtp.siec.domowa.

@                        IN        A        192.168.0.1

stacjonarny                IN        A        192.168.0.1
dns1                        IN        A        192.168.0.1
smtp                        IN        A        192.168.0.1

dns2                        IN        A        192.168.0.3 3.4 Domena odwrotna

Edytujemy plik /etc/bin/named.conf.local

zone "siec.domowa" IN {
        type master;
        file "/etc/bind/db.siec.domowa";
        allow-query { moje_sieci; };
};

zone "0.168.192.IN-ADDR.ARPA" IN {
        type master;
        file "/etc/bind/db.192";
        allow-query { moje_sieci; };
}; Plik /etc/bind/db.192

$TTL    600
0.168.192.IN-ADDR.ARPA.  IN      SOA    stacjonarny.siec.domowa.    root.stacjonarny.siec.domowa. (
                        1                      ; serial
                        12h            ; refresh
                        1h              ; retry
                        2w              ; expire
                        1h              ; default_ttl
                        )

                        IN      NS      dns1.siec.domowa.
                        IN      NS      dns2.siec.domowa.

1        IN      PTR    stacjonarny.siec.domowa.
2        IN        PTR        dns2.siec.domowa. Zakończenie
No i to by było na tyle. Zdaję sobie sprawę, że opis ten nie jest kompletny (postaram się go uzupełnić niebawem), ale pozwala na szybkie i bezstresowe uruchomienie serwera dns. Mam nadzieję, że komuś się przyda.



xbitdesigns - 24-01-2008 04:29
W restarcie demona powinno byc:

/etc/init.d/sysklogd restart Pzdr.



lis6502 - 04-01-2009 23:14
Nie muszę chyba dodawać, że dobrze jest rzucić okiem na plik /var/log/syslog, żeby sprawdzić czy demony uruchamiają się bez błędów. Tutaj mały błąd: ten krok wykonujemy dopiero po wpisaniu jakiejś konfiguracji do /var/lib/named/etc/bind; najprościej poprzez Nexus:/home/lis6502# cp -dpR /etc/bind /var/lib/named/etc/ Pamiętaj użytkowniku, u Ciebie pliki konfiguracyjne takie jak znajdują się wewnątrz klatki, czyli w /var/lib/named/etc/bind/named.conf.
Ważne: Wszystkie odwołania w plikach muszą wyglądać normalnie, czyli /etc/bind/db.local, ale dla Ciebie jako root'a będzie chodziło o /var/lib/named/etc/bind/db.local.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis