Questa guida vuole aiutare ad installare Samba4 e Bind come server di DNS su Debian Wheezy. Ho scelto di utilizzare SerNet Enterprise Samba al posto dei pacchetti presenti nel repository di Debian. Per chi non la conoscesse, Enterprise Samba si occupa da anni di patchare e pacchettizzare Samba per le distro Linux Enterprise.
Con poche modifiche la guida è valida anche per altre distro Linux supportate da SerNet Samba.
Configurazioni
I parametri di configurazione di esempio seguiti in questa guida sono:
- Nome del server: dominioad
- Nome del dominio: test.miarete.it
- Nome REALM KERBEROS o NETBIOS: TEST
- IP del server: 192.168.1.80
- Server Role: DC
- Utente amminstratore del dominio: Administator (attenzione alla A maiuscola!)
- Password dell’utente Administrator: P4ssWord (per ora la password deve avere almeno 7 caratteri ed essere abbastanza complessa)
Prerequisiti
I servizi di Active Directory si basano su due servizi essenziali: il DNS e la sincronizzazione oraria.
Si consiglia pertanto di installare un servizio NTP sul server in questo modo:
1
2
3
|
# apt-get install ntpdate
# ntpdate it.pool.ntp.org
# apt-get install ntp
|
Vedremo invece più avanti l’installazione di Bind9 come server DNS del dominio. Nel frattempo vediamo come impostare i file di configurazione di Debian.
Configuriamo ora l’ip statico del server editando la parte relativa alla scheda di rete nel file /etc/network/interfaces
1
2
3
4
5
|
auto eth0
iface eth0 inet static
address 192.168.1.80
netmask 255.255.255.0
gateway 192.168.1.1
|
Impostiamo il nome del server nel file /etc/hostname
1
|
dominioad.test.miarete.it
|
Ed infine modifichiamo il file /etc/hosts
1
2
3
|
127.0.0.1 localhost
#127.0.1.1 dominioad dominioad.test.miarete.it <-- commentare!!!
192.168.1.80 dominioad dominioad.test.miarete.it
|
L’entry 127.0.1.1 va commentata in quanto puo' portare Bind a restituire risultati errati.
Rendiamo effettive le modifiche con un reboot del server.
Installiamo infine il transport-https di apt.
1
|
# apt-get install apt-transport-https
|
Installazione di Samba
Innanzitutto occorre registrarsi al sito
http://www.enterprisesamba.com ed eseguire il login.
Una volta entrati ci vengono offerte le indicazioni per effettuare l’installazione di Samba e la username e la accesskey per effettuare il download.
Editiamo il file /etc/apt/sources.list aggiungendo il repository:
1
2
3
4
5
6
7
|
#
# SerNet Samba 4.1 Packages
#
# (debian-wheezy)
#
deb https://USERNAME:[email protected]/packages/samba/4.1/debian wheezy main
deb-src https://USERNAME:[email protected]/packages/samba/4.1/debian wheezy main
|
Attenzione a sostituire USERNAME:ACCESSKEY con quelle presenti nella pagina di SerNet Samba!
Importiamo la chiave GPG di SerNet Samba
1
2
|
# wget http://ftp.sernet.de/pub/sernet-samba-keyring_1.4_all.deb
# dpkg -i sernet-samba-keyring_1.4_all.deb
|
Eseguiamo un update di apt, l’installazione di Samba, di alcuni pacchetti suggeriti e di Bind9
1
2
3
4
|
# apt-get update
# apt-get install sernet-samba-ad
# apt-get install fam acl attr quota
# apt-get install bind9
|
Configurazione di Samba
Configuriamo Samba come server AD:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# samba-tool domain provision --use-rfc2307 --function-level=2008_R2 --interactive
Realm [TEST.MIARETE.IT]:
Domain [TEST]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=test,DC=miarete,DC=it
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=test,DC=miarete,DC=it
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /var/lib/samba/private/named.conf for an example configuration include file for BIND
and /var/lib/samba/private/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: dominioad
NetBIOS Domain: TEST
DNS Domain: test.miarete.it
DOMAIN SID: S-1-5-21-1601127499-651562562-2929973973
|
L’opzione --interactive
ci permette di configurare i parametri in modo interattivo.
L’opzione --use-rfc2307
abilita l’estensione NIS che ci permette di gestire gli utenti/gruppi di Unix con il tool di gestione degli utenti/gruppi di AD di Microsoft. Questa opzione è facoltativa ma non puo' essere attivata in seguito. L’abilitazione non comporta nessun effetto aggiuntivo se essa non viene utilizzata.
L’opzione --function-level=2008_R2
imposta il livello di funzionalità di Samba a quello di un Windows Server 2008 R2.
Durante la configurazione Samba vi propone i parametri di default, in questo caso vanno tutti bene (ruolo, dominio, REALM) tranne il server DNS che impostiamo a BIND9_DLZ per utilizzare Bind come server DNS.
Ultimo avviso: la password di Administrator è impostata con una scadenza a 42 giorni, vedremo in seguito come modificare tale opzione.
Modifichiamo il file /etc/default/sernet-samba impostando i seguenti parametri
1
2
3
4
5
6
7
8
9
10
11
12
|
# SAMBA_START_MODE defines how Samba should be started. Valid options are one of
# "none" to not enable it at all,
# "classic" to use the classic smbd/nmbd/winbind daemons
# "ad" to use the Active Directory server (which starts the smbd on its own)
# (Be aware that you also need to enable the services/init scripts that
# automatically start up the desired daemons.)
SAMBA_START_MODE="ad"
# SAMBA_RESTART_ON_UPDATE defines if the the services should be restarted when
# the RPMs are updated. Setting this to "yes" effectively enables the
# functionality of the try-restart parameter of the init scripts.
SAMBA_RESTART_ON_UPDATE="yes"
|
Lanciamo il demone di Samba
1
|
# service sernet-samba-ad start
|
ed effettuiamo un paio di test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# smbclient -L localhost -U%
Domain=[TEST] OS=[Unix] Server=[Samba 4.1.12-SerNet-Debian-9.wheezy]
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.1.12-SerNet-Debian-9.wheezy)
Domain=[TEST] OS=[Unix] Server=[Samba 4.1.12-SerNet-Debian-9.wheezy]
Server Comment
--------- -------
Workgroup Master
--------- -------
# smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password:
Domain=[TEST] OS=[Unix] Server=[Samba 4.1.12-SerNet-Debian-9.wheezy]
. D 0 Sun Oct 19 15:14:48 2014
.. D 0 Sun Oct 19 15:14:55 2014
61467 blocks of size 131072. 48297 blocks available
|
Bene, se tutto è andato a buon fine possiamo procedere con la configurazione di Bind
Configurazione di Bind
Per prima cosa abilitiamo le zone di Samba in Bind aggiungendo al file /etc/bind/named.conf.local la riga:
1
|
include "/var/lib/samba/private/named.conf";
|
Poi effettuiamo le seguenti modifiche al file /etc/bind/named.conf.options :
- abilitiamo il forwards verso un server DNS esterno (in questo caso OpendDNS)
1
2
3
4
|
forwarders {
208.67.222.222;
208.67.220.220;
};
|
- abilitiamo le sottoreti che posso effettuare query al nostro server
1
2
3
4
5
|
allow-query { 127.0.0.1; 192.168.1.0/24; } ;
allow-transfer { none; } ;
notify no;
empty-zones-enable no;
allow-recursion { 127.0.0.1; 192.168.1.0/24; } ;
|
1
2
|
//auth-nxdomain no; # conform to RFC1035
auth-nxdomain yes;
|
- abilitiamo l’autenticazione Samba aggiungendo la riga
1
|
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
|
e modifichiamo i permessi della directory private di Samba
1
|
# chown root:bind private
|
Modifichiamo il file /etc/resolv.conf per aggiungere il dominio alla ricerca e facciamo puntare il server DNS sul server Bind interno
1
2
|
search test.miarete.it
nameserver 192.168.1.80
|
Effettuiamo un reboot per rendere effettive tutte le modifiche e un po' di test sul server DNS
1
2
3
4
5
6
|
# host -t SRV _ldap._tcp.test.miarete.it
_ldap._tcp.test.miarete.it has SRV record 0 100 389 dominioad.test.miarete.it.
# host -t SRV _kerberos._udp.test.miarete.it
_kerberos._udp.test.miarete.it has SRV record 0 100 88 dominioad.test.miarete.it.
# host -t A dominioad.test.miarete.it
dominioad.test.miarete.it has address 192.168.1.80
|
Se non ci sono errori il server DNS risulta ben impostato.
Configurazione di Kerberos
Installiamo e configuriamo Kerberos.
1
|
# apt-get install krb5-user
|
Copiamo o linkiamo i file di configurazione creati da Samba
1
|
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
|
e modifichiamolo così:
1
2
3
4
|
[libdefaults]
default_realm = TEST.MIARETE.IT
dns_lookup_realm = true
dns_lookup_kdc = true
|
A questo punto un paio di test
e
1
2
3
4
5
6
7
|
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting Expires Service principal
19/10/2014 17:13:35 20/10/2014 03:13:35 krbtgt/[email protected]
renew until 20/10/2014 17:13:31
|
Aggiunta di un client Windows
Ora non resta che aggiungere i client al server. Unica accortezza: ogni client Windows deve avere l’IP del server Samba come indirizzo DNS primario.
Samba puo' essere gestito con i Remote Server Administration Tool di Microsoft in ambiente Windows.
Tali strumenti devono essere scaricati in base al proprio sistema operativo. Questi sono i link per
Windows Vista
Windows 7
Windows 8
Windows 8.1
Windows 10
Gestione di Samba da linea di comando in ambiente Linux
Il comando samba-tool è lo strumento in ambito Linux per la gestione di Samba. Consultare la pagina man di
samba-tool per una descrizione dettagliata.
Trucchetti
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
- Resettare la password di Administrator
# smbpasswd Administrator
New SMB password:
Retype new SMB password:
- Mostrare le policy della password
samba-tool domain passwordsettings show
- Togliere l'expire date alla password di Samba
# samba-tool user setexpiry Administrator --noexpiry
Expiry for user 'Administrator' disabled.
- Abilitare/disabilitare la complessità della password
samba-tool domain passwordsettings set --complexity=on|off
- Disabilitare la history della password
samba-tool domain passwordsettings set --history-length=0
- Modificare la lunghezza minima della password
samba-tool domain passwordsettings set --min-pwd-length=TUOVALORE
- Modificare la durata minima/massima della passoword
samba-tool domain passwordsettings set --min-pwd-age=TUOVALORE
samba-tool domain passwordsettings set --max-pwd-age=TUOVALORE
|
Riferimenti
Questa guida è stata redatta anche grazie al contributo di altre guide:
Samba wiki
Samba e OpenLDAP: creare un controller di dominio Active Directory con Debian Wheezy
L' onnipresente Google