Capitolo 7.   Accesso a GNU/Linux da parte di utenti di una AD MS-Windows con Winbind

In precedenza, nel capitolo sull'impostazione di un servente Samba, è stato illustrato come integrare quest'ultimo in un dominio MS-Windows NT o in una active directory di MS-Windows.

In particolare si è visto come questo sia possibile impostando il livello di sicurezza al valore domain ed eseguendo il comando net o smbpasswd con opportune opzioni.

Grazie a Winbind, che è uno strumento di Samba presente dalla versione 2.2.2, diventa addirittura possibile l'autenticazione degli utenti GNU/Linux (attenzione: utenti GNU/Linux, non utenti Samba) presso un controller di active directory MS-Windows.

Ciò può essere molto utile in quei contesti in cui si vogliano inserire elaboratori con GNU/Linux in reti già consolidate su piattaforma MS-Windows, utilizzando le informazioni su utenti e gruppi preesistenti senza essere costretti a ridefinirle anche per le macchine GNU/Linux.

Winbind è costituito da un piccolo gruppo di componenti disponibili all'interno del pacchetto samba-common; in dettaglio ne fanno parte:

Il servizio NSS è presente in tutte le moderne librerie C e permette di ottenere i dati relativi a utenti, gruppi e nodi, da varie fonti (ad esempio NIS, DNS, ecc.); Winbind diventa un'ulteriore fonte di informazioni per NSS relativamente a utenti e gruppi di una active directory MS-Windows.

Il PAM è un sistema generalizzato per la gestione dei metodi di autenticazione per molteplici servizi (quelli per cui esistono le librerie PAM relative); grazie all'apposita libreria PAM, Winbind fornisce anche il servizio di autenticazione.

Per poter interagire con una active directory occorre poi che sulla macchina GNU/Linux siano installati i pacchetti relativi alla parte cliente e relativa configurazione di Kerberos5 e cioè:

In queste dispense non vengono forniti dettagli sul funzionamento e sulla configurazione di Kerberos ma solo le informazioni indispensabili affinché la macchina GNU/Linux possa ottenere il ticket di autenticazione dal servente Kerberos, cioè dal controller di active directory.

7.1   Configurazioni necessarie

Si suppone che il dominio di active directory al quale appartengono gli utenti sia planck.local e che il relativo servente MS-Windows si chiami win2003.

7.1.1   /etc/krb5.conf

Iniziamo con la configurazione di /etckrb5.conf:

[libdefaults]
  ticket_lifetime = 24000
  default_realm = PLANCK.LOCAL
  default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
  default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
[realms]
  PLANCK.LOCAL = {
   kdc = WIN2003
   admin_server = WIN2003
   default_domain = PLANCK.LOCAL
  }
[domain_realm]
  .domain.internal = PLANCK.LOCAL
  domain.internal = PLANCK.LOCAL

7.1.2   /etc/smb.conf

Occorre poi intervenire nel file /etc/smb.conf inserendo le direttive seguenti:

   workgroup = PLANCK
   realm = PLANCK.LOCAL
   encrypt password = yes
   security = ADS
   password server = win2003
   domain logons = no
; impostazioni per il demone winbindd
   winbind use default domain = yes
   winbind separator = +
   template shell = /bin/bash
   template homedir = /home/%D/%U
   winbind uid = 10000-20000
   winbind gid = 10000-20000
   winbind enum users = yes
   winbind enum groups = yes

Con winbind separator si imposta il carattere usato per ottenere il nome utente GNU/Linux dall'unione di nome di dominio e nome utente MS-Windows; il valore predefinito corrisponde a \, ma è sconsigliabile, in quanto ha un significato speciale nella shell di GNU/Linux; la scelta del carattere + non dovrebbe invece comportare problemi.

Con template shell si imposta la shell degli utenti.

Con template homedir si definisce la directory personale degli utenti; nell'esempio si usano le variabili %D e %U in modo che ogni utente abbia come directory /home/nome_dominio_win/nome_utente_win.

winbind uid e winbind gid permettono di impostare gli intervalli di numeri di identificazione per utenti e gruppi che Winbind utilizza per riabbinare gli utenti e i gruppi MS-Windows a utenti e gruppi GNU/Linux.

winbind enum users e winbind enum groups permettono di attivare l'enumerazione di gruppi e utenti.

7.1.3   Modifiche ai file di configurazione dei moduli PAM

Le modifiche ai file di configurazione dei moduli PAM devono essere effettuate con molta attenzione in quanto errori in questa fase possono anche causare l'impossibilità di accedere al sistema. Può quindi essere opportuno fare una copia dei file interessati alle modifiche in modo da poter ripristinare la situazione precedente in ogni momento e anche tenere aperta una sessione di riserva come utente root dalla quale intervenire in caso di necessità.

Maggiori informazioni sul funzionamento dei moduli PAM non possono essere fornite in questa sede.

In testa al file /etc/pam.d/common-account deve essere aggiunta la seguente riga:

account  sufficient /lib/security/pam_winbind.so

In testa al file /etc/pam.d/common-auth deve essere aggiunta la seguente riga:

account  sufficient /lib/security/pam_winbind.so

Inoltre cambiare la riga:

auth   [success=1 default=ignore]   pam_unix.so nullok_secure

in:

auth   [success=1 default=ignore]   pam_unix.so nullok_secure use_first_pass

In testa al file /etc/pam.d/common-password deve essere aggiunta la seguente riga:

account  sufficient /lib/security/pam_winbind.so

In testa al file /etc/pam.d/common-session deve essere aggiunta la seguente riga:

session  required   /lib/security/pam_mkhomedir.so  skel=/etc/skel/  umask=0002

Questa è molto importante in quanto permette la creazione automatica della directory personale dell'utente al primo accesso alla macchina GNU/Linux secondo quanto inserito nel file smb.conf:

template homedir = /home/%D/%U

7.1.4   Modifiche alla configurazione di NSS

Nel file /etc/nsswitch.conf, contenente la configurazione del servizio NSS, è necessario aggiungere Winbind tra le fonti dei dati relativi a utenti e gruppi. Ad esempio:

passwd:     files winbind
group:       files winbind 

L'ordine con cui vengono elencate le fonti è significativo e quindi è opportuno lasciare la priorità a files oppure a compat in modo che per primi siano interrogati i file di sistema (/etc/passwd e /etc/group).

7.2   Attivazione

Per prima cosa occorre ottenere il ticket dal servente MS-Windows con il comando:

kinit Administrator@PLANCK.LOCAL

cui segue la richiesta della parola d'ordine di Administrator (che si suppone essere un utente amministrativo del domain controller).

Affinché l'autenticazione Kerberos funzioni correttamente occorre che tutte le macchine coinvolte siano sincronizzate relativamente all'orario di sistema.

Si può verificare il buon esito del comando precedente con:

klist

che fornisce la lista dei ticket presenti nella relativa cache.

A questo punto si deve inserire la macchina GNU/Linux nella active directory MS-Windows:

Affinché il comando abbia successo occorre anche che il nome del controller della active directory sia risolvibile; in caso non si abbia a disposizione un servente DNS basta aggiungere al file /etc/hosts una riga come la seguente (dove si suppone che 192.168.56.101 sia il numero IP della macchina controller):

192.168.56.101   win2003.planck.local   win2003

Infine si devono avviare i servizi samba e winbind:

/etc/rc.d/init.d/samba start

/etc/rc.d/init.d/winbind start

Per verificare il buon funzionamento di Winbind eseguire i comandi:

wbinfo -u

wbinfo -g

con i quali si elencano rispettivamente utenti e gruppi della active directory MS-Windows (vedere la figura 7.11).

Figura 7.11.

figure/samba-figura-7.1

Si possono usare anche i comandi:

getent passwd

getent group

per ottenere gli elenchi di tutti gli utenti e gruppi utilizzabili, sia quelli della active directory che quelli propri di GNU/Linux.

Infine si può procedere all'accreditamento sulla macchina GNU/Linux di un utente della active directory MS-Windows (vedere figure 7.12 e 7.13 notando in 7.12 la creazione automatica della directory dell'utente al primo accesso).

Figura 7.12.

figure/samba-figura-7.2

 

Figura 7.13.

figure/samba-figura-7.3

7.3   Esportazione delle directory utente dal servente MS-Windows

Può essere interessante fare in modo che le directory personali dei vari utenti che si accreditano sui clienti GNU/Linux siano fisicamente residenti sulla macchina MS-Windows e vengano esportate al momento dell'avvio delle macchine GNU/Linux.

Per ottenere ciò basta inserire nel file /etc/fstab di ogni macchina GNU/Linux la riga seguente:

//win2003/home    /home/PLANCK/    cifs     username=Administrator%parola_d'ordine,\
  \gid=Domain\ Users,dir_mode=02775,file_mode=0775

Si suppone che sui clienti le directory personali vengano create in /home/PLANCK/, come mostrato in tutti gli esempi precedenti, e che esse risiedano sul servente come risorsa condivisa home (cui si devono ovviamente assegnare gli opportuni permessi in ambiente MS-Windows).

Grazie alle opzioni impostate in sede di montaggio (gid, dir_mode, file_mode) le directory personali risultano pienamente gestibili dagli utenti membri del gruppo Domain Users e quindi dai rispettivi proprietari (vedere figura. 7.15).

Si presti però attenzione al fatto che qualsiasi utente della active directory, una volta accreditatosi in GNU/Linux, ha il controllo su tutte le directory personali disponibili in /home/PLANCK, cosa che rende questa soluzione praticabile solo a livello didattico e comunque in contesti in cui non siano importanti la sicurezza e la privacy dei dati.

Figura 7.15.

figure/samba-figura-7.4