Samba e Active Directory (1 di 3): diventare parte di un Dominio

samba

In questa serie di tre articoli verrà affrontata l’integrazione tra Samba ed Active Directory: Come aggiungere un sistema Linux ad un dominio Active Directory configurando opportunamente Samba, come effettuare interrogazioni relative ai dati del dominio attraverso i tool messi a disposizione dal pacchetto ed infine come configurare le librerie PAM del sistema affinché le autenticazioni per l’accesso vengano effettuate attraverso il dominio.
Nella prima parte oltre ad un’introduzione su Active Directory verrà trattata la configurazione di SAMBA per l’integrazione con un dominio.

Cos’è Active Directory

Active Directory di Microsoft Windows è ormai l’insieme di servizi standard per i sistemi che accentrano i dati relativi alle risorse di un dominio, siano queste utenti, computer o periferiche, tutti fanno capo al direttorio centralizzato che è disponibile nel sistema operativo Microsoft Windows dalla versione 2000 in poi.
Molti sono i servizi che entrano in gioco in un dominio Active Directory ad esempio le informazioni relative alle risorse sono registrate in un direttorio LDAP opportunamente personalizzato da Microsoft, la risoluzione dei nomi è affidata al servizio DNS interno ai server Active Directory.
La componente base di Active Directory è il protocollo Kerberos, che permette di autenticarsi in maniera cifrata.
Una volta che la propria identità viene riconosciuta, è quindi possibile accedere in maniera sicura a tutte le risorse per le quali si possiedono i permessi. Tale peculiarità è definita SSO o Single Sign-On.

Configurazione del sistema

Il sistema che viene configurato nell’esempio parte da questi presupposti: il dominio Active Directory è DOMINIO.IT ed è erogato da tre server adserver1.dominio.it, adserver2.dominio.it ed adserver3.dominio.it. Si parte dal presupposto che si disponga di un’utenza amministrativa (Administrator) o comunque di un’utenza che abbia i permessi di aggiungere computer al dominio. Il server SAMBA configurato sarà appunto un computer aggiunto al dominio DOMINIO.IT.

Installazione KERBEROS

Per far funzionare Kerberos su un sistema Linux (in questo caso, come detto, Debian Lenny) è sufficiente il pacchetto krb5-user. Tale pacchetto contiene tutti gli eseguibili necessari all’interfacciamento con i server di autenticazione. Inoltre, per completezza, è conveniente installare anche il pacchetto krb5-config contenente un template relativo ai file di configurazione e krb5-doc che contiene la documentazione completa del funzionamento di Kerberos sotto Linux:

$ apt-get install krb5-user krb5-config krb5-doc

Il file di configurazione /etc/krb5.conf contiene le impostazioni necessarie al collegamento con il (o “i”) server di autenticazione e, pertanto, dovrà contenere le informazioni ad essi associate:

[libdefaults]
        default_realm = DOMINIO.IT
 
[realms]
        DOMINIO.IT = {
                kdc = adserver1.dominio.it
                kdc = adserver2.dominio.it
                kdc = adserver3.dominio.it
                admin_server = adserver1.dominio.it
                  }

Nella sezione libdefaults sono definite le informazioni di default per la libreria krb5, la sezione realms contiene le definizioni specifiche relative ai vari domini dichiarati, nel caso sopra descritto vi sono definiti i tre server kdc (acronimo che sta per Key Distribution Server) ai quali vengono richiesti i permessi di accesso alle risorse ed il parametro admin_server che indica il Master Kerberos server ossia il principale erogatore del servizio.
La configurazione illustrata è minimale e permette i test che verranno effettuati, ma molte altre sono le opzioni relative a Kerberos e sono disponibili nella man page consultabile attraverso questo comando:

$ man krb5.conf

A completamento della configurazione sono necessarie due ulteriori operazioni, la prima è l’aggiunta dei server dichiarati nel file krb5.conf nel file hosts:

# ADs Servers
192.168.0.1    adserver1.dominio.it
192.168.0.2    adserver2.dominio.it
192.168.0.3    adserver3.dominio.it

In questo modo malfunzionamenti nel sistema di risoluzione dei nomi (e cioè del server DNS dichiarato in /etc/resolv.conf) non comporteranno l’interruzione del servizio.
La seconda operazione riguarda l’orario del sistema che deve essere assolutamente esatto per potersi interfacciare con un server Active Directory, installando quindi il pacchetto ntpdate è possibile sistemare l’orario automaticamente, puntando un servizio ntp pubblico come time.ien.it:

$ apt-get install ntpdate
$ ntpdate time.ien.it
 9 Apr 16:44:53 ntpdate[2806]: step time server 193.204.114.105 offset -7226.860681 sec

Sebbene l’argomento non sia trattato in questo articolo, ideale sarebbe avere un sistema automatizzato che costantemente sistemi l’orario, come ad esempio openntpd.
A questo punto, terminata la configurazione, è tempo di richiedere il primo ticket al server attraverso il comando kinit. La richiesta dovrà essere fatta da un utente privilegiato (quindi Administrator o chi per esso):

$ kinit -V Administrator@DOMINIO.IT
Password for Administrator@DOMINIO.IT:
Authenticated to Kerberos v5

Se il messaggio restituito dal comando è “Authenticated to Kerberos v5”, allora tutto è andato come da pronostico. In alternativa sarà necessario controllare la bontà dei dati inseriti e rilanciare il comando.

Installazione SAMBA e Winbind

Il secondo componente da configurare per l’attuazione del progetto è SAMBA insieme alla parte che si occupa di interfacciarsi con i server Microsoft Windows per il reperimento delle informazioni di dominio:

$ apt-get install samba smbclient smbfs winbind

Il contenuto del file di configurazione di SAMBA, /etc/samba/smb.conf, dovrà essere simile al seguente:

[global]
        realm = DOMINIO.IT
        server string = %h : Samba %v
        security = ADS
        auth methods = guest, sam, winbind
        password server = adserver1.dominio.it, adserver2.dominio.it, adserver3.dominio.it
        log level = 3 passdb:10 auth:10 winbind:10
        max log size = 50
        load printers = No
        show add printer wizard = No
        preferred master = No
        ldap ssl = no
        idmap uid = 10000-200000
        idmap gid = 10000-200000
        template shell = /bin/bash
        create mask = 0770
        directory mask = 0770
        reset on zero vc = yes

La configurazione al di là delle opzioni ininfluenti per il progetto, prevede i seguenti parametri:

  1. realm: il dominio active directory DOMINIO.IT;
  2. security: il tipo di funzionamento che SAMBA deve assumere, che è “ADS” (Active Directory);
  3. auth methods: i metodi di autenticazione che sono guest (ospite), sam (il database standard delle utenze SAMBA) e winbind (attraverso Microsoft Windows);
  4. password server: i server presso i quali autenticarsi (identici a quelli dichiarati per Kerberos);
  5. idmap uid e idmap gid: gli identificativi di partenza con cui mappare le utenze lette dai server Windows, in modo che a queste utenze possano essere assegnati permessi locali;
  6. reset on zero vc: indica al sistema di resettare una connessione se ne subentra un’altra dallo stesso indirizzo IP. Quest’opzione è utile quando le connessioni di rete non sono stabili e Microsoft Windows riapre una nuova connessione sebbene la precedente abbia ancora dei file allocati;

Prima di avviare il servizio SAMBA è necessaria una variazione al file /etc/nsswitch.conf in modo da indicare al sistema che i dati per le autenticazioni possono essere ricercati oltre che nei file locali, anche nel server winbind, pertanto le righe corrispondenti a queste informazioni andranno variate come indicato di seguito:

passwd:         compat winbind
group:          compat winbind
...
hosts:          files dns wins

A questo punto dopo il riavvio dei servizi appena configurati:

$ /etc/init.d/samba restart
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.
$ /etc/init.d/winbind restart
Stopping the Winbind daemon: winbind.
Starting the Winbind daemon: winbind.

Si potrà includere il server all’interno del dominio utilizzando il comando net per eseguire l’operazione di join:

$ net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- DOMINIO
Joined 'ANOMALIA' to realm 'dominio.it'

L’output del comando conferma che il server ora è parte del dominio. Un’ulteriore verifica è effettuabile sempre attraverso il comando net mediante l’utilizzo dell’opzione info:

$ net ads info
LDAP server: 192.168.0.1
LDAP server name: adserver1.dominio.it
Realm: DOMINIO.IT
Bind Path: dc=DOMINIO,dc=IT
LDAP port: 389
Server time: gio, 09 apr 2009 17:07:33 CEST
KDC server: 192.168.0.1
Server time offset: 2

Conclusioni

Nella prossima puntata verranno illustrate le tecniche per interrogare le risorse ed accedervi.

Articoli della serie

Samba e Active Directory (1 di 3): diventare parte di un Dominio
Samba e Active Directory (2 di 3): interrogare il dominio
Samba e Active Directory (3 di 3): configurare pam per l’autenticazione locale

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

Tags: , ,