Differences between revisions 5 and 6
Revision 5 as of 2015-08-25 08:34:30
Size: 8410
Editor: Kurgan
Comment:
Revision 6 as of 2015-11-05 16:38:50
Size: 8424
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 29: Line 29:
=== Installazione di Samba da Sernet === === Installazione di Samba da Sernet (preferibile) ===

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

  • Samba richiede l'uso delle ACL Posix e degli attributi estesi sul file system. Occorre quindi usare ext4 (che li supporta di default) oppure abilitarli sul file system che volete usare.
  • Non ci deve essere un DNS server sulla macchina che fa da AD, perche` lo fa Samba (o almeno e` cosi` di default)
  • Usare NTP perche` la sincronizzazione dell'ora e` importante (anche nei member server. Sui client windows si arrangia a chiedere NTP al DC)

Installazione di Samba in Debian

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 da Sernet (preferibile)

  • Vai su https://portal.enterprisesamba.com/ e segui le istruzioni per installare samba piu` moderno (al momento 4.2.x)

  • Installa il pacchetto sernet-samba-ad che si porta dietro le dipendenze richieste

  • Modifica il file /etc/default/sernet-samba per impostare SAMBA_START_MODE="ad"

  • Ricorda che gli script di init si chiamano sernet-samba-qualcosa, e che quello che ti interessa usare e` /etc/init.d/sernet-samba-ad

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

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:

  • Installare NTP dal pacchetto Debian
  • Verificare i permessi della directory /var/lib/samba/ntp_signd, la quale deve poter essere letta dal server NTP, che gira con user e gruppo "ntp". Modifichiamo i permessi come segue:

    chgrp ntp /var/lib/samba/ntp_signd
    chmod 750 /var/lib/samba/ntp_signd
  • Modificare /etc/ntp.conf per leggere questo socket, aggiungendo solo questa riga:

    ntpsigndsocket  /usr/local/samba/var/lib/ntp_signd/
  • Riavviare ntp

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.

  • Fermare samba
  • Cancellare o rinominare /etc/smb.conf
  • Effettuare il provisioning del dominio con il comando samba-tool
    samba-tool domain provision --use-rfc2307 --interactive
  • Rispondere alle domande (e ricordarsi la password impostata per administrator). Attenzione alla policy di default per la password: almeno 8 caratteri con almeno un simbolo o un numero e una maiuscola e una minuscola se ricordo bene.

Se tutto ha funzionato senza errori, si puo` riavviare Samba.

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

  • un file /etc/smb.conf (guardateci dentro)
  • due share di sistema necessari (indicati in smb.conf), che come potete vedere hanno gia` impostati attributi estesi, ACL posix, e appartengono a un gruppo che non esiste nel sistema. Questo e` normale per Samba 4 in modo AD che a differenza di samba 3 non usa utenti e gruppi locali.
  • un database LDAP dentro al suo personale server LDAP (io odio fortissimamente LDAP, ma qui e` necessario)
  • Tre utenti in Samba: administrator, krbtgt e nobody.
  • Un server DNS locale (integrato in Samba) che risolve i nomi buffi necessari per il funzionamento del dominio AD. Vedremo poi come usarlo.

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)

  • Verificare se Winbind legge correttamente i dati da Samba (devi vedere i gruppi e gli utenti di Samba come output)
    wbinfo -u
    wbinfo -g
  • Verificare se NSS vede utenti e gruppi di Samba
    id administrator
    getfacl /var/lib/samba/sysvol

Samba4/ConfigAD (last edited 2020-06-25 17:04:41 by Kurgan)