Old:Samba e OpenLDAP: creare un controller di dominio con Ubuntu Server Configurazioni Preliminari

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.


Samba e OpenLDAP: creare un controller di dominio con Ubuntu Server

Sommario

  1. Introduzione
  2. Configurazione DHCP e DNS
  3. Installazione e Configurazione LDAP Server
  4. Installazione e Configurazione Autenticazione LDAP
  5. Configurazione cittografia TLS
  6. Installazione e Configurazione Samba PDC
  7. Installazione e Configurazione SMBLDAP-TOOLS
  8. Popolamento database LDAP
  9. Configurazione Quote Utenti
  10. Aggiungere gli utenti di dominio
  11. Testare la rete
  12. Installazione e configurazione PHPLDAPADMIN
  13. Configurazione Client Linux
  14. Comandi Utili e altro
  15. Approfondimenti

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