Samba e OpenLDAP: creare un controller di dominio Active Directory con Debian Wheezy: differenze tra le versioni

m
rimossa guida obsoleta
m (rimossa guida obsoleta)
 
(136 versioni intermedie di 4 utenti non mostrate)
Riga 1: Riga 1:
{{stub}}{{SAMBA
{{SAMBA
|precedente=Samba e OpenLDAP: creare un controller di dominio con Debian Squeeze
|precedente=Samba e OpenLDAP: creare un controller di dominio con Debian Squeeze
|successivo=Samba e OpenLDAP: creare un controller di dominio con Ubuntu Server}}{{Versioni compatibili|Wheezy}}
|successivo=ClamAV: scansione antivirus delle condivisioni Samba}}{{Versioni compatibili|ONLY|Wheezy}}
{{Warningbox|La versione di Winbind che attualmente è presente nei repository è buggata e genera un errore:
 
wbinfo -u
{{Warningbox|'''Aprile 2014''': non sono presenti bug bloccanti nella versione di Samba presente nei Backports. L'installazione su un server di test si è conclusa felicemente.}}
<br/>
 
wbinfo: /usr/lib/x86_64-linux-gnu/libwbclient.so.0: no version information available (required by wbinfo) Error looking up domain users
<br/>
Il bug è stato segnalato e dovrebbe essere risolto a breve. In SID sembra sia presente una versione corretta, ma richiede troppe dipendenze per essere installata in un sistema di produzione
<br/><br/>
'''UPDATE del 3 gennaio 2014'''
<br/>
Samba4 è stato temporaneamente rimosso da Testing, Sid e Experimental; la versione in Stable è ancora buggata e non funziona. Occorre aspettare o compilarselo a mano
}}
<br/>
{{Warningbox|In attesa che i bug di Samba4 vengano risolti, attualmente la strada migliore per impostare un dominio Active Directory su una distribuzione Debian-based è installare la versione Community Edition di [http://www.zentyal.com/ Zentyal], una distro basata su Ubuntu Server LTS e già ampiamente preconfigurata per lo scopo.
}}
<br/>
{{Warningbox|In attesa che i bug di Samba4 vengano risolti, è stato scelto di utilizzare i pacchetti Samba4 preparati da [http://www.enterprisesamba.com/samba/ Sernet]. Per poter aggiungere il repository è necessario registrarsi gratuitamente presso il sito.
}}
<br/>
== Introduzione ==
== Introduzione ==
Guide simili per precedenti versioni di Debian o altre distribuzioni Linux:
Guide simili per precedenti versioni di Debian o altre distribuzioni Linux:
Riga 26: Riga 11:
* [[Samba e OpenLDAP: creare un controller di dominio con Debian Lenny | Debian Lenny]]
* [[Samba e OpenLDAP: creare un controller di dominio con Debian Lenny | Debian Lenny]]
* [[Samba e OpenLDAP: creare un controller di dominio con Debian Squeeze | Debian Squeeze]]
* [[Samba e OpenLDAP: creare un controller di dominio con Debian Squeeze | Debian Squeeze]]
* E' possibile impostare un dominio Active Directory su una distribuzione Debian-based anche installando la versione Community Edition di [http://www.zentyal.com/ Zentyal], una distro basata su Ubuntu Server LTS e già ampiamente preconfigurata per lo scopo.
Vedremo questa volta come installare un server basato su '''Debian Wheezy''' e Samba 4 affinché funga da Primary Domain Controller di una rete Windows.
Vedremo questa volta come installare un server basato su '''Debian Wheezy''' e Samba 4 affinché funga da Primary Domain Controller di una rete Windows.
<br/>Se non siete interessati alle funzionalità di [http://it.wikipedia.org/wiki/Active_Directory Active Directory] introdotte da Samba 4 e intendete solamente installare un Domain Controller che gestisca i profili centralizzati e l'autenticazione degli utenti, consigliamo di utilizzare la versione 3 di Samba, ancora presente nei [[repository]] di Wheezy, seguendo ad esempio questa guida:
<br/>Se non siete interessati alle funzionalità di [http://it.wikipedia.org/wiki/Active_Directory Active Directory] introdotte da Samba 4 e intendete solamente installare un Domain Controller che gestisca i profili centralizzati e l'autenticazione degli utenti, consigliamo di utilizzare la versione 3 di Samba, ancora presente nei [[repository]] di Wheezy, seguendo ad esempio questa guida:
Riga 48: Riga 34:
* una scheda di rete collegata alla LAN e configurata con un '''indirizzamento IP fisso''', come descritto ad esempio in questa guida: [[IP fissi | Come impostare indirizzi IP fissi su Debian]]
* una scheda di rete collegata alla LAN e configurata con un '''indirizzamento IP fisso''', come descritto ad esempio in questa guida: [[IP fissi | Come impostare indirizzi IP fissi su Debian]]
* un '''sistema LAMP''' come descritto ad esempio in questa guida: [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]
* un '''sistema LAMP''' come descritto ad esempio in questa guida: [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]
* un '''server DNS''', come descritto ad esempio in questa guida: [[Un server DNS e DHCP su Debian]]
<!--* un '''server DNS''', come descritto ad esempio in questa guida: [[Un server DNS e DHCP su Debian]]-->
* un '''server NTP''', come descritto ad esempio nel secondo metodo di questa guida: [[Impostare e modificare data e ora]]
* un '''server NTP''', come descritto ad esempio nel secondo metodo di questa guida: [[Impostare e modificare data e ora]]
'''Non proseguite senza avere questi servizi già attivi e funzionanti'''.
'''Non proseguite senza avere questi servizi già attivi e funzionanti'''.
Si suppone per comodità che tutti i servizi (NTP, LAMP, DNS) risiedano sullo stesso server.<br/>
Si suppone per comodità che tutti i servizi (NTP, LAMP<!--, DNS-->) risiedano sullo stesso server.<br/>
Durante tutto il processo si presuppone di agire come utente [[root]].
Durante tutto il processo si presuppone di agire come utente [[root]].
<br/>
<br/>
Riga 116: Riga 102:
L'installazione di Samba 4 va effettuata in questo momento perché insieme ai pacchetti stessi di Samba saranno installate anche alcune utility che adopereremo nei paragrafi successivi.
L'installazione di Samba 4 va effettuata in questo momento perché insieme ai pacchetti stessi di Samba saranno installate anche alcune utility che adopereremo nei paragrafi successivi.
<br/>
<br/>
A causa dei bachi irrisolti contenuti nella versione di Samba presente nei repository Debian, verranno presentati due metodi '''''alternativi''''' per l'installazione:
* '''Debian Samba''': installa la versione di Samba dei repository Debian
* '''SERNET Samba''': installa la versione di Samba pacchettizzata dalla società SERNET, che dal 2003 pacchettizza per diverse distribuzioni una versione aggiornata, testata e completa di Samba
Nel resto della guida, ogni volta che le istruzioni differiranno a seconda del pacchetto installato, sarà specificato a quale versione farà riferimento il comando descritto.
<br/>
<br/>
Poichè è stato scelto di utilizzare i pacchetti Samba pacchettizzati da Sernet, è necessario aggiungere il repository al nostro <code>/etc/apt/sources.list</code>
=== Installazione di Debian Samba ===
La versione di Samba4 presente nei repository Debian Wheezy soffre di diversi bachi. Prima di installare questi pacchetti si legga il box '''ATTENZIONE''' presente all'inizio della guida, che riassume i bug ancora presenti e le probabilità di successo dell'installazione. Per questi motivi installeremo la versione presente nei repository Backports: in questi repository, così come da Jessie in avanti, è stato eliminato da Debian il pacchetto ''Samba3'', per cui il pacchetto che fino a Wheezy si chiamava ''Samba4'' è stato rinominato semplicemente ''Samba''.
<pre>
# apt-get install -t wheezy-backports samba samba-client samba-common-bin samba-testsuite cifs-utils winbind
</pre>
Durante l'installazione di Samba vedrete che il Debian Installer provvederà autonomamente a generare e configurare un albero LDAP, utilizzando i parametri di dominio specificati nel file <code>/etc/hostname</code> che abbiamo modificato in precedenza.
 
=== Installazione di SERNET Samba ===
Se scegliete di utilizzare i pacchetti Samba pacchettizzati da Sernet, è necessario aggiungere il repository al nostro <code>/etc/apt/sources.list</code>
<pre>
<pre>
# SerNet Samba 4.1 Packages
# SerNet Samba 4.1 Packages
Riga 132: Riga 130:
# apt-get update
# apt-get update
# apt-get upgrade
# apt-get upgrade
</pre>
Impostiamo un pinning creando un file:
<pre>
<pre>
Quindi installiamo Samba:
# nano /etc/apt/preferences.d/samba-sernet
# apt-get install samba4 samba4-clients samba4-common-bin samba4-testsuite resolvconf cifs-utils winbind4
</pre>
</pre>
Verranno installati anche una serie di pacchetti relativi a Kerberos, poiché Samba4 utilizza di default lo stesso sistema di autenticazione cifrata utilizzato dai server di dominio Windows.
di contenuto:
<br/>
Durante l'installazione di Samba4 vedrete che il Debian Installer provvederà autonomamente a generare e configurare un albero LDAP, utilizzando i parametri di dominio specificati nel file <code>/etc/hostname</code> che abbiamo modificato in precedenza.
<br/><br/>
Verificate l'output dell'installer; ci troverete:
<pre>
<pre>
See /var/lib/samba/private/named.conf for an example configuration include file for BIND
Package: *
and /var/lib/samba/private/named.txt for further documentation required for secure DNS updates
Pin: origin "download.sernet.de"
Setting up sam.ldb rootDSE marking as synchronized
Pin-Priority: 991
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
</pre>
</pre>
segno che dobbiamo fare ancora qualcosa...
Quindi installiamo Samba:
<br/>
Poco più sotto troverete anche un riassunto della configurazione effettuata automaticamente:
<pre>
<pre>
Admin password:        5JLd_,7tvwP;z&)d5<$+
# apt-get install sernet-samba-ad libwbclient0 sernet-samba-client sernet-samba-winbind sernet-samba sernet-samba-libs sernet-samba-libsmbclient0
Server Role:          active directory domain controller
# apt-get install acl attr quota fam libnet-ldap-perl krb5-user
Hostname:              server01
NetBIOS Domain:        WORKGROUP
DNS Domain:            dominio.local
DOMAIN SID:            S-1-5-21-2167877427-1748325126-3135181334
</pre>
</pre>
Come potete vedere, ci sono delle cose da correggere.
 
<br>
Come ultimo, impostiamo la direttiva di avvio corretta nel file di configurazione principale del demone:
Questi errori sono però irrilevanti, quindi dobbiamo informare <code>dpkg</code> e <code>aptitude</code> che l'installazione si è conclusa regolarmente:
<pre>
<pre>
# nano /var/lib/dpkg/status
# nano /etc/default/sernet-samba
</pre>
</pre>
Cerchiamo la riga:
<pre>
<pre>
“Package: samba4″
#SAMBA_START_MODE="none"
SAMBA_START_MODE="ad"
#SAMBA_RESTART_ON_UPDATE="no"
SAMBA_RESTART_ON_UPDATE="yes"
</pre>
</pre>
e sostituiamo ''half-configured'' con 'installed''.
 
=== Durante l'installazione ===
Sia che abbiate scelto di installare la versione di Debian sia che abbiate scelto la versione Sernet, durante l'installazione verranno installati anche una serie di pacchetti relativi a Kerberos, poiché Samba4 utilizza di default lo stesso sistema di autenticazione cifrata utilizzato dai server di dominio Windows.
<br/>
<br/>
Adesso siamo pronti per installare il nostro dominio Active Directory.
Adesso siamo pronti per installare il nostro dominio Active Directory.
Riga 181: Riga 170:
# mv /etc/samba/smb.conf /etc/samba/smb.conf.original
# mv /etc/samba/smb.conf /etc/samba/smb.conf.original
</pre>
</pre>
E' importante '''spostare''' il file e non semplicemente rinominarlo, altrimenti il seguente comando fallirà restituendo un errore.
E' importante '''spostare''' il file e non semplicemente pensare che venga sovrascritto, altrimenti il seguente comando fallirà restituendo un errore incomprensibile.
<br/>
<br/>
Quindi lanciamo il nuovo tool per effettuare il ''provision'' di Samba, cioè la configurazione di Samba come Domain Controller in una nuova foresta di domini Active Directory:
Quindi lanciamo il nuovo tool per effettuare il ''provision'' di Samba, cioè la configurazione di Samba come Domain Controller in una nuova foresta di domini Active Directory.
<br/>
Possiamo scegliere se utilizzare il server DNS interno di Samba o se utilizzare Bind configurato alla bisogna. Sebbene sia leggermente più macchinoso, consiglio di utilizzare l'accoppiata Samba + Bind, che permette più configurazioni personalizzate ed è più semplice da amministrare.
* '''Debian Samba con DNS interno''':
<pre>
# /usr/bin/samba-tool domain provision --realm=dominio.local --domain=DOMINIO --adminpass='mia_password' --server-role=dc --dns-backend=SAMBA_INTERNAL --function-level=2008_R2 --use-xattr=yes --host-ip=10.0.0.254
</pre>
* '''Debian Samba con Bind come DNS''':
<pre>
<pre>
# /usr/share/samba/setup/provision --realm=dominio.local --domain=DOMINIO --adminpass='mia_password' --server-role=dc --dns-backend=BIND9_DLZ --function-level=2008_R2 --use-xattr=yes --host-ip=10.0.0.10
# /usr/bin/samba-tool domain provision --realm=dominio.local --domain=DOMINIO --adminpass='mia_password' --server-role=dc --dns-backend=BIND9_DLZ --function-level=2008_R2 --use-xattr=yes --host-ip=10.0.0.254
</pre>
* '''SERNET Samba con DNS interno''':
<pre>
# /usr/bin/samba-tool domain provision --realm=dominio.local --domain=DOMINIO --adminpass='mia_password' --server-role=dc --dns-backend=SAMBA_INTERNAL --function-level=2008_R2 --use-xattr=yes --host-ip=10.0.0.254
</pre>
* '''SERNET Samba con Bind come DNS''':
<pre>
# /usr/bin/samba-tool domain provision --realm=dominio.local --domain=DOMINIO --adminpass='mia_password' --server-role=dc --dns-backend=BIND9_DLZ --function-level=2008_R2 --use-xattr=yes --host-ip=10.0.0.254
</pre>
</pre>
Confermando con Invio partirà la configurazione di Samba come controller di dominio; il tool di provisioning si incaricherà di configurare tutto quello che serve: Samba, Kerberos, OpenLDAP.
Confermando con Invio partirà la configurazione di Samba come controller di dominio; il tool di provisioning si incaricherà di configurare tutto quello che serve: Samba, Kerberos, OpenLDAP.
<br/>
<br/>
L'opzione <code>--dns-backend=BIND9_DLZ</code> indica a Samba che intendiamo utilizzare come server DNS il demone Bind e non il DNS interno presente in Samba 4.
L'opzione <code>--dns-backend=BIND9_DLZ</code> indica a Samba che intendiamo utilizzare come server DNS il demone Bind e non il DNS interno presente in Samba 4.
<br/>
L'opzione <code>--dns-backend=SAMBA_INTERNAL</code> (alternativa alla precedente) indica a Samba che intendiamo utilizzare come server DNS il DNS interno presente in Samba 4.
<br/>
<br/>
L'opzione <code>--function-level=2008_R2</code> imposta il livello di funzionalità di Active Directory a quello di Windows Server 2008 R2 (Per una descrizione dei livelli di funzionalità si veda ad esempio la [http://technet.microsoft.com/it-it/library/understanding-active-directory-functional-levels(v=ws.10).aspx Technet di Microsoft]).
L'opzione <code>--function-level=2008_R2</code> imposta il livello di funzionalità di Active Directory a quello di Windows Server 2008 R2 (Per una descrizione dei livelli di funzionalità si veda ad esempio la [http://technet.microsoft.com/it-it/library/understanding-active-directory-functional-levels(v=ws.10).aspx Technet di Microsoft]).
Riga 199: Riga 205:
# nano /etc/samba/smb.conf
# nano /etc/samba/smb.conf
</pre>
</pre>
e aggiungere la direttiva:
e aggiungere le direttive:
<pre>
<pre>
server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, smb -s3fs -dns
# Se uso DNS interno
server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, smb
server services = -s3fs +dns
allow dns updates = secure
dns recursive queries = yes
dns forwarders = 8.8.8.8
 
# Se uso DNS Bind
server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, smb
server services = -s3fs -dns
</pre>
</pre>
In mancanza di questa direttiva ogni tentativo di connessione al nostro server terminerebbe con un laconico messaggio di errore:
In mancanza di questa direttiva ogni tentativo di connessione al nostro server terminerebbe con un laconico messaggio di errore:
<pre>
<pre>
Connection to localhost failed (Error NT_STATUS_CONNECTION_REFUSED)
Connection to localhost failed (Error NT_STATUS_CONNECTION_REFUSED)
</pre>
Aggiungiamo una direttiva per correggere un baco nell'avvio di Samba:
<pre>
        dcerpc endpoint servers = +winreg +srvsvc
interfaces = 10.0.0.254
#bind interfaces only = yes
</pre>
</pre>
Possiamo aggiungere anche le direttive:
Possiamo aggiungere anche le direttive:
Riga 211: Riga 232:
# Imposto una shell per gli utenti di dominio
# Imposto una shell per gli utenti di dominio
template shell = /usr/sbin/nologin
template shell = /usr/sbin/nologin
</pre>
<pre>
# Scrivo un file di log dedicato al dominio
log file = /var/log/samba/dominio.log
syslog = 0
log level = 3 passdb:0 auth:0 winbind:0 vfs:0
vfs objects = full_audit
</pre>
</pre>
e
e
Riga 233: Riga 261:


=== Definizione di REALM ===  
=== Definizione di REALM ===  
Per poter effettuare questo tipo di configurazione, dobbiamo conoscere almeno a grandi linee alcuni nuovi concetti come il servizio Kerberos e la definizione di Realm. Quindi prima di addentrarsi nella configurazione del Kerberos, è bene affrontare il concetto di REALM (ovvero reame) Kerberos. In pratica il Realm è un dominio di autenticazione formato da utenti e macchine all'interno del quale uno o più server (detti KDC) sono autoritativi. Questa definizione calza perfettamente anche per un dominio AD (Active Directory), che difatti rappresenta anche un REALM kerberos, in cui i KDC sono rappresentati dai Domain Controller. Esattamente come per un AD, anche in Kerberos il REALM ha lostesso nome di un dominio DNS.
Per poter effettuare questo tipo di configurazione, dobbiamo conoscere almeno a grandi linee alcuni nuovi concetti come il servizio Kerberos e la definizione di Realm. Quindi prima di addentrarsi nella configurazione del Kerberos, è bene affrontare il concetto di REALM (ovvero reame) Kerberos. In pratica il Realm è un dominio di autenticazione formato da utenti e macchine all'interno del quale uno o più server (detti KDC) sono autoritativi. Questa definizione calza perfettamente anche per un dominio AD (Active Directory), che difatti rappresenta anche un REALM kerberos, in cui i KDC sono rappresentati dai Domain Controller. Esattamente come per un AD, anche in Kerberos il REALM ha lo stesso nome di un dominio DNS.
<br/>
<br/>
In pratica un utente/servizio appartiene ad un realm se e soltanto se condivide un segreto (password/chiave) con il server di autenticazione di quel realm. Il nome di un realm è case sensitive, cioè fa differenza tra minuscole e maiuscole; ma normalmente i realm vengono sempre specificati in maiuscolo.  
In pratica un utente/servizio appartiene ad un realm se e soltanto se condivide un segreto (password/chiave) con il server di autenticazione di quel realm. Il nome di un realm è case sensitive, cioè fa differenza tra minuscole e maiuscole; ma normalmente i realm vengono sempre specificati in maiuscolo.  
Riga 240: Riga 268:
semplificare la configurazione dei client Kerberos.
semplificare la configurazione dei client Kerberos.


== Riavvio e test ==
== OPZIONALE - Configurazione del DNS Server BIND ==
Infine riavviamo Samba4 con:
Samba4, così come Microsoft Active Directory, dipende fortemente da un servizio DNS correttamente configurato e funzionante all'interno della rete LAN.
<br/>
Se durante la precedente installazione di Samba abbiamo scelto di affidare la gestione dei DNS a un demone diverso da quello di default, questo è il momento di configurare Bind.
<br/>
Il DNS Server Bind lo possiamo installare e configurare utilizzando la guida seguente: [[Un server DNS e DHCP su Debian]] e creando le eventuali ulteriori zone che ci interessano ('''ATTENZIONE''': non va creata la zona relativa al dominio Samba4!), oppure, se non abbiamo altre necessità se non gestire i DNS del nostro dominio, possiamo semplicemente installarlo e tenere la configurazione di default:
<pre>
<pre>
/etc/init.d/samba4 restart
# apt-get install bind9 dnsutils
</pre>
</pre>
e testiamo la configurazione:
Abbiamo Bind funzionante, ma la sua configurazione va modificata secondo le indicazioni del file <code>/var/lib/samba/private/named.txt</code>. Quindi apriamo il file di configurazione:
<pre>
<pre>
# smbclient -L localhost -U%
# nano /etc/bind/named.conf.local
</pre>
</pre>
Il risultato dovrebbe essere:
e aggiungiamo alla fine del file la seguente sezione:
<pre>
<pre>
Domain=[DOMINIO] OS=[Unix] Server=[Samba 4.0.0beta2]
include "/var/lib/samba/private/named.conf";
    Sharename      Type      Comment
    ---------      ----      -------
    netlogon        Disk
    sysvol          Disk
    IPC$            IPC        IPC Service
</pre>
</pre>
Occorre modificare il file <code>/var/lib/samba/private/named.conf</code> al fine di selezionare la libreria corretta per la versione di Bind in uso. Ad esempio per la versione 9.9.x il file andrà configurato come segue:
<pre>
<pre>
# smbclient //localhost/netlogon -UAdministrator%"your_password" -c 'ls'
nano /var/lib/samba/private/named.conf
</pre>
</pre>
Il risultato dovrebbe essere:
<pre>
<pre>
Domain=[DOMINIO] OS=[Unix] Server=[Samba 4.0.5] 
# For BIND 9.8.x
.                                   D        0  Fri May 17 21:40:08 2013 
# database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9.so";
..                                  D        0  Fri May 17 21:42:36 2013
</pre>


== Configurazione del DNS Server BIND ==
# For BIND 9.9.x
Samba4, così come Microsoft Active Directory, dipende fortemente daun servizio DNS correttamente configurato e funzionante all'interno della rete LAN.
database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_9.so";
<br/>
Il DNS Server Bind lo abbiamo già configurato, utilizzando la guida indicata nei prerequisiti, ma la sua configurazione va modificata secondo le indicazioni del file <code>/var/lib/samba/private/named.txt</code>. Quindi apriamo il file di configurazione:
<pre>
# nano /etc/bind/named.conf.local
</pre>
e aggiungiamo alla fine del file la seguente sezione:
<pre>
include "/var/lib/samba/private/named.conf";
</pre>
</pre>
Poi aggiungiamo le seguenti righe al file <code>/etc/bind/named.conf.options</code> appena sotto alla definizione dei forwarders:
Poi aggiungiamo le seguenti righe al file <code>/etc/bind/named.conf.options</code> appena sotto alla definizione dei forwarders:
Riga 287: Riga 304:
         tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
         tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
</pre>
</pre>
Quindi impostiamo i permessi corretti per la chiave di autenticazione Samba:
e, sempre nello stesso file, modifichiamo la voce:
<pre>
#auth-nxdomain no
auth-nxdomain yes
</pre>
e la sezione
<pre>
<pre>
# chgrp bind /var/lib/samba/private/dns.keytab
        # allow-query { 127.0.0.1; 10.0.0.0/24; } ;
# chmod g+r /var/lib/samba/private/dns.keytab
        # allow-transfer { none; } ;
# chmod 664 /etc/bind/rndc.key
        # allow-recursion { 127.0.0.1; 10.0.0.0/24; } ;
 
        allow-query { 127.0.0.1; 10.0.0.0/24; } ;
        allow-transfer { none; } ;
        notify no;
        empty-zones-enable no;
        allow-recursion { 127.0.0.1; 10.0.0.0/24; } ;
</pre>
</pre>
Occorre poi modificare la zona che definisce la nostra rete interna. Se abbiamo seguito la guida indicata in prececenza, il file della nostra zona locale sarà:
Se, come quasi sempre, vogliamo che il nostro server DNS possa risolvere anche gli indirizzi esterni al dominio, dobbiamo aggiungere anche una sezione per i server DNS di inoltro:
<pre>
<pre>
# nano /etc/bind/db.dominio
forwarders {
208.67.222.222;
208.67.220.220;
};
</pre>
</pre>
al quale va aggiunta tutta la sezione dedicata a Samba4/Active Directory:
Quindi impostiamo i permessi corretti per la chiave di autenticazione Samba:
<pre>
<pre>
; Record per Samba4
# chown -R root:bind /var/lib/samba/private/
gc._msdcs              IN CNAME  server01   
# chmod -R 774 /var/lib/samba/private/
 
# chmod -R 700 /var/lib/samba/private/smbd.tmp/msg
; global catalog servers
_gc._tcp                IN SRV 0 100 3268      server01
_gc._tcp.Default-First-Site-Name._sites IN SRV 0 100 3268      server01
_ldap._tcp.gc._msdcs    IN SRV 0 100 389        server01
_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs    IN SRV 0 100 389 server01
 
; ldap servers
ldap._tcp              IN SRV 0 100 389        server01
_ldap._tcp.dc._msdcs    IN SRV 0 100 389        server01
_ldap._tcp.pdc._msdcs  IN SRV 0 100 389        server01
_ldap._tcp.Default-First-Site-Name._sites              IN SRV 0 100 389 server01
_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs    IN SRV 0 100 389 server01
 
; krb5 servers
_kerberos._tcp          IN SRV 0 100 88        server01
_kerberos._tcp.dc._msdcs        IN SRV 0 100 88 server01
_kerberos._tcp.Default-First-Site-Name._sites  IN SRV 0 100 88 server01
_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs IN SRV 0 100 88 server01
_kerberos._udp          IN SRV 0 100 88        server01
; MIT kpasswd likes to lookup this name on password change
_kerberos-master._tcp          IN SRV 0 100 88        server01
kerberos-master._udp          IN SRV 0 100 88        server01
 
; kpasswd
_kpasswd._tcp          IN SRV 0 100 464        server01
_kpasswd._udp          IN SRV 0 100 464        server01
 
; heimdal 'find realm for host' hack
_kerberos              IN TXT  DOMINIO.LOCAL
 
samba           IN A    10.0.0.10
</pre>
</pre>
Di default, Bind registra i suoi log tramite Syslog, e quindi nel file <code>/var/log/syslog</code>. Potrebbe però essere conveniente spostare i log del nostro DNS in un file separato.
Di default, Bind registra i suoi log tramite Syslog, e quindi nel file <code>/var/log/syslog</code>. Potrebbe però essere conveniente spostare i log del nostro DNS in un file separato.
Riga 358: Riga 358:
<pre>
<pre>
# touch /var/log/bind.log
# touch /var/log/bind.log
# chown named:adm /var/log/bind.log
# chown bind:adm /var/log/bind.log
</pre>
</pre>
Per consentire all’accoppiata Samba/Kerberos di effettuare gli aggiornamenti automatici del nostro DNS, occorre aggiungere le seguenti direttive al file di default:
Per consentire all’accoppiata Samba/Kerberos di effettuare gli aggiornamenti automatici del nostro DNS, occorre aggiungere le seguenti direttive al file di default:
Riga 376: Riga 376:
Per effettuare una verifica del funzionamento dell’update dinamico possiamo utilizzare il comando:
Per effettuare una verifica del funzionamento dell’update dinamico possiamo utilizzare il comando:
<pre>
<pre>
# samba_dnsupdate –verbose
# samba_dnsupdate --verbose
</pre>
</pre>
=== SELinux ===
=== SELinux ===
Riga 401: Riga 401:
<pre>
<pre>
/etc/init.d/apparmor reload
/etc/init.d/apparmor reload
</pre>
== Riavvio  ==
Infine riavviamo Samba4 con:
* '''Debian Samba''':
<pre>
/etc/init.d/samba restart
</pre>
* '''SERNET Samba''':
<pre>
# /etc/init.d/sernet-samba-ad restart
</pre>
</pre>


Riga 413: Riga 424:


# host -t A server01.dominio.local.
# host -t A server01.dominio.local.
server01.dominio.local has address 10.0.0.10
server01.dominio.local has address 10.0.0.254
</pre>
</pre>


== Kerberos ==
== Kerberos ==
L'installazione di Kerberos è di per se semplice:
L'installazione di un client Kerberos è di per se semplice:
<pre>
<pre>
# aptitude install krb5-user
# aptitude install krb5-user
</pre>
</pre>
Quando ci viene richiesto, inseriamo il nostro REALM e il nome HOST. Quindi apriamo il file di configurazione:
Quando ci viene richiesto, inseriamo il nostro REALM e il nome HOST.
<br/>
Quindi backuppiamo il file di configurazione:
<pre>
# cp /etc/krb5.conf /etc/krb5.conf.original
</pre>
e utilizziamo quello già creato automaticamente da Samba:
<pre>
# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
</pre>
modificandolo così:
<pre>
<pre>
# nano /etc/krb5.conf
# nano /etc/krb5.conf
</pre>
</pre>
e modifichiamolo così:
<pre>
<pre>
[libdefaults]
[libdefaults]
Riga 431: Riga 451:
         dns_lookup_realm = true
         dns_lookup_realm = true
         dns_lookup_kdc = true
         dns_lookup_kdc = true
# The following krb5.conf variables are only for MIT Kerberos.
        krb4_config = /etc/krb.conf
        krb4_realms = /etc/krb.realms
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true
# The following libdefaults parameters are only for Heimdal Kerberos.
        v4_instance_resolve = false
        v4_name_convert = {
                host = {
                        rcmd = host
                        ftp = ftp
                }
                plain = {
                        something = something-else
                }
        }
        fcc-mit-ticketflags = true
[realms]
        DOMINIO.LOCAL = {
                kdc = server01.dominio.local:88
                kdc = server01.dominio.local:88
                kdc = server01.dominio.local:88
                admin_server = server01.dominio.local
                default_domain = dominio.local
        }
[domain_realm]
        .dominio.local = DOMINIO.LOCAL
        dominio.local = DOMINIO.LOCAL
[login]
      krb4_convert = true
        krb4_get_tickets = false
</pre>
</pre>
Testiamo il funzionamento di Kerberos:
Testiamo il funzionamento di Kerberos:
Riga 479: Riga 461:
</pre>
</pre>
possiamo vedere il ticket Kerberos che ci è stato assegnato.
possiamo vedere il ticket Kerberos che ci è stato assegnato.
== Riavvio  ==
Infine riavviamo Samba4 con:
* '''Debian Samba''':
<pre>
/etc/init.d/samba restart
</pre>
* '''SERNET Samba''':
<pre>
# /etc/init.d/sernet-samba-ad restart
</pre>
== Test di configurazione ==
Testiamo la configurazione:
<pre>
# smbclient --version
# smbclient -L localhost -U%
</pre>
Il risultato dovrebbe essere:
<pre>
Domain=[DOMINIO] OS=[Unix] Server=[Samba 4.0.0beta2]
    Sharename      Type      Comment
    ---------      ----      -------
    netlogon        Disk
    sysvol          Disk
    IPC$            IPC        IPC Service
</pre>
<pre>
# samba-tool ntacl sysvolreset
# samba-tool ntacl sysvolcheck
# smbclient //localhost/netlogon -UAdministrator%"your_password" -c 'ls'
</pre>
Il risultato dovrebbe essere:
<pre>
Domain=[DOMINIO] OS=[Unix] Server=[Samba 4.0.5] 
.                                  D        0  Fri May 17 21:40:08 2013 
..                                  D        0  Fri May 17 21:42:36 2013
</pre>


== Samba 4 e xattr ==
== Samba 4 e xattr ==
Riga 508: Riga 528:
</pre>
</pre>


== Aggiungere utenti a Samba4 Active Directory ==
== Amministrazione di Samba ==
Per aggiungere un utente di dominio è sufficiente il comando:
 
=== Strumenti di amministrazione di Windows ===
Per amministrare Samba e i suoi servizi possiamo utilizzare gli strumenti di amministrazione che Microsoft ci mette a disposizione.
<br/>
Scarichiamo la versione adatta al nostro sistema operativo client:
* [http://www.microsoft.com/it-it/download/details.aspx?id=21090 Windows Vista]
* [http://www.microsoft.com/it-it/download/details.aspx?id=7887 Windows 7]
* [http://www.microsoft.com/it-it/download/details.aspx?id=28972 Windows 8]
* [http://www.microsoft.com/it-it/download/details.aspx?id=39296 Windows 8.1]
Dopo l'installazione ricordiamoci di abilitare la funzionalità da: ''Pannello di Controllo - Installazione Programmi - Abilità funzionalità''.
<br/>
D'ora in avanti potremo Samba come un normalissimo Controller di Dominio Windows, dai tool che troveremo in "Start - Programmi - Strumenti di amministrazione".
 
=== Strumenti di amministrazione da shell ===
{| class="wikitable" style="width:99%"
|-
| align="center" colspan="5" style="background-color:#EFEFEF" |
 
===Gestione DNS===
|-
| width="30%" | Aggiungere un record || width="70%" | # samba-tool dns add server zone name A|AAAA|PTR|CNAME|NS|MX|SRV|TXT data ||
|-
| width="30%" | Cancellare un record || width="70%" | # samba-tool dns delete server zone name A|AAAA|PTR|CNAME|NS|MX|SRV|TXT data ||
|-
| width="30%" | Interrogare un record || width="70%" | # samba-tool dns query server zone name A|AAAA|PTR|CNAME|NS|MX|SRV|TXT|ALL [options] data ||
|-
| width="30%" | Chiedere informazioni sul server || width="70%" | # samba-tool dns serverinfo server ||
|-
| width="30%" | Aggiornare un record || width="70%" | # samba-tool dns update server zone name A|AAAA|PTR|CNAME|NS|MX|SRV|TXT olddata newdata ||
|-
| width="30%" | Creare una zona || width="70%" | # samba-tool dns zonecreate server zone ||
|-
| width="30%" | Eliminare una zona || width="70%" | # samba-tool dns zonedelete server zone ||
|-
| width="30%" | Informazioni su una zona || width="70%" | # samba-tool dns zoneinfo server zone ||
|-
| width="30%" | Elencare le zone || width="70%" | # samba-tool dns zonelist server ||
|-
| align="center" colspan="5" style="background-color:#EFEFEF" |
 
===Gestione utenti===
|-
| width="30%" | Aggiungere un utente || width="70%" | # samba-tool user create USERNAME ||
|-
| width="30%" | Cancellare un utente || width="70%" | # samba-tool user delete username ||
|-
| width="30%" | Disabilitare un utente || width="70%" | # samba-tool user disable username ||
|-
| width="30%" | Abilitare un utente || width="70%" | # samba-tool user enable username ||
|-
| width="30%" | Elencare gli utenti || width="70%" | # samba-tool user list ||
|-
| width="30%" | Modificare la password di un utente || width="70%" | # samba-tool user setpassword username ||
|-
| width="30%" | Impostare la scadenza di un utente || width="70%" | # samba-tool user setexpiry username ||
|-
| align="center" colspan="5" style="background-color:#EFEFEF" |
 
===Gestione Gruppi===
|-
| width="30%" | Aggiungere un gruppo || width="70%" | # samba-tool group add groupname ||
|-
| width="30%" | Aggiungere utenti a un gruppo || width="70%" | # samba-tool group addmembers groupname members ||
|-
| width="30%" | Cancellare un gruppo || width="70%" | # samba-tool group delete groupname ||
|-
| width="30%" | Elencare i gruppi || width="70%" | # samba-tool group list ||
|-
| width="30%" | Elencare i membri di un gruppo || width="70%" | # samba-tool group listmembers groupname ||
|-
| width="30%" | Cancellare utenti da un gruppo || width="70%" | # samba-tool group removemembers groupname members ||
|-
| align="center" colspan="5" style="background-color:#EFEFEF" |
 
===Gestione Password===
|-
| width="30%" | Abbassare la complessità delle password || width="70%" | # samba-tool domain passwordsettings set --complexity=off ||
|-
| width="30%" | Modificare la lunghezza minima consentita per le password || width="70%" | # samba-tool domain passwordsettings set --min-pwd-length=1 ||
|-
|}
<br/>
Per un elenco completo dei comandi disponibili si consultino le [http://www.samba.org/samba/docs/man/manpages-3/samba-tool.8.html Man pages di Samba4].
<br/><br/>
 
=== ATTENZIONE ===
* Samba4 è case sensitive: l'utente amministratore è ''administrator'', con la "A" minuscola
* Il dominio va sempre specificato per esteso: DOMINIO.LOCAL
 
== Creare delle condivisioni di rete ==
Per creare delle condivisioni di rete basta semplicemente aggiungere al file <code>/etc/samba/smb.conf</code> delle sezioni come la seguente:
<pre>
<pre>
# samba-tool user add USERNAME
# mkdir /dati/condivisione
# chmod 770 /dati/condivisione
</pre>
</pre>
Per verificare la corretta creazione:
<pre>
<pre>
# wbinfo --name-to-sid USERNAME
[condivisione]
    comment = Condivisione cani e porci
    path = /dati/condivisione
    read only = No
    directory mask = 0770
    create mask = 0770
</pre>
</pre>
I permessi potranno poi essere gestiti dalle proprietà della condivisione da Windows, attraverso lo Snap-In "Gestione Computer":
* Gestione Computer - Connetti a un altro computer - <Immettere il nome del Server> - Strumenti di sistema - Condivisioni


== Creare delle condivisioni di rete ==
== Test e connessione al dominio ==
Ancora da scrivere. Mi sono fermato perchè c'è un baco in Winbind che non permette di andare avanti.
Il nostro server è ora pronto per essere utilizzato. Per testarne le funzionalità è possibile procedere per gradi, in modo da isolare quelli che sono i problemi di configurazione da quelli che sono i problemi di rete o dei client Windows.<br/>
<br/>Il bug è già stato segnalato.
A tal fine il primo accesso può essere fatto dal server stesso con il comando:
<pre>
# smbclient -L localhost -U Administrator
</pre>
Dovrebbe essere richiesta la password impostata precedentemente per l'utente Administrator e, di seguito, dovrebbero venire elencate le condivisioni samba impostate sul server.
<br/><br/>
La procedura di connessione dei client al dominio varia a seconda del sistema operativo utilizzato sulle macchine client:
<br/>
<br/>
mkdir /data/global<br/>
*'''Windows 95/98/ME'''
chmod 777 /data/global
# Non più supportato
*'''Windows NT'''
# Non più supportato
*'''Windows 2000'''
# Pannello di Controllo -> Sistema -> Identificazione Rete (oppure, sul Desktop, cliccare col tasto destro del mouse sull'icona Risorse del Computer, selezionare Proprietà, cliccare sulla tab Identificazione Rete e sul tasto Proprietà).
*'''Windows XP'''
# Come su Windows NT/2000: Tasto destro su Risorse del Computer, selezionare Proprietà, Nome del Computer e tasto Modifica oppure cliccare su Identificazione di Rete ed eseguire il Wizard fornendo le credenziali di Administrator.
*'''Windows Vista'''
# Non ancora testato.
*'''Windows 7'''
# Come su Windows XP: Tasto destro su Risorse del Computer, selezionare Proprietà, Nome del Computer e tasto Modifica oppure cliccare su Identificazione di Rete ed eseguire il Wizard fornendo le credenziali di Administrator.
 
== Ulteriori configurazioni ==
Arrivati a questo possiamo:
* Aggiungere una scansione antivirus alle nostre condivisioni Samba: [[ClamAV: scansione antivirus delle condivisioni Samba]]
* Creare un cestino di rete per evitare di cancellare per sbaglio file importanti: [[Samba: creare un cestino di rete per le condivisioni]]
 
== Configurare un Groupware ==
Se non ci basta avere ottenuto un dominio Actove Directory con strumenti opensource e vogliamo di più, a questo punto possiamo configurare un intero ambiente Groupware che sostituisca Microsoft Exchange.
<br/>
<br/>
/etc/samba/smb.conf:<br/>
E' sufficiente seguire questa guida: [[Installare un ambiente Groupware integrato in Samba4]]
[condivisione]<br/>
comment = Condivisione cani e porci<br/>
path = /data/condivisione<br/>
read only = No<br/>


== Bibliografia ==
== Bibliografia ==
Riga 539: Riga 676:
* [http://linux-on-a-server.com/samba-4-active-directory-my-first-successfully-test/ Linux on a Server]
* [http://linux-on-a-server.com/samba-4-active-directory-my-first-successfully-test/ Linux on a Server]


{{Autori|Autore=[[Utente:Ferdybassi|Ferdybassi]]}}
{{Autori
|Autore=[[Utente:Ferdybassi|Ferdybassi]]
|Estesa_da =
|Verificata_da =
: [[Utente:Turcs|Turcs]] 14:54, 02 feb 2016 (CEST)
|Numero_revisori = 1
}}
 
[[Categoria:Reti con Windows]][[Categoria:Samba]]
3 581

contributi