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 9 (senza systemd)

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 (https://downloads.van-belle.nl/samba4/) ma probabilmente l'elenco dei pacchetti e` lo stesso di samba ufficiale di Debian 8.

La procedura che uso e` parecchio manuale: in pratica scarico dal sito il tgz con dentro tutti i pacchetti, lo piazzo dentro a una directory e poi creo una config di apt che punta a quella directory come se fosse un repository personalizzato. Ovviamente in questo modo non si hannno aggiornamenti automatici, ma visto che sono pacchetti non ufficiali tutto sommato credo che sia meglio avere un controllo molto stretto su cosa si aggiorna, quindi e` perfetto cosi`.

Installazione di Samba da Sernet (deprecato visto che sono passati a pagamento)

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. (Se usate Sernet su Debian il comando e` /etc/init.d/samba-ad-dc start; Se usate Samba di van-belle.nl il comando e` /etc/init.d/samba-ad-dc start)

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

Reimpostare il DNS

Samba vuole risolvere i suoi nomi interni per funzionare, ergo se il server dove e` installato samba usa come DNS un altro DNS che non sia se` stesso, o che non sia in qualche modo configurato per richiedere a Samba i nomi giusti, allora Samba quando si avvia dara` errori nel log (e non so poi se possa funzionare bene).

Il bello di Samba in versione AD e` che e` semplice (sarcasmo).

Quindi, la cosa piu` facile da fare e` impostare in /etc/resolv.conf il dns per essere localhost (127.0.0.1) prima di avviare Samba.

Avviare Samba per la prima volta

Avviamo Samba per la prima volta e verifichiamo se ci sono errori nel syslog.

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:

* Per verificare se un client legge NTP, eseguire un CMD come amministratore e usare il comando

Configurare nnswitch

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

(occorre che le librerie libnss-winbind libpam-winbind siano installate)

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 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)

Samba4/ConfigAD-old (last edited 2019-10-13 15:30:08 by Kurgan)