Altri software server

Qui si troveranno molti modi di condividere la propria macchina con il resto del mondo o con la propria rete locale. Prima di installare qualunque pacchetto in questo capitolo bisogna essere sicuri di capire cosa il pacchetto fa e come settarlo correttamente. Può anche essere di aiuto studiare le conseguenze di un setup non appropriato così da poterne analizzare i rischi.

BIND-9.3.0p1

Introduzione a BIND

Il pacchetto BIND fornisce utilità per server e client DNS. Se si è interessati solo alle utilità fare riferimento a BIND Utilities-9.3.0p1.

Informazioni sul pacchetto

Dipendenze di BIND

Opzionali

OpenSSL-0.9.7e

Opzionali (per eseguire la test suite completa)

Net-tools-1.60 (per ifconfig) e Perl modules: Net-DNS

Opzionali (per [ri]costruire la documentazione)

OpenJade-1.3.2, JadeTeX-3.13, DocBook DSSSL Stylesheets-1.78

Installazione di BIND

Installare BIND eseguendo i seguenti comandi:

patch -Np1 -i ../9.3.0-patch1 &&
sed -i -e "s/dsssl-stylesheets/&-1.78/g" configure &&
./configure --prefix=/usr --sysconfdir=/etc \
    --enable-threads --with-libtool &&
make

Ora, come utente root:

make install &&
chmod 755 \
    /usr/lib/{lib{bind9,isc{,cc,cfg},lwres}.so.?.?.?,libdns.so.20.0.0} &&
mv /usr/share/man/man8/named.conf.5 /usr/share/man/man5 &&
cd doc &&
install -d -m755 /usr/share/doc/bind-9.3.0/{arm,draft,misc,rfc} &&
install -m644 arm/*.html \
    /usr/share/doc/bind-9.3.0/arm &&
install -m644 draft/*.txt \
    /usr/share/doc/bind-9.3.0/draft &&
install -m644 rfc/* \
    /usr/share/doc/bind-9.3.0/rfc &&
install -m644 \
    misc/{dnssec,ipv6,migrat*,options,rfc-compliance,roadmap,sdb} \
    /usr/share/doc/bind-9.3.0/misc

Per poter eseguire la test suite completa prima di installare il pacchetto è necessario settare alcune interfacce dummy (richiede ifconfig). Digitare i seguenti comandi per eseguire la test suite completa (bisognerà essere l'utente root per digitare il comando ifconfig):

bin/tests/system/ifconfig.sh up &&
make check >check.log 2>&1 &&
bin/tests/system/ifconfig.sh down

Se lo si desidera digitare il seguente comando per assicurare che tutti i 145 test girino con successo:

grep "R:PASS" check.log | wc -l

Spiegazioni dei comandi

patch -Np1 -i ../9.3.0-patch1: c'è una vulnerabilità nel codice DNSSEC. Vedere http://www.kb.cert.org/vuls/id/938617. La patch corregge il bug.

sed -i -e ... configure: questo comando obbliga configure a cercare i fogli di stile DSSSL nella locazione standard di BLFS.

--sysconfdir=/etc: questo parametro obbliga BIND a cercare i file di configurazione in /etc invece che in /usr/etc.

--enable-threads: questo parametro abilita la capacità multi-threading.

--with-libtool: questo parametro forza la costruzione delle librerie dinamiche e collega i binari installati a queste librerie.

cd doc; install ...: questo comando installa la documentazione addizionale del pacchetto. Opzionalmente omettere alcuni o tutti questi comandi.

Configurazione di BIND

File di configurazione

named.conf, root.hints, 127.0.0, rndc.conf e resolv.conf

Informazioni di configurazione

BIND verrà configurato per girare in una gabbia chroot come utente senza privilegi (named). Questa configurazione è più sicura, in quanto una compromissione del DNS avrebbe un impatto solo su pochi file nella directory HOME dell'utente named.

Creare l'utente e il gruppo senza privilegi named:

groupadd named &&
useradd -m -c "BIND Owner" -g named -s /bin/false named

Settare alcuni file, directory e dispositivi di cui BIND ha bisogno:

cd /home/named &&
mkdir -p dev etc/namedb/slave var/run &&
mknod /home/named/dev/null c 1 3 &&
mknod /home/named/dev/random c 1 8 &&
chmod 666 /home/named/dev/{null,random} &&
mkdir /home/named/etc/namedb/pz &&
cp /etc/localtime /home/named/etc

Quindi generare una chiave per l'uso nei file named.conf e rdnc.conf usando il comando rndc-confgen:

rndc-confgen -b 512 | grep -m 1 "secret" | cut -d '"' -f 2

Creare il file named.conf da cui named leggerà la locazione di file di zona, root name server e chiavi DNS sicure:

cat > /home/named/etc/named.conf << "EOF"
 options {
     directory "/etc/namedb";
    pid-file "/var/run/named.pid";
    statistics-file "/var/run/named.stats";

 };
 controls {
     inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
 };
 key "rndc_key" {
     algorithm hmac-md5;
     secret "[Insert secret from rndc-confgen's output here]";
 };
 zone "." {
     type hint;
     file "root.hints";
 };
 zone "0.0.127.in-addr.arpa" {
     type master;
     file "pz/127.0.0";
 };

// Bind 9 now logs by default through syslog (except debug).
// These are the default logging rules.

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

  channel default_syslog {
      syslog daemon;                      // send to syslog's daemon
                                          // facility
      severity info;                      // only send priority info
                                          // and higher
  };

  channel default_debug {
      file "named.run";                   // write to named.run in
                                          // the working directory
                                          // Note: stderr is used instead
                                          // of "named.run"
                                          // if the server is started
                                          // with the '-f' option.
      severity dynamic;                   // log at the server's
                                          // current debug level
  };

  channel default_stderr {
      stderr;                             // writes to stderr
      severity info;                      // only send priority info
                                          // and higher
  };

  channel null {
     null;                                // toss anything sent to
                                          // this channel
  };
};



EOF

Creare il file rndc.conf con i seguenti comandi:

cat > /etc/rndc.conf << "EOF"
key rndc_key {
algorithm "hmac-md5";
    secret
    "[Insert secret from rndc-confgen's output here]";
    };
options {
    default-server localhost;
    default-key    rndc_key;
};
EOF

Il file rndc.conf contiene informazioni per controllare le operazioni di named con l'utilità rndc.

Creare un file zona con i seguenti contenuti:

cat > /home/named/etc/namedb/pz/127.0.0 << "EOF"
$TTL 3D
@      IN      SOA     ns.local.domain. hostmaster.local.domain. (
                        1       ; Serial
                        8H      ; Refresh
                        2H      ; Retry
                        4W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.local.domain.
1               PTR     localhost.
EOF

Creare il file root.hints con i seguenti comandi:

[Nota]

Nota

Fare attenzione ad assicurare che non ci siano spazi aggiuntivi in questo file.

cat > /home/named/etc/namedb/root.hints << "EOF"
.                       6D  IN      NS      A.ROOT-SERVERS.NET.
.                       6D  IN      NS      B.ROOT-SERVERS.NET.
.                       6D  IN      NS      C.ROOT-SERVERS.NET.
.                       6D  IN      NS      D.ROOT-SERVERS.NET.
.                       6D  IN      NS      E.ROOT-SERVERS.NET.
.                       6D  IN      NS      F.ROOT-SERVERS.NET.
.                       6D  IN      NS      G.ROOT-SERVERS.NET.
.                       6D  IN      NS      H.ROOT-SERVERS.NET.
.                       6D  IN      NS      I.ROOT-SERVERS.NET.
.                       6D  IN      NS      J.ROOT-SERVERS.NET.
.                       6D  IN      NS      K.ROOT-SERVERS.NET.
.                       6D  IN      NS      L.ROOT-SERVERS.NET.
.                       6D  IN      NS      M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.     6D  IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     6D  IN      A       192.228.79.201
C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     6D  IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     6D  IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     6D  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
EOF

Il file root.hints è un elenco di root name server. Questo file deve venire aggiornato periodicamente con l'utilità dig. Una copia corrente di root.hints può essere ottenuta da ftp://rs.internic.net/domain/named.root. Consultare il BIND 9 Administrator Reference Manual per i dettagli.

Creare o modificare resolv.conf per usare il nuovo name server con i seguenti comandi:

[Nota]

Nota

Sostituire [tuodominio.com] con il proprio nome di dominio valido.

cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search [tuodominio.com]
nameserver 127.0.0.1
EOF

Impostare i permessi nella gabbia chroot con i seguenti comandi:

chown -R named.named /home/named

Per avviare il server DNS all'accensione, installare l'init script /etc/rc.d/init.d/bind incluso nel pacchetto blfs-bootscripts-6.0.

make install-bind

Ora avviare BIND con il nuovo boot script:

/etc/rc.d/init.d/bind start

Testare BIND

Eseguire il test della nuova installazione di BIND 9. Prima fare una query dell'indirizzo locale dell'host con dig:

dig -x 127.0.0.1

Ora provare una ricerca di un nome esterno, prendendo nota della differenza di velocità nelle ricerche ripetute dovuta al caching. Eseguire il comando dig due volte sullo stesso indirizzo:

dig www.linuxfromscratch.org &&
dig www.linuxfromscratch.org

Si possono notare risultati praticamente istantanei con la caching delle ricerche di named. Consultare il BIND Administrator Reference Manual che si trova presso doc/arm/Bv9ARM.html nell'albero sorgente del pacchetto per per ulteriori opzioni di configurazione.

Contenuti

Programmi installati: dig, dnssec-keygen, dnssec-signzone, host, isc-config.sh, lwresd, named, named-checkconf, named-checkzone, nslookup, nsupdate, rndc e rndc-confgen
Librerie installate: libbind9.[so,a], libdns.[so,a], libisc.[so,a], libisccc.[so,a], libisccfg.[so,a] e liblwres.[so,a]
Directory installate: /home/named, /usr/include/bind9, /usr/include/dns, /usr/include/dst, /usr/include/isc, /usr/include/isccc, /usr/include/isccfg, /usr/include/lwres e /usr/share/doc/bind-9.3.0

Brevi descrizioni

dig

interroga i server DNS.

dnssec-keygen

è un generatore di chiavi per DNS sicuro.

dnssec-signzone

genera versioni firmate dei file di zona.

host

è un'utilità per le ricerche del DNS.

lwresd

è un server di nomi solo per caching per l'uso da parte dei processi locali.

named

è il demone del server dei nomi.

named-checkconf

verifica la sintassi dei file named.conf.

named-checkzone

verifica la validità del file zona.

nslookup

è un programma usato per interrogare i server dei nomi di dominio di Internet.

nsupdate

è usato per sottomettere richieste di aggiornamento del DNS.

rndc

controlla l'operatività di BIND.

rndc-confgen

genera file rndc.conf.