Configurazione di Samba 4 come Domain Controller Active Directory

Questi sono appunti preliminari, scritti purtroppo senza avere chiaro come funziona ogni singolo pezzo. Il punto di partenza e` l'howto dal sito di Samba, qui: https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO

Prerequisiti

Installazione di Samba in Debian 7

Ho usato Samba 4 dai backport di Debian Wheezy in questa installazione. Dopo aver configurato il repo da backports.debian.org, occorre installare Samba:

aptitude update
aptitude -t wheezy-backports install samba smbclient
aptitude install acl

Ragionevolmente se usate Debian Jessie (spero per voi senza systemd) allora non serve usare i backports.

Questa installazione, allo stato attuale delle cose, fornisce Samba 4.1.17, che pero` ha qualche limite. In alternativa, si puo` installare Samba da Sernet.

Installazione di Samba in Debian 8 (senza systemd)

Questa installazione e` stata fatta usando i pacchetti di samba 4.5.2 da van-belle.nl, ma probabilmente e` corretta anche con samba ufficiale di Debian 8.

aptitude install samba winbind smbclient
rm /etc/samba/smb.conf
/etc/init.d/samba stop

A questo punto, eseguire il provisioning del dominio come indicato piu` sotto, poi avviare /etc/init.d/samba-ad-dc e winbind (non so serva davvero winbind)

Installazione di Samba da Sernet

Il vantaggio di usare Samba 4.2.x e` che si puo` fare un file server facilmente sul DC, cosa che e` sconsigliatissima prima della 4.2.

Per poter vedere correttamente gli utenti di Samba dal sistema (sulla macchina stessa del DC AD), usando samba 4.2 o superiore, e` sufficiente verificare che winbindd stia girando (ps ax) e poi modificare il file /etc/nsswitch.conf come segue:

passwd:         compat winbind
group:          compat winbind

Provisioning del dominio

Prima di partire, occorre ricordare che il dominio AD funziona con il DNS, ergo e` esigente e invadente al riguardo. Occorre controllare che l'hostname fully qualified (con anche il dominio) del server dove stiamo installando Samba sia congruente con quello che sara` il nome del dominio AD, e sia risolvibile correttamente sia dal server stesso che dai client che poi aggiungeremo, sia a dritto che a rovescio. Qui le best practice sono tante e non tutte concordano, ma il senso importante e` che il nome del dominio AD NON SI CAMBIA MAI PIU` dopo averlo impostato. Molti suggeriscono di usare un subdomain di un nome di dominio ufficiale e registrato (tipo ad esempio dominiosamba.pippo.it) ma io nell'unica prova che ho fatto ho preferito usare un dominio non registrato pubblicamente, tipo "nomeazienda.locale". Badate bene di NON usare ".local" che e` stato "rubato" da Avahi (Bonjour) e quindi ci sarebbero problemi nella risoluzione dei nomi. Se si prevede di avere una "foresta" (come la chiama MS) di domini correlati, allora occorre considerare bene la scelta dei nomi, ma questo va oltre lo scopo attuale del sottoscritto, che e` di avere un dominio AD e basta.

Essendo una nuova installazione, partiamo da zero.

Se tutto ha funzionato senza errori, si puo` riavviare Samba. (su Debian e` samba-ad-dc e NON samba)

Il tool di provisioning avra` creato una serie di cose:

Configurazione di NTP

Ntp deve essere installato sul DC (e l'abbiamo gia` detto). Pero` deve anche essere configurato. Occorre che NTPD legga un socket messo a disposizione da Samba (per la quale cosa faremo apposita configurazione), che supporti ntptd_signd (Quello di Debian 7 e` a posto), e ovviamente che sia accessibile dai client del dominio sulla LAN.

Per ottenre questo risultato, dobbiamo:

Test

I test minimali li ho presi direttamente dall' HOWTO.

Prima di tutto il test con smbclient, che si fa cosi`:

smbclient -L localhost -U%

L'output e` tipo questo:

Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.x.y]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk
        sysvol          Disk
        IPC$            IPC       IPC Service (Samba 4.x.y)
Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.x.y]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

Poi l'accesso a uno share:

smbclient //localhost/netlogon -UAdministrator -c 'ls'

L'output e` tipo questo:

Enter Administrator's password: passw0rd
Domain=[SAMDOM] OS=[Unix] Server=[Samba 4.x.y]
 .                                   D        0  Sat Jul  5 08:40:00 2014
 ..                                  D        0  Sat Jul  5 08:40:00 2014

               49386 blocks of size 524288. 42093 blocks available

Passo successivo il test del DNS. Queste query devono dare tutte risposte sensate e mai un not found.

host -t SRV _ldap._tcp.<dominio.tld>.
host -t SRV _kerberos._udp.<dominio.tld>.
host -t A <hostname FQDN del domain controller>

Nell' HOWTO si parla anche di un test con Kerberos, senza pero` dire nulla di piu`. A quanto ho capito io non e` necessario installare il client Kerberos sul server AD, se non per il test. Magari ho capito male. In ogni caso, la procedura per installare il client Kerberos e`:

aptitude -t wheezy-backports install heimdal-clients
cd /etc/
mv krb5.conf krb5.conf.originale
ln -s /var/lib/samba/private/krb5.conf  /etc/krb5.conf

La procedura di test per Kerberos richiede due comandi, kinit e klist:

kinit administrator@DOMAIN.LOCALE

Notare che il dominio deve essere in maiuscolo! Viene chiesta la password di administrator.

klist

Viene mostrato un output tipo questo:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SAMDOM.EXAMPLE.COM

Valid starting     Expires            Service principal
07/05/14 23:20:17  07/06/14 09:20:17  krbtgt/SAMDOM.EXAMPLE.COM@SAMDOM.EXAMPLE.COM
        renew until 07/06/14 23:20:15

Test dell'integrazione con il sistema (solo per samba 4.2.x o superiore)