Linux - Windows: Prove di convivenza - PierGiorgio Malusardi - Microsoft Italia
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Sommario Introduzione ....................................................................................................................................................................... 3 Cos’è Active Directory ........................................................................................................................................................ 3 Estensioni di Active Directory per UNIX/Linux.................................................................................................................... 4 Ambiente di test ................................................................................................................................................................. 5 Installazione dei componenti aggiuntivi di Windows Server 203 R2 .................................................................................. 5 Configurazione di Active Directory e dei servizi di supporto .............................................................................................. 7 Configurazione del Time Service in Windows ................................................................................................................. 7 Configurazione del Time Service in Linux ....................................................................................................................... 8 Creazione degli utenti in Active Directory ...................................................................................................................... 8 Creazione delle home directory sul server Windows ................................................................................................... 10 Configurazione dei computer con Linux ........................................................................................................................... 11 Join al dominio Active Directory del computer Linux ................................................................................................... 11 Configurazione di Kerberos come servizio di autenticazione ....................................................................................... 12 Configurazione di LDAP come servizio di autorizzazione e store delle informazioni utente ........................................ 13 Test della connettività verso il Domain Controller Active Directory come server LDAP .............................................. 14 Configurazione del mount delle home directory create sul Domain Controller Active Directory ................................ 15 Riferimenti ........................................................................................................................................................................ 16 2 PierGiorgio Malusardi | Linux – Windows: prove di convivenza | Microsoft
Questo protocollo definisce un sistema Introduzione di autenticazione delle identità per l’accesso alle risorse in rete. Uno dei problemi che si è posto quasi subito nel Windows mondo dell’informatica distribuita è il mantenimento di un sistema di gestione centralizzata delle identità Lan Questo protocollo di autenticazione, (ossia delle informazioni riguardanti gli utenti dei Manager inizialmente sviluppato in sistemi), in modo da consentire agli utenti di accedere collaborazione con IBM, è presente sin alle risorse presenti in rete da un “qualsiasi punto”. dalle prime versioni di Windows ed è tuttora implementato per compatibilità Nel tempo, le risposte a questa sfida sono state all’indietro. diverse, basate su tecnologie e protocolli diversi, spesso non interoperabili. NTLM Ora alla versione due, è un’evoluzione Focalizzandoci sui due mondi che ci interessano di LAN Manager ed è presente anche nell’ambito di quest’articolo (Windows e UNIX/Linux) nelle ultime versione di Windows per le principali soluzioni al problema della compatibilità all’indietro e per gestire centralizzazione della gestione delle identità sono situazioni in cui non è presente un (senza pretendere di essere esaustivo): server di autenticazione centralizzato. Active Introdotta con Windows 2000, Active UNIX/Linux Directory Directory è una soluzione di gestione YP – NIS Sviluppato da Sun Microsystems dell’autenticazione delle identità e di Il suo nome iniziale (YP – Yellow Pages – autorizzazione degli accessi alle risorse, modificato perché marchio registrato in basata su diversi protocolli standard tra UK) spiega il prefisso di molti dei tool di cui Kerberos e LDAP. gestione. Tabella 1 È un sistema di gestione degli account che si sovrappone al tradizionale Cos’è Active Directory sistema UNIX basato sui file passwd – group – shadow. Come indicato in Tabella 1, con Windows 2000 è stata Sfrutta una serie di “mappe” per fornire introdotta come strumento di gestione centralizzata ai client di rete diverse informazioni delle identità Active Directory. Active Directory è (nomi macchina, copie utenti-password, fondamentalmente un servizio per la gestione delle ...). identità (utenti, computer, servizi, ecc...) e delle NIS+ È un’evoluzione del precedente. autorizzazioni che si basa, per il suo funzionamento, su alcuni protocolli standard: LDAP Il Lightweight Directory Access Protocol – ora alla versione tre e definito dallo Kerberos È il protocollo di autenticazione RFC 2251 – definisce un protocollo di inventato al MIT (Massachusetts accesso ai servizi di directory. Questo Institute of Technology), poi protocollo è usato per accedere a formalizzato con lo RFC 1510. database distribuiti e gerarchici che Il protocollo prevede l’esistenza di possono contenere informazioni almeno un server di autenticazione qualsiasi. Nell’ambito della gestione (KDC – Key Distribution Center) di cui delle identità il database conterrà tutte le entità di rete (utenti, servizi, informazioni riguardanti gli utenti: computer) si fidano. Il KDC autentica nome utente, UID, GID, password, ecc... l’entità che chiede l’accesso a una Su questo protocollo si basano diverse risorsa e rilascia un ticket per l’accesso a soluzioni di gestione delle identità, questa. Il ticket è specifico per l’accesso commerciali e open (Sun ONE Directory a una data risorsa e ha una durata Server, OpenLDAP, Novell eDirectory). limitata nel tempo. Kerberos Inizialmente sviluppato al MIT Le entità di rete possono essere (Massachusetts Institute of Technology) organizzate in REALM (reami) che sono il protocollo di autenticazione Kerberos entità amministrative e confini di è ora uno standard IETF (RFC 1510). sicurezza. Microsoft | Linux – Windows: prove di convivenza | PierGiorgio Malusardi 3
Tra diversi REALM è possibile creare standard SNTP (RFC 1769) è lo delle relazioni di fiducia (trust) in modo strumento utilizzato in una rete basata da consentire a un’entità (es. un utente) su Active Directory per mantenere appartenente a un REALM l’accesso a allineati i tempi macchina entro una risorse (es. un file server) presente in un tolleranza di 5 minuti (valore di default altro REALM. modificabile). Nel mondo Windows il ruolo dei REALM LDIF LDAP Data Interchange Format (RFC è svolto dai Domini Active Directory e il 2849) è utilizzato per apportare ruolo dei server KDC è svolto dai modifiche al database LDAP usato da Domain Controller (controllori di Active Directory (inserzione/estrazione dominio). La versione di Kerberos usata di dati, modifiche dello schema, ecc...). da Windows è la 5. X.509 L’infrastruttura X.509 (RFC 3280 e 2459) LDAP Questo protocollo è pensato per la può essere usata con Active Directory gestione d’informazioni contenute in per consentire l’autenticazione su database gerarchici e distribuiti. Il Kerberos usando certificati digitali e protocollo consente di gestire smartcart. informazioni qualsiasi. La struttura del database e le informazioni in esso Tabella 2 contenuto sono definite dalla Schema Active Directory oltre ad implementare i servizi di (elenco delle classi di oggetti e dei autenticazione e autorizzazione fornisce anche: un relativi attributi creabili nel database). metodo di replica dei dati tra i diversi Domain Lo Schema di Active Directory è definito Controller (replica per attributo e multimaster), un da Microsoft, ma è estensibile in modo sistema per la gestione centralizzata delle che possa gestire nuovi attributi legati a configurazioni dei client e dei server (Group Policy), il classi già definite (per esempio supporto per sever di posta Exchange, la possibilità di l’attributo Stipendio aggiunto alla classe mantenere nel suo database i dati dei DNS basati su User) o nuove classi (derivate da classi Windows, e altri servizi ancora. già esistenti o create ex-novo – per In quest’articolo vedremo come utilizzare i servizi esempio la classe AutoAziendale). nativi di Active Directory per gestire anche le identità Active Directory usa il protocollo LDAP degli utenti UNIX/Linux e la loro autenticazione in fase v.3 per gestire le informazioni di logon a macchine UNIX/Linux. riguardanti le entità di rete (utenti, computer, servizi, ecc.). Estensioni di Active Directory per Il ruolo di LDAP server è svolto dai Domain Controller. UNIX/Linux DNS Il servizio DNS è fondamentale per il Le cose interessanti, ai fini dell’integrazione Windows funzionamento di Active Directory. – UNIX/Linux, sono che un Dominio Active Directory è Definisce lo spazio dei nomi dei domini anche un REALM Kerberos e che un Domain Controller Active Directory e costituisce lo di Active Directory è anche un server KDC e un server strumento utilizzato dalle diverse entità LDAP standard. per trovare i server che erogano i servizi di Active Directory (KDC server, LDAP Kerberos e LDAP sono anche implementati e Server, ...). supportati in pressoché tutte le versioni di UNIX/Linux e quindi questi due protocolli saranno i pilastri su cui Non può esistere un Domino Active costruiremo la possibilità di utilizzare Active Directory Directory senza il corrispettivo dominio come servizio di autenticazione anche per gli utenti DNS (mentre non è ovviamente vero il UNIX/Linux. contrario). Il primo problema che si pone è che lo Schema SNTP Il protocollo Kerberos prevede la standard di Active Directory non prevede nessun sincronizzazione dei tempi macchina attributo per la gestione delle informazioni tipiche per il suo corretto funzionamento. Uno degli utenti Linux (es. UID, GID, shell di default, home sfasamento dei tempi, oltre una certa directory, ecc...). tolleranza, tra i client, i server e il KDC È necessario quindi modificare lo schema in modo da può portare all’impossibilità di accedere associare alla classe User definita in Active Directory (e alle risorse di rete. Il protocollo 4 PierGiorgio Malusardi | Linux – Windows: prove di convivenza | Microsoft
ad altre classi) gli attributi necessari per gestire gli usare con Virtual Server 2005 R2 o con Virtual PC) a utenti del mondo UNIX/Linux. Ci sono due possibilità questo link: per fare questo: http://www.microsoft.com/technet/try/vhd/default.m Installare su un Domain Controller i Service for UNIX spx 3.5. Questi sono liberamente scaricabili dal sito Microsoft, per tutti i possessori di una copia registrata di Windows 2000 Server o Windows Server 2003 (in Installazione dei componenti una delle tante versioni). aggiuntivi di Windows Server 203 R2 Installare i componenti aggiuntivi di Windows Server Per installare i componenti aggiuntivi di Windows 2003 R2. Server 2003 R2 si deve inserire il secondo CD fornito e, Le due opzioni non sono identiche. L’installazione dei alla comparsa del programma d’installazione, Service for UNIX 3.5 introduce nello Schema di Active selezionare l’opzione che consente di portare a Directory circa trenta attributi per la gestione di termine l’installazione delle componenti aggiuntive utenti, computer, servizi, ecc... UNIX/Linux. Il nome di (Figura 1). questi attributi inizia con msSFU30. Tra questi quelli di nostro interesse sono riportati in Tabella 3. msSFU30UidNumber Attributo della classe User per la gestione dello UID di utenti UNIX/Linux. msSFU30GidNumber Attributo della classe User per la gestione del GID di utenti UNIX/Linux msSFU30HomeDirectory Attributo della classe User per la gestione del percorso alla home directory. msSFU30LoginShell Attributo della classe User Figura 1 per la gestione del Terminato il processo d’installazione, è possibile percorso alla shell di login aggiungere alcuni componenti che ci saranno utili per di default dell’utente. integrare Windows e UNIX/Linux in un unico Tabella 3 ambiente: si deve accedere a Control Panel | Add/Remove Programs | Add/Remove Windows L’installazione dei componenti aggiuntivi di Windows Components e in questo selezionare Active Directory Server 2003 R2 introduce invece nello schema di Services. Nella finestra di dialogo Active Directory Active Directory gli attributi definiti dallo RFC 2307 e Services selezionare Identity Management for UNIX, rappresenta quindi una soluzione più aderente agli quindi OK (Figura 2). standard. Per questo motivo prenderemo in considerazione, in quest’articolo, il caso di uso di Nella finestra Windows Components, selezionare Windows Server 2003 R2, indicando, dove è Other Network File and Print Services. Nella finestra necessario, le differenze di configurazione che devono di dialogo Other Network File and Print Services essere implementate da chi usa i Service for UNIX 3.5 selezionare l’opzione Microsoft Service for NFS e (SFU3.5). quindi OK (Figura 3). S’installerà in questo modo sul server Windows il servizio NFS e il relativo client, rendendo più semplice lo scambio di file tra i due Ambiente di test ambienti e rendendo possibile la creazione di un unico file system su cui appoggiare le home directory degli Per quest’articolo userò un ambiente di test con un utenti sia per l’ambiente UNIX/Linux che per server Windows Server 2003 R2 (dc001.pgm.local), l’ambiente Microsoft. che fungerà da Domain Controller di un Dominio Rimanendo ancora nella finestra Windows Active Directory di nome pgm.local, e un computer Components, selezionare l’ultimo componente: Linux (fc001.pgm.local) con installato Fedora Core 6. Subsystem for UNIX-based Application (Figura 4). Chi voglia fare degli esperimenti può trovare una Questo componente è un sottosistema che è eseguito macchina virtuale con Windows Server 2003 R2 (da sopra il kernel di Windows allo stesso livello del sottosistema Win32 e mette a disposizione un Microsoft | Linux – Windows: prove di convivenza | PierGiorgio Malusardi 5
ambiente completo di esecuzione per applicazioni basate su UNIX. In particolare ci permetterà di eseguire delle shell UNIX (cshell e korn). Figura 4 È possibile scaricare e installare questi componenti in Figura 2 un qualsiasi momento successivo all’installazione di SUA dal link: http://www.microsoft.com/windowsserver2003/R2/u nixcomponents/webinstall.mspx Scaricati i componenti aggiuntivi, è possibile eseguirne l’installazione lanciando il file eseguibile scaricato (Utilities and SDK for UNIX-Based Application_X86.exe) che si scompatterà nella directory scelta consentendo di lanciare il programma Setup.exe per l’installazione vera e propria. Scegliendo l’opzione Custom Installation, il programma d’installazione consente di scegliere i componenti che si vogliono installare (Figura 5) Figura 3 Premere il bottone Next e attendere il completamento dell’installazione dei componenti scelti. Durante l’installazione del Subsystem for UNIX-based Application (SUA) una finestra di dialogo chiede se si vogliono scaricare da internet dei componenti aggiuntivi opzionali. Questi componenti opzionali comprendono oltre 300 utilità (GNU e basate su BSD, tra cui le shell) e le librerie e i tool di sviluppo (gcc, make, ...) sia in versione 32 sia 64 bit. Figura 5 Secondo il tipo di ambiente da integrare (UNIX e/o Linux) conviene aggiungere, alle scelte di default, anche le SRV-5 Utilities e/o le GNU Utilities. Se si vogliono ricompilare per SUA dei programmi UNIX/Linux si deve installare anche lo GNU SDK. Scegliendo di installare lo GNU SDK sarà richiesto di accettare la licenza LGPL sotto cui questo tool è distribuito (Figura 6). È possibile installare un tool per Visual Studio (opzione non visibile in Figura 5) per eseguire il debug di applicazioni UNIX/Linux per SUA. 6 PierGiorgio Malusardi | Linux – Windows: prove di convivenza | Microsoft
componenti che useremo (ad esclusione delle shell bash), essendo parti integranti di Windows Server 2003 R2 sono supportati da Microsoft. Figura 6 È quindi chiesto (Figura 7) se abilitare, per le utilità installate, la possibilità di usare setuid e la gestione “case sensitive” dei nomi dei file (Windows Figura 8 normalmente conserva il “case” del nome dei file, ma è “case insensitive”: per Windows FILE.txt e file.txt sono lo stesso file). Figura 9 Configurazione di Active Directory e Figura 7 dei servizi di supporto Al termine dell’installazione dei componenti aggiuntivi di Windows Server 2003 R2 e dei componenti Siccome Kerberos richiede che la differenza di tempo opzionali per SUA avremo a disposizione: macchina tra il KDC e gli altri computer del REALM non Le classi e gli attributi Active Directory per gestire superi un valore prefissato, il primo passo sarà entità UNIX/Linux garantire la sincronizzazione dei tempi macchina. Un server e un client NFS (Figura 8) Supporremo che i nostri server abbiano accesso ad Internet e quindi useremo dei time server pubblici Tool e librerie di sviluppo per applicazioni UNIX/Linux come sorgenti dei tempi. in SUA e due shell UNIX (cshell e kshell – Figura 8) Chi fosse interessato ad una shell bash per il Configurazione del Time Service in Windows sottosistema SUA può trovarne i sorgenti al link Il Time Service in Windows può essere configurato http://www.interopsystems.com/ usando l’utilità a linea di comando w32tm.exe. Procediamo ora all’installazione dei Support tools 1. Avviare l’editor del Registry: in Start | Run inserendo il CD di installazione di Windows Server digitare regedit e cliccare OK 2003 e lanciando suptools.msi dalla directory Support. Accettare tutte le impostazioni di default. 2. Trovare la voce: HKEY_LOCAL_MACHINE\System\CurrentControlSe Abbiamo ora a disposizione tutto quello che ci serve t\Services\W32Time\TimeProviders\NtpClient per integrare l’autenticazione di utenti UNIX/Linux in Active Directory. È da sottolineare che tutti i Microsoft | Linux – Windows: prove di convivenza | PierGiorgio Malusardi 7
3. Nel pannello di destra fare clic con il tasto destro service ntpd restart del mouse sulla voce Enabled e selezionare in alternativa Modify dal menù contestuale /etc/init.d/ntpd restart . 4. Nella finestra di dialogo Edit DWORD Value, inserire 0 nel campo Value data, cliccare OK e Creazione degli utenti in Active Directory chiudere l’editor del registry. Iniziamo adesso a creare in Active Directory gli utenti 5. Aprire una shell. (Cliccare Start, cliccare Run, che dovranno fare logon su macchine Linux. Anche se inserire cmd e cliccare OK). non necessario, il mio consiglio, per chiarezza di 6. Al prompt inserire: configurazione, è di mantenere gli utente specifici del w32tm /config /update mondo Linux in una struttura separata in Active Questo commando rende effettive le modifiche Directory. A questo scopo creiamo un’apposita apportate alla configurazione. struttura di Organizational Unit (contenitori di oggetti): 7. Al prompt dei comandi inserire il seguente comando: 1. Da Start | Administrative tools avviare Active net stop w32time && net start w32time Directory Users and Computers Questo commando riavvia il servizio con la nuova 2. In Active Directory Users and Computers fare clic, con il tasto destro del mouse, sul dominio (nel mio configurazione. caso pgm.local) e, dal menu contestuale, scegliere New | Organizational Unit. Configurazione del Time Service in Linux 3. Nella finestra New Object – Organizational Unit, In Linux il time service è fornito dal demone NTP (ntpd inserire Linux-OU (o un altro nome di vostro in Fedora Core 6) che costantemente aggiorna piacimento) nel campo Name e cliccare OK. l’orologio di sistema con il tempo fornito dal server 4. Fare clic con il tasto destro del mouse sulla NTP. organizational unit Linux-OU e, dal menù Il file di configurazione per il demone NTP è ntp.conf contestuale, scegliere New | Organizational Unit. (tipicamente in /etc in Fedora) che è letto all’avvio del 5. Nella finestra di dialogo New Object – demone. Organizational Unit, nel campo Name inserite UNIX-Users (o un altro nome di vostro Verificare che il servizio sia attivo eseguendo in una piacimento) e cliccate OK. shell il comando 6. Ripetere le operazioni 4 e 5 per creare le # ps –ef | grep ntpd organizational unit UNIX-Groups e UNIX- Se il servizio non è avviato si provveda ad avviarlo e a Computers fino ad ottenere la struttura di Figura configurarlo per l’avvio al boot del sistema. 10. Modificare, con l’editor preferito, il file /etc/ntp.conf perché contenga almeno le seguenti linee (indispensabili al corretto funzionamento del demone NTP nel nostro scenario): # ntp.conf – ntpd configuration file server ntp1.ien.it server ntp2.ien.it server dc001.pgm.local #server windows driftfile /var/lib/ntp/ntp.drift Questo è un file di configurazione minimale. Le linee server indicano quali server NTP di livello superiore Figura 10 saranno interrogati per avere il tempo corretto. Dopo aver creato la struttura di OU, passiamo a creare La linea driftfile consente al demone NTP di gli utenti. registrare, nel file indicato, informazioni relative 1. Da Active Directory Users and Computers fare clic all’accuratezza dell’orologio locale. In questo modo si con il tasto destro del mouse sulla OU UNIX-Users riducono i problemi di mantenimento del tempo locale e dal menu contestuale scegliere New e User. corretto in caso d’irraggiungibilità dei server indicati: 2. Nella finestra di dialogo New Object – User, nel nel file è scritto il tasso di modifica del tempo locale campo Full Name inserire il nome utente (nel mio rispetto a quello dei server dei tempi. Dopo la caso lx001), nel campo User logon name inserire modifica del file di configurazione il demone deve il nome utilizzato per il logon (lx001), e cliccare essere riavviato con il comando: Next. 8 PierGiorgio Malusardi | Linux – Windows: prove di convivenza | Microsoft
3. Nella finestra di dialogo New Object – User inserire, e confermare, una password, deselezionare l’opzione User must change password at next logon e cliccare Next e quindi Finish. Ripetere l’operazione per creare tutti gli utenti desiderati (se gli utenti da inserire fossero molti, è possibile eseguire l’import degli account Linux o usare degli script per la creazione bulk degli utenti). Creiamo ora i gruppi di sicurezza a cui gli utenti Linux apparterranno. Il concetto di gruppo di utenti in Windows è analogo a quello UNIX/Linux. 1. Sempre in Active Directory Users and Computers, cliccare con il tasto destro del mouse la OU UNIX- Groups, dal menù contestuale scegliere New e quindi Group. 2. Nella finestra di dialogo New Object – Group, nel campo Group Name inserire il nome desiderato per il gruppo di utenti (nel mio caso lx-grp001) e Figura 11 cliccare OK. Ripetere l’operazione fino a creare tutti i gruppi necessari. 3. Ripete l’operazione per gli altri gruppi di sicurezza Per consentire la lettura dei dati in Active Directory 4. In Active Directory Users and Computers agli utenti Linux è necessario configurare un utente di espandere la organizational unit Linux-Users e servizio che faccia da proxy. fare doppio clic su uno degli utenti creati (nel mio caso lx001) . 1. Sempre in Active Directory Users and Computers fare clic con il tasto destro del mouse sul 5. Nella finestra Properties contenitore Users e scegliere dal menù selezionate il tab UNIX Attributes e riempite i contestuale New e User. campi come indicato sotto (Figura 12): 2. Nella finestra di dialogo New Object – User, nel a. NIS domain: nome del dominio Active Directory campo Full Name inserire padl, nel campo User (nel mio caso pgm) logon name inserire ancora padl e cliccare Next. b. UID: un valore appropriato di UID (nel mio caso 3. Nella finestra di dialogo New Object – User 20001) inserire e confermare una password (questa c. Login shell: /bin/bash (o un’altra shell di vostra password sarà usata successivamente e quindi è scelta) necessario ricordarla), deselezionare l’opzione d. Home directory: /winhome/ User must change password at next logon, (per me /winhome/lx001) selezionare le opzioni User cannot change e. Primary group name (GID): il nome o il GID del password e Password never expire, cliccare gruppo primario cui l’utente appartiene (nel Next e quindi Finish. mio caso lx-grp001) Impostiamo ora gli attributi relativi a UNIX/Linux dei 6. Ripetere l’operazione per gli atri utenti gruppi e degli utenti appena creati in Active Directory. 1. Ancora in Active Directory Users and Computers espandere la organizational unit Linux-Groups e fare doppio clic su uno dei gruppi di utenti creati (nel mio caso lx-grp001). 2. Nella finestra Properties selezionare il tab UNIX Attribute e impostate i valori dei campi come segue (Figura 11) a. NIS domain: nome del dominio Active Directory b. GID: un valore di GID appropriato (nel mio caso 10001) c. Members: inserire gli utenti che appartengono a questo gruppo usando il bottone Add Figura 12 Microsoft | Linux – Windows: prove di convivenza | PierGiorgio Malusardi 9
L’utente che funge da proxy per l’accesso ad Active NFS Sharing e selezionare Share this folder con le Directory dai computer Linux richiede una seguenti opzioni (Figura 13): configurazione diversa dagli altri utenti Linux: Sharename: winhome (o il nome che avete NIS domain: nome del dominio Active Directory inserito negli attributi UNIX degli utenti) (nel mio caso pgm) Encoding: ANSI UID: 499 (se non è già in uso) Anonymous UID: 65534 (corrisponde a Login shell: /sbin/nologin nfsnobody) Home directory: /dev/null Anonymous GID: 65534 (corrisponde a Queste impostazioni impediscono l’uso dell’utente nfsnobody) proxy (padl) per login locali sulle macchine Linux. Per l’impostazione della sicurezza degli accessi premere il bottone Permissions (Figura 14). Tenete presente che le impostazioni dei diritti d’accesso fatte Creazione delle home directory sul server a livello di NTFS sono per utente e più raffinate rispetto a quelle impostabili a livello di NFS. Windows Nella configurazione degli attributi UNIX degli utenti Active Directory abbiamo indicato, come home directory, /winhome/ invece dell’usuale /home/. Questa directory, di cui eseguiremo il mount all’avvio sulle macchine Linux, risiede sul server Windows ed è esportata dal servizio NFS installato su questo. Sul server Windows selezionate una partizione con sufficiente spazio per contenere i dati utente e create una directory con il nome che preferite (nel mio caso e:\winhome). Sotto questa directory create le directory con i nomi degli utenti che faranno login da Linux. Figura 14 Resta a questo punto da configurare il servizio NFS in esecuzione su Windows Server 2003 R2 perché usi Active Directory come store delle informazioni utente: 1. Da Start | Administrative tools lanciare la console di gestione Microsoft Service for NFS. 2. Nella finestra nfsmgmt - [Microsoft Service for NFS] fare clic con il tasto destro del mouse Figura 13 su Microsoft Service for NFS e scegliere Properties dal menù contestuale. Impostare la sicurezza NTFS delle diverse home 3. Nella finestra Microsoft Service for NFS directory in modo che solo il proprietario abbia diritto Properties inserire localhost (se il server NFS di accesso in lettura e scrittura e cambiate l’owner coincide con il Domain Controller, come nel delle directory assegnandole ai corretti utenti. mio caso) nel campo User Name Mapping Server e il nome del dominio Active Directory Per esportare con NFS la directory radice delle home (nel mio caso pgm.local) nel campo Active directory, fare clic con il tasto destro sulla stessa e Directory Domain dopo aver selezionato la selezionare, dal menù contestuale, Properties. Nella finestra Properties, scegliere il tab 10 PierGiorgio Malusardi | Linux – Windows: prove di convivenza | Microsoft
check box Active Directory Lookup (Figura a. Consideriamo come esempio il computer 15). Linux con nome host fc001.pgm.local e 4. Premere OK. l’utente host_fc001 con password Passw0rd appartenente al realm kerberos PGM.LOCAL b. Il comando da inserire da linea di comando per ottenere key table e mappatura è il seguente (su un’unica linea): ktpass –out c:\temp\fc001.keytab – pass Passw0rd –princ host/fc001.pgm.local@PGM.LOCAL – mapuser host_fc001 –ptype KRB5_NT_SRV_HST Useremo il file fc001.keytab appena creato sulla macchina Linux per consentire il logon della stessa al realm Kerberos. 5. Trasferire il file .keytab (fc001.keytab) sul computer Linux. Figura 15 ATTENZIONE Questo file contiene la chiave privata del Configurazione dei computer con computer Linux e quindi deve essere trasferito su questo in modo da garantirne la sicurezza. I file Linux contenenti le chiavi dei computer devono essere eliminati dopo l’uso o conservati in luogo sicuro. Configuriamo ora Linux per usare Active Directory come servizio di autenticazione (via Kerberos) e di autorizzazione (via LDAP) per gli utenti Linux. Il primo passo da compiere è inserire i computer Linux nel REALM Kerberos che vogliamo usare per l’autenticazione. Quest’operazione è nota, nel mondo Microsoft, come “join al dominio”. Join al dominio Active Directory del computer Linux Quest’operazione richiede l’esecuzione di alcuni passaggi sul server Windows e alcune operazioni sul computer Linux. Sul controllore di dominio Windows: 1. In Active Directory Users and Computers, creare nella OU Linux-Computers (o nella OU dove Figura 16 preferite siano gestiti i computer Linux) un nuovo Sul computer Linux: account utente (attenzione: usare un account 1. Usare i seguenti comandi per verificare che siano utente e non un account computer) usando la installati i pacchetti necessari al funzionamento di procedura vista in precedenza. Nei campi Full Kerberos lato client: name e User logon name inserite come nome #rpm –q krb5-workstation utente un valore simile a #rpm –q krb5-libs host_ (nel mio Se i pacchetti non sono installati, si deve caso host_fc001) e premete Next (Figura 16). provvedere alla loro installazione dal CD/DVD 2. Inserire e confermare una password adeguata, della distribuzione usata o da Internet. In Fedora selezionare l’opzione Password never expires, Core 6 sono presenti le versioni 1.5.7 di entrambi i cliccare Next e quindi Finish. pacchetti. 3. Verificate che il nome del computer Linux sia 2. Verificare che l’ora sul client Linux e sul server inserito nel DNS usato da Active Directory. Kerberos (il Domain Controller Windows Server 4. Lanciare una shell dei comandi e usare l’utility 2003) siano sincronizzate. ktpass (installata con i Support Tools) per creare 3. Modificare il file /etc/krb5 come indicato di un key table e una mappa tra il principal (utente seguito (utilizzando il nome del dominio AD/realm in termini Kerberos) del computer Linux e l’utente Kerberos e i nomi dei server realmente usati): appena creato in Active Directory: Microsoft | Linux – Windows: prove di convivenza | PierGiorgio Malusardi 11
[logging] Service principal default = FILE:/var/log/krb5libs.log krbtgt/PGM.LOCAL@PGM.LOCAL kdc = FILE:/var/log/krb5kdc.log renew until 01/10/07 16:45:20 admin_server = FILE:/var/log/kadmind.log Verificare la correttezza dei dati contenuti nella [libdefaults] key table con il comando default_realm = PGM.LOCAL # klist –k dns_lookup_realm = true Si dovrebbe ottenere come risposta un messaggio dns_lookup_kdc = true simile al seguente: ticket_lifetime = 24h Keytab name: FILE:/etc/krb5.keytab forwardable = yes KVNO Principal [realms] ---- ------------------------------ PGM.LOCAL = { kdc = dc001.pgm.local:88 3 host/fc001.pgm.local@PGM.LOCAL default_domain = pgm.local Quest’operazione conclude l’inserimento della } macchina Linux nel dominio Acitve Directory. Ci [domain_realm] restano ora da configurare i metodi di autenticazione *.pgm.local = PGM.LOCAL e di autorizzazione sulla macchina Linux per gli utenti .pgm.local = PGM.LOCAL creati in Active Directory. [kdc] profile = /var/kerberos/krb5kdc/kdc.conf Configurazione di Kerberos come servizio di [appdefaults] autenticazione pam = { Il controllo dei metodi di autenticazione è fatto debug = false attraverso i pluggable authentication module (PAM). ticket_lifetime = 36000 Su Fedora Core 6 i PAM si configurano attraverso file renew_lifetime = 36000 posti nella directory /etc/pam.d : esiste un file per forwardable = true ogni servizio e il nome file è identico al nome del krb4_convert = false servizio. I servizi che all’avvio non trovano in } /etc/pam.d un file con nome uguale a quello del 4. Spostare il file .keytab (nel mio caso servizio leggono il file system-auth (in realtà fc001.keytab) in /etc/krb5.keytab questo è un link a system-auth-ac). Molti dei file di configurazione PAM includono un riferimento a # mv fc001.keytab /etc/krb5.keytab system-auth per ereditare le configurazioni 5. Modificare il proprietario del file contenute in questo. Le linee presenti in questi file .keytab (nel mio caso fc001.keytab): definiscono un servizio (autenticazione, cambio # chown root /etc/krb5.keytab password, autorizzazione, …) e il modulo che esegue il 6. Modificare i permessi di accesso al file servizio stesso (es. pam_krb5 è il modulo che esegue .keytab in modo che sia accessibile l’autenticazione su un server Kerberos). È possibile che solo all’utente root: lo stesso servizio sia svolto da più moduli (es. l’autenticazione può essere svolta da pam_krb5 e da # chmod 600 /etc/krb5.keytab pam_unix). Per il nostro ambiente di test ci basterà 7. Usando uno degli account creati in Active configurare system-auth. Dato che non tutti gli Directory per il logon da computer Linux (nel mio utenti saranno presenti in Active Directory (per caso l’utente lx001), verificare la configurazione esempio l’utente root è bene che non lo sia) dovremo del client Kerberos con i seguenti comandi : inserire nel file di configurazione almeno due linee per # kinit lx001 il servizio di autenticazione: una per pam_krb5, impostato come sufficient, che precede quella per Alla richiesta di password per l’utente pam_unix. In questo modo è prima provata lx001@PGM.LOCAL inserire la password l’autenticazione su Kerberos e se questa va a buon impostata. fine, non viene tentata l’autenticazione locale. # klist I passaggi per effettuare manualmente la Se tutto correttamente si ottiene un messaggio configurazione dell’autenticazione verso un server simile al seguente: Kerberos sono i seguenti: Ticket cache: FILE:/tmp/krb5cc_0 1. Fare un copia di salvataggio del file Default principal: lx001@PGM.LOCAL /etc/system-auth-ac Valid starting # cd /etc/pam.d 01/09/07 16:45:20 # cp system-auth-ac system-auth-ac.old Expires 01/10/07 02:45:23 2. Modificare in modo che sia simile al seguente: 12 PierGiorgio Malusardi | Linux – Windows: prove di convivenza | Microsoft
%PAM-1.0 La configurazione del client LDAP è fatta modificando # This file is auto-generated. il file /etc/ldap.conf. Questo file contiene le # User changes will be destroyed the next impostazioni per diversi aspetti del funzionamento del time client LDAP, ma solo alcune delle opzioni devono # authconfig is run. essere modificate nel nostro scenario. auth required pam_env.so 2. Fare una copia di salvataggio del file ldap.conf auth sufficient pam_unix.so nullok | #cp /etc/ldap.conf /etc/ldap.conf.old try_first_pass auth requisite pam_succeed_if.so | 3. Modificare il file in modo che sia simile al uid >= 500 quiet seguente: auth sufficient pam_krb5.so # /etc/ldap.conf use_first_pass # File di configurazione per la libreria auth required pam_deny.so LDAP # nameservice switch e per il modulo PAM LDAP account required pam_unix.so broken_shadow # Pagine man: nss_ldap(5) e pam_ldap(5) account sufficient pam_succeed_if.so | # Server LDAP. Deve essere risolto senza uid < 500 quiet # usare account [default=bad success=ok | # LDAP. Possono essere indicate piu’ host, user_unknown=ignore] pam_krb5.so # separate da uno spazio account required pam_permit.so host dc001.pgm.local password requisite pam_cracklib.so | # Il distinguished name da cui iniziare la try_first_pass retry=3 # ricerca. password sufficient pam_unix.so md5 | base ou=Linux-OU,dc=pgm,dc=local shadow nullok try_first_pass | use_authtok # Altro modo per specificare il server password sufficient pam_krb5.so | # LDAP use_authtok uri ldap://dc001.pgm.local password required pam_deny.so session optional pam_keyinit.so revoke # Versione di LDAP da usare (default: 3) session required pam_limits.so ldap_version 3 session [success=1 default=ignore] | pam_succeed_if.so service in crond | # Utente usato per la connessione al quiet use_uid # server session required pam_unix.so # Opzionale: il default è un bind anonimo session optional pam_krb5.so binddn cn=padl,cn=Users,dc=pgm,dc=local ATTENZIONE # La password dell’utente usato per la Il simbolo | a fine linea indica che la linea # connessione al server successiva è la continuazione di quella corrente bindpw Passw0rd # La porta del servizio LDAP. Configurazione di LDAP come servizio di # Opzionale: default è 389. autorizzazione e store delle informazioni port 389 utente # Range della ricerca. (Opzioni: sub, one, Il penultimo passaggio è configurare sulla macchina # base) Linux il client LDAP in modo che usi il Domain scope sub Controller di Active Directory come server LDAP in cui trovare i dati utente e i dati di autorizzazione. # Limite di tempo per le ricerche I passaggi da eseguire sono i seguenti: timelimit 120 1. Verificare che il supporto a LDAP sia installato: #rpm –q openldap-clients # Limite di tempo per bind e connect #openldap-clients-2.3.27-4 bind_timelimit 120 Se openldap-clients non fosse installato, si deve provvedere alla sua installazione dal CD/DVD # Limite di Idle; il client chiude le della distribuzione in uso o da internet. # connessioni se il server non viene # contattato Microsoft | Linux – Windows: prove di convivenza | PierGiorgio Malusardi 13
# entro il tempo indicato (solo nss_ldap) networks: files idle_timelimit 3600 protocols: files ldap rpc: files # UID minimo e massimo consentiti come services: files ldap # utenti nel server LDAP netgroup: files ldap pam_min_uid 500 publickey: nisplus automount: files ldap # Aggiorna le password in Active Directory aliases: files nisplus # creando una Unicode password e Questo file è usato per configurare il servizio NSS # modificando l’attributo unicodePwd. in modo che, analogamente ai moduli PAM, sia in pam_password ad grado di usare diverse sorgenti di dati per le diverse funzioni. # Mappe per RFC 2307 (AD) 7. Riavviare il servizio Name Service Caching nss_map_objectclass posixAccount user Daemon (nscd). Questo servizio mantiene in nss_map_objectclass shadowAccount user cache i dati recuperati da Active Directory (server nss_map_attribute uid sAMAccountName LDAP) in modo da accelerare l’accesso ai dati in nss_map_attribute uidNumber uidNumber caso di richieste duplicate. nss_map_attribute gidNumber gidNumber # /etc/rc.d/init.d/nscd restart nss_map_attribute loginShell loginShell oppure nss_map_attribute gecos name # service nscd restart nss_map_attribute homeDirectory | unixHomeDirectory Test della connettività verso il Domain nss_map_attribute shadowLastChange | Controller Active Directory come server pwdLastSet LDAP nss_map_objectclass posixGroup group Prima di effettuare l’ultima configurazione sul nss_map_attribute uniqueMember member computer Linux, la configurazione del mount delle nss_map_attribute cn sAMAccountName home directory, eseguiamo un test della connettività pam_login_attribute sAMAccountName ad Active Directory come server LDAP. pam_filter objectclass=User 1. Da una shell eseguire il comando (su un’unica pam_password ad riga): # ldapsearch –x -h 10.9.8.1 -D ATTENZIONE cn=padl,cn=Users,dc=pgm,dc=local -w Il simbolo | a fine linea indica che la linea Passw0rd –b ou=Linux-OU,dc=pgm,dc=local -s successiva è la continuazione di quella corrente sub '(cn=lx003)' 4. Modificare il proprietario e diritti di accesso del Sostituite nella linea di commando il distinguished file name dell’utente usato per la connessione ad /etc/ldap.conf: Active Directory (parametro -D), la relativa # chown nscd /etc/ldap.conf password (parametro -w), il distinguished name # chmod 600 /etc/ldap.conf del percorso da cui iniziare le ricerche (parametro -b) e l’oggetto da ricercare (parametro -s) che nel 5. Fare una copia di salvataggio del file mio caso è l’utente lx003. /etc/nsswitch.conf Se la connessione al server LDAP funziona #cp /etc/nsswitch.conf correttamente, si ottiene come risposta qualcosa /etc/nsswitch.conf.old di simile a quanto segue: 6. Modificare il file /etc/nsswitch.conf in # extended LDIF modo che sia simile al seguente: # # /etc/nsswitch.conf # LDAPv3 # File di configurazione per # base with # Name Service Switch # scope subtree passwd: files ldap [TRYAGAIN=continue] # filter: (cn=lx003) shadow: files ldap # requesting: ALL group: files ldap [TRYAGAIN=continue] # hosts: files dns # lx003, Linux-Users, Linux-OU, pgm.local bootparams: nisplus [NOTFOUND=return] | dn: CN=lx003,OU=Linux-Users,OU=Linux- files OU,DC=pgm,DC=local ethers: files objectClass: top netmasks: files objectClass: person 14 PierGiorgio Malusardi | Linux – Windows: prove di convivenza | Microsoft
objectClass: organizationalPerson objectClass: user cn: lx003 givenName: lx003 distinguishedName: CN=lx003,OU=Linux- Users,OU=Linux-OU,DC=pgm,DC=local instanceType: 4 whenCreated: 20061227184310.0Z whenChanged: 20061228154436.0Z displayName: lx003 uSNCreated: 65579 uSNChanged: 65643 name: lx003 objectGUID:: cvEGVgZdWkWcEFdS5Jg9Sg== Figura 17 userAccountControl: 66048 badPwdCount: 0 codePage: 0 countryCode: 0 badPasswordTime: 0 lastLogoff: 0 lastLogon: 0 pwdLastSet: 128117185909999673 primaryGroupID: 513 objectSid:: AQUAAAAAAAUVAAAAfYUl6NCn553gm9nTXwQAAA== accountExpires: 9223372036854775807 logonCount: 0 sAMAccountName: lx003 sAMAccountType: 805306368 userPrincipalName: lx003@pgm.local Figura 18 objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=pg m,DC=local Configurazione del mount delle home uid: lx003 directory create sul Domain Controller msSFU30Name: lx003 Active Directory msSFU30NisDomain: pgm Per eseguire il mount automatico dello share NFS sulla macchina msSFU30PosixMemberOf: CN=lx- grp001,OU=Linux-Groups,OU=Linux- Linux OU,DC=pgm,DC=local 1. modificare il file /etc/fstab inserendo una riga uidNumber: 20003 simile alla seguente: gidNumber: 10001 dc001.pgm.local:winhome /winhome nfs unixHomeDirectory: /winhome/lx003 2. creare una directory per il mount del file system loginShell: /bin/bash nfs dedicato alle home directory degli utenti # search result definite in Active Directory (nel mio caso la search: 2 directory /winhome) result: 0 Success A questo punto la configurazione del computer Linux è # numResponses: 2 terminata ed è possibile fare logon da questa # numEntries: 1 macchina con qualsiasi utente definito in Active Directory. In Fedora Core 6 è possibile utilizzare il tool system- config-authentication per abilitare e PierGiorgio Malusardi configurare l’autenticazione verso un server Kerberos e l’autorizzazione verso un server LDAP (nel nostro caso il controllore di dominio Windows Server 2003 R2) come indicato nelle figure 17 e 18. Il tool system-config-authentication si preoccupa di modificare i file /etc/nsswitch.conf, /etc/pam.d/system-auth-ac e parzialmente i file /etc/krb5.conf e /etc/pam.d. Microsoft | Linux – Windows: prove di convivenza | PierGiorgio Malusardi 15
Riferimenti Download dei http://www.microsoft.com/downloads/details.aspx?familyid=896C9688-601B-44F1-81A4- Service for UNIX 3.5 02878FF11778&displaylang=en Tool UNIX per http://www.interopsystems.com/ Windows Windows Security http://www.microsoft.com/technet/solutionaccelerators/cits/interopmigration/unix/usecdir and Directory Service w/00wsdsu.mspx for UNIX – v.1 16 PierGiorgio Malusardi | Linux – Windows: prove di convivenza | Microsoft
Puoi anche leggere