Configurazione di Samba 4 come Domain Controller Active Directory

Configurazione di Samba 4 su Debian 12 (Devuan Daedalus) Attenzione: i vari comandi esatti vanno verificati, specie se usate debian e systemd

Questa versione di Samba (4.17.12) è necessaria per funzionare correttamente con windows 11 22H2.

Prerequisiti

Installazione di Samba

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 (per esempio, "server01.dominio.internal"), 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 la cosa 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.example.com) ma io preferisco usare un dominio non registrato pubblicamente, tipo "nomeazienda.internal". 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 con il provisioning di un dominio "vergine". Prima di farlo, mi assicuro di non avere configurazioni pregresse o di default che non mi siano gradite.

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

Reimpostare il resolver 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 (attenzione: questo è sarcasmo).

Quindi, la cosa piu` facile da fare e` impostare sul nostro domain controller in /etc/resolv.conf il dns per essere localhost (127.0.0.1) oppure l'ip della nostra interfaccia alla quale abbiamo bindato Samba

# file /etc/resolv.conf
search <il mio dominio>.locale
nameserver <il mio ip> (oppure 127.0.0.1)

Di default il DNS interno di Samba non conterrà una zona reverse per gli ip della mia lan. Questo non è necessariamente un problema, se ne può fare a meno e comunque se si usa una integrazione con Dnsmasq la zona reverse può essere gestita da Dnsmasq stesso, sia staticamente che tramite le assegnazioni del DHCP. Attenzione, però : la reverse zone per la nostra LAN, se locale su Samba, non risolverà nulla che non sia dentro di essa stessa. In altri termini, non credo proprio che Samba, se un lookup locale fallisce, passi la palla a Dnsmasq. Del comportamento opposto non sono sicuro, invece. Devo indagare.

Configurazione di Kerberos

Samba usa kerberos internamente per autenticare utenti, macchine, ecc. (Sono ignorante per cui non so esattamente come, quando, e perché. Tuttavia, è opportuno che kerberos funzioni localmente, quindi provvediamo a copiare (non symlinkare, ma copiare!) la configurazione autogenerata da Samba durante il provisioning dentro a /etc, come segue)

cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

Configurazione di NTP

Attenzione: il pacchetto sntp in Debian 12 non funziona con Samba. Per debian 12 usate Chrony (vedi subito dopo)

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, e ovviamente che sia accessibile dai client del dominio sulla LAN.

Per ottenre questo risultato, dobbiamo:

Configurare Chrony

In Debian 12 sntp non funziona con Samba. Possiamo usare Chrony al posto di sntp, in questo modo:

Configurare nsswitch

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: (potrebbe essere che troviate "compat" al posto di "files", in quel caso mettete "compat winbind")

passwd:         files winbind
group:          files winbind

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

Avviare Samba

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>

Test di Kerberos:

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

kinit administrator@DOMAIN.LOCALE

Notare che il dominio deve essere in maiuscolo (e credo possa essere omesso, dovrebbe risolverlo da solo) 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

Samba4/ConfigAD (last edited 2024-08-15 14:12:11 by Kurgan)