Old:Samba e OpenLDAP: creare un controller di dominio con Ubuntu Server Configurazioni Preliminari
Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica. |
Configurazioni preliminari per Ubuntu
Al fine di non incappare in errori e al fine di velocizzare la ricerca dei nomi e IP è necessario installare e configurare bind9
.
Per poter assegnare gli indirizzi IP ai client di una rete è necessario configurare il DHCP server.
Ricordo che si deve impostare l'interfaccia eth1 con IP statico 192.168.2.1 altrimenti il DHCP server non funzionerà.
Per chi ha Ubuntu si deve prima disinstallare apparmor
, questo servizio è una vera scocciatura ed inutile per un server:
# apt-get purge apparmor
Installazione del demone name service caching daemon (nscd)
Poiché il nostro server LDAP sarà consultato in maniera continuativa, potrebbe essere una buona idea installare un servizio di cache per alcuni dati degli utenti. In questo modo i dati contenuti in cache saranno forniti senza eseguire un accesso al database LDAP, velocizzando di conseguenza i tempi di risposta del server. Il demone nscd (name service caching daemon) esegue esattamente questa cosa:
# apt-get install nscd
La configurazione di default è più che sufficiente per i nostri scopi.
Questo potrebbe inoltre essere un buon momento per riavviare il demone di Samba:
# /etc/init.d/samba restart
Configurazione DHCP
Un server DHCP può fornire anche altre proprietà di configurazione come:
- Nome dell'host
- Nome del dominio
- Gateway predefinito
- Server NTP (Network Time Protocol)
- Server di stampa
Il vantaggio di utilizzare DHCP è che i cambiamenti apportati alla rete, per esempio una modifica dell'indirizzo del server DNS, devono essere apportati solamente al server DHCP, mentre tutti gli host della rete vengono riconfigurati quando i client DHCP interrogano il server DHCP. Come ulteriore vantaggio, risulta anche molto semplice integrare nuovi computer nella rete, senza la necessità di controllare la disponibilità di un indirizzo IP. I conflitti nell'allocazione degli indirizzi IP sono quindi notevolmente ridotti.
Installare il DHCP server:
# apt-get install dhcp3-server
Per abbreviare non spiegherò i parametri configurati, ma andrò direttamente alla configurazione di esempio. La configurazione contempla un DHCP server dinamico.
# vim /etc/dhcp3/dhcpd.conf o /etc/dhcp/dhcpd.conf
editare come esempio:
include "/etc/dhcp3/rndc.key"; server-identifier 192.168.2.1; ddns-updates on; ddns-update-style interim; ddns-domainname "dominio.local"; ddns-rev-domainname "in-addr.arpa"; ignore client-updates; option domain-name "dominio.local"; option domain-name-servers 192.168.2.1; option netbios-name-servers 192.168.2.1; option netbios-node-type 8; option ntp-servers 192.168.2.1; option ip-forwarding off; default-lease-time 2592000; max-lease-time 3092000; authoritative; subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.10 192.168.2.255; option routers 192.168.2.1; option broadcast-address 192.168.2.255; allow client-updates; zone 2.168.192.in-addr.arpa. { primary 192.168.2.1; key "rndc-key"; } zone dominio.local. { primary 192.168.2.1; key "rndc-key"; } }
Riavviamo:
# /etc/init.d/dhcp3-server restart o /etc/init.d/isc-dhcp-server restart
La configurazione sopra descritta è un server DHCP dinamico, il quale aggiorna il DNS automaticamente. Come potete notare è stato aggiunta una stringa di path /etc/dhcp3/rndc.key, questa è la chiave creata in sede di configurazione bind ed è stata copiata nella cartella del DHCP, che nel caso di Squeeze è /etc/dhcp/.
Non descrivo altro sul DHCP e rimando a guide più dettagliate come questa: [1]
Configurazione DNS
Il DNS (Domain Name Service) è un servizio Internet che mappa gli indirizzi IP e i nomi di dominio univoci (FQDN) tra di loro facendo in modo di non dover ricordare gli indirizzi IP. I computer che eseguono DNS sono chiamati server dei nomi. Ubuntu è dotato di BIND (Berkley Internet Naming Daemon), il più diffuso programma usato per mantenere un server dei nomi su Linux.
Ci sono diversi metodi per configurare BIND9. Alcune delle configurazioni più comuni consistono in un server dei nomi cache, un server primario e un server secondario.
- Quando configurato come un server dei nomi cache, BIND9 troverà la risposta alle interrogazioni sui nomi e la archivierà.
- Come server primario, BIND9 legge i dati per una zona da un file ed è autoritativo per quella zona.
- Nella configurazione come server secondario, BIND9 ottiene i dati della zona da un altro server dei nomi per quella zona.
Installazione:
# apt-get install bind9 dnsutils
La configurazione che descriverò è basata su di un server primario che è autoritativo per quella zona. Descriverò solo la zona che ci servirà per risolvere i nomi dei client perciò non descriverò la zona localhost (che dovrebbe essere configurata di default).
Bind9 divide il file named.conf
in tre configurazioni, rispettivamente named.conf.local
, named.conf.options
, named.conf.default-zones
.
Descriverò tutti e tre precisando però che tutte le configurazioni devono essere richiamate da named.conf
.
/etc/bind/named.conf.options
options { directory "/var/cache/bind"; allow-transfer { 127.0.0.1; 192.168.2.0/24; }; allow-query { 127.0.0.1; 192.168.2.0/24; }; forwarders { 83.103.25.250; 62.101.93.101; }; auth-nxdomain no; # conform to RFC1035 listen-on { any; }; listen-on-v6 { any; }; };
/etc/bind/named.conf.local
logging { channel query.log { file "/var/log/query.log"; severity debug 3; }; category queries { query.log; }; }; // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; include "/etc/bind/rndc.key"; zone "dominio.local" { type master; file "/etc/bind/db.dominio.local"; allow-transfer { 127.0.0.1; 192.168.2.0/24; }; allow-update { key "rndc-key"; }; notify yes; }; zone "2.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.2"; allow-transfer { 127.0.0.1; 192.168.2.0/24; }; allow-update { key "rndc-key"; }; notify yes; };
Ora ci resta da configurare le zone: /etc/bind/db.dominio.local
$TTL 604800 dominio.local. SOA server.dominio.local. root.localhost. ( 2010092446 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ) ; minimum (1 week) ; @ NS server.dominio.local. $ORIGIN dominio.local. _samba_pdc_domain TXT "DOMINIO" _samba_pdc_ip_address TXT "192.168.2.1" _ldap_dc TXT "dc=dominio,dc=local" _ldap_tcp SRV 0 0 389 server.dominio.local. server A 192.168.2.1 pc1 A 192.168.2.179 pc2 A 192.168.2.73 pc3 A 192.168.2.95 pc4 A 192.168.2.173
Notate che il serial ha il seguente formato (aaaammggss): deve essere cambiato ogni volta che si fanno cambiamenti alla configurazione. (ss=seriale, che avanza di uno ogni volta che si cambia la configurazione, tuttavia prima di cambiarlo si deve prima cambiare la data e se nello stesso giorno non si fanno altri cambiamenti allora rimane inalterato).
pc1,pc2,... sono i client presenti sulla rete e per ogni di esso si deve aggiungere l'IP corrispondente assegnato dal DHCP, che dovrebbe però aggiornarlo automaticamente essendo dinamico.
Ora vediamo il reverse zone: /etc/bind/db.192.168.2
$TTL 604800 2.168.192.in-addr.arpa. SOA server.dominio.local. root.localhost. ( 2010092446 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ) ; minimum (1 week) ; @ NS server.dominio.local. $ORIGIN 2.168.192.in-addr.arpa. 1 PTR server.dominio.local. 179 PTR pc1.dominio.local. 73 PTR pc2.dominio.local. 95 PTR pc3.dominio.local. 173 PTR pc4.dominio.local.
Ora configuriamo la chiave: /etc/bind/rndc.key
key "rndc-key" { algorithm hmac-md5; secret "b/E3LQuAiHs926ucqAP7Mg=="; };
"rndc-key" è il nome della chiave che ritroviamo anche nelle varie zone del file named.conf
e nel dhcpd.conf
.
La chiave è creata con un determinato algoritmo che in questo caso è l'hash md5.
Il comando per creare la chiave è:
# dnssec-keygen -a HMAC-MD5 -b 512 -n USER rndc-key
Copiare la chiave generata nel file /etc/bind/rndc.key
, se il file non c'è bisogna crearlo.
Un esempio di chiave generata è:
rndc-key. IN KEY 0 3 157 '''pfZ3xnS348/f5YRznSxWAg=='''
Quello che inizia per pfZ........ è la chiave.
Impostare i permessi:
# chown -R root:bind /etc/bind # chmod -R 664 /etc/bind # chown root:bind /etc/bind/* # chmod 664 /etc/bind/*
Configuriamo il resolv.conf
:
/etc/resolv.conf
nameserver 127.0.0.1 nameserver 192.168.2.1 domain dominio.local search dominio.local
Impostare il blocco scrittura automatica del resolv.conf
, altrimenti verrà riscritto:
# chattr +i /etc/resolv.conf
Per sbloccare la scrittura (nel caso voleste editarlo):
# chattr -i /etc/resolv.conf
Riavviamo il tutto:
# /etc/init.d/bind9 restart
Testare il funzionamento:
# nslookup # < server Dovrebbe restituirvi l'indirizzo IP e la zona. #< pc1 Dovrebbe restituirvi indirizzo IP e zone # < exit Uscita