<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mia mamma usa Linux! &#187; Integrazione Active Directory</title>
	<atom:link href="http://www.miamammausalinux.org/tag/integrazione-active-directory/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.miamammausalinux.org</link>
	<description>Perché niente è impossibile da capire... Se lo spieghi bene !</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:03:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Samba e Active Directory (3 di 3): configurare pam per l&#8217;autenticazione locale</title>
		<link>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/</link>
		<comments>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/#comments</comments>
		<pubDate>Fri, 15 May 2009 15:40:00 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Condivisione dati]]></category>
		<category><![CDATA[Integrazione Active Directory]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=628</guid>
		<description><![CDATA[Nel precedente articolo sono stati illustrati i metodi per effettuare delle interrogazioni ad un dominio Active Directory attraverso una macchina Linux al cui interno è configurato SAMBA. Nell&#8217;ultimo esempio illustrato l&#8217;esito dell&#8217;interrogazione presentava un elenco del tutto simile al contenuto del file /etc/passwd che in ogni sistema Linux contiene le informazioni di accesso degli utenti. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" class="alignnone size-full wp-image-196" /></p>
<p>Nel precedente articolo sono stati illustrati i metodi per effettuare delle interrogazioni ad un dominio Active Directory attraverso una macchina Linux al cui interno è configurato SAMBA. Nell&#8217;ultimo esempio illustrato l&#8217;esito dell&#8217;interrogazione presentava un elenco del tutto simile al contenuto del file <em>/etc/passwd</em> che in ogni sistema Linux contiene le informazioni di accesso degli utenti. La riflessione nata spontaneamente è quindi se si può fare in modo che il sistema sia configurato per supportare l&#8217;autenticazione via Active Directory in fase di login. La riposta è sì, ecco spiegato come.</p>
<p><strong>Condividere una cartella</strong></p>
<p>La configurazione illustrata nel primo articolo della serie consente di autenticare l&#8217;accesso a cartelle condivise mediante le credenziali presenti nel Active Directory.<br />
Per condividere una cartella è sufficiente aggiungere al file di configurazione di SAMBA <em>/etc/samba/smb.conf</em> una dichiarazione come la seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[Test]
        comment = Test
        path = /samba/test
        write list = DOMINIO.IT/user1
        read list = @&quot;DOMINIO.ITgruop1&quot;
        read only = Yes
        browseable = Yes
        create mask = 0775
        directory mask = 0775</pre></div></div>

<p>dopo aver effettuato il <em>reload</em> del servizio attraverso il comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/samba reload</pre></div></div>

<p>la directory, supponendo che l&#8217;indirizzo IP della macchina sia 192.168.0.100, sarà disponibile per l&#8217;accesso dalla rete all&#8217;indirizzo <em>//192.168.0.100/Test</em>. L&#8217;utente <em>DOMINIO.ITuser1</em> (così andrà digitato alla schermata di login) avrà il permesso di scrittura mentre tutti gli utenti del gruppo <em>DOMINIO.ITgroup1</em> potranno accedere in lettura alla condivisione.</p>
<p>Ma questa è solo la punta dell&#8217;iceberg. Come già detto, la configurazione di SAMBA permette di sfruttare il metodo di autenticazione in modo che il sistema stesso in fase di login si riferisca al dominio Active Directory.</p>
<p><strong>PAM, brevemente</strong></p>
<p>PAM (Pluggable Authentication Modules) definisce un metodo standard ad alto livello per gestire l&#8217;autenticazione. Questo strato è comune a tutti i sistemi Linux (sebbene le varie versioni non operino tutte allo stesso modo) e consente a coloro i quali sviluppano servizi con autenticazioni proprie di creare moduli che rispettino l&#8217;interfaccia di programmazione relativa a PAM.<br />
In questo modo, potenzialmente, qualunque sistema di autenticazione può essere integrato con il login di sistema.<br />
Una panoramica dettagliata di quello che è PAM e di come funziona è disponibile presso Kernel.org, precisamente a questo link: <a href="http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html">http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html</a>.</p>
<p><strong>Integrazione di winbind con PAM per il login via Active Directory</strong></p>
<p>La configurazione di PAM all&#8217;interno del sistema è contenuta in una serie di file, in <em>Debian Lenny</em>, la distribuzione utilizzata in questa serie di articoli, tali file si trovano nella cartella <em>/etc/pam.d</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ls -1 /etc/pam.d/
chfn
chsh
common-account
common-auth
common-password
common-session
cron
login
omauth
other
passwd
samba
ssh
su</pre></div></div>

<p>In particolare i file interessati nella fase di login sono <em>common-account</em>, <em>common-auth</em> e <em>common-session</em>.</p>
<p>La componente SAMBA che gestisce l&#8217;interfacciamento con Active Directory è, come già spiegato, <em>winbind</em>. Il pacchetto fornito con le maggiori distribuzioni fornisce, fra gli altri, quello che è il file base per l&#8217;introduzione di Active Directory nel login di sistema: pam_winbind.so. Tale file dovrà essere introdotto all&#8217;interno della configurazione del sistema di login.</p>
<p>Il primo file ad essere modificato dovrà essere <em>/etc/pam.d/common-account</em> il cui contenuto dovrà essere il seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">account sufficient      pam_winbind.so
account required        pam_unix.so</pre></div></div>

<p>Questo file di default controlla che la password dell&#8217;utente non sia scaduta. Con l&#8217;aggiunta della riga relativa a winbind inoltre assume come sufficiente la credenziale verificata da Active Directory.</p>
<p>Il secondo file da considerare sarà <em>/etc/pam.d/common-auth</em> che di default impone l&#8217;utilizzo del meccanismo UNIX standard per l&#8217;autenticazione. Tale file dovrà assumere questo contenuto:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">auth    sufficient      pam_winbind.so
auth    required        pam_unix.so nullok_secure use_first_pass</pre></div></div>

<p>Quanto inserito comunica al sistema di considerare sufficiente l&#8217;avvenuta autenticazione con <em>winbind</em>. Nella seconda riga viene aggiunto il parametro <em>use_first_pass</em> in modo che venga utilizzata la prima password inserita per autenticare l&#8217;utente e prevenire una doppia richiesta di inserimento per la parola d&#8217;ordine.</p>
<p>L&#8217;ultimo file che andrà modificato è <em>/etc/pam.d/common-session</em> che contiene le informazioni relative alle sessioni interattive e non che l&#8217;utente potrà avviare:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">session required        pam_unix.so
session required        pam_mkhomedir.so skel=/etc/skel umask=0022</pre></div></div>

<p>rispetto al default viene aggiunta la riga relativa al modulo <em>pam_mkhomedir.so</em> per fare in modo che il sistema per ogni utente identificato che non possiede una <em>home directory</em> ne crei una ex-novo partendo dalle specifiche presenti nel file di <em>/etc/skel</em> con i permessi di scrittura relativi.</p>
<p><strong>Prova di login</strong></p>
<p>A questo punto il sistema è pronto a permettere il login alle utenze Active Directory, relativamente a tutti i servizi, compreso ssh:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ssh &quot;DOMINIO.IT\user1&quot;@192.168.0.100
DOMINIO.ITuser1@192.168.0.100's password: 
Creating directory '/home/DOMINIO.IT/user1'.
Linux anomalia 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686
&nbsp;
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
&nbsp;
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
DOMINIO.IT\user1@anomalia:~$</pre></div></div>

<p>Essendo il primo tentativo di login effettuato e data la configurazione PAM precedentemente illustrata, il sistema ha creato la directory <em>/home/DOMINIO.IT/user1</em>.<br />
Nella cartella <em>/home/DOMINIO.IT</em> verranno pertanto registrate tutte le <em>home directories</em> relative agli utenti:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ls -la /home/DOMINIO.IT/
totale 12
drwxr-xr-x 3 root                    root                             4096  9 apr 17:32 .
drwxr-xr-x 3 root                    root                             4096  9 apr 17:32 ..
drwxr-xr-x 2 DOMINIO.IT\user1 DOMINIO.IT\domain users 4096  9 apr 17:32 user1</pre></div></div>

<p>L&#8217;accesso al sistema degli utenti Active Directory è garantito nella stessa medesima forma degli utenti di sistema standard.</p>
<p><strong>Conclusioni</strong></p>
<p>Questa panoramica di SAMBA ha voluto illustrare quello che è lo stato dell&#8217;arte dell&#8217;integrazione tra SAMBA e Microsoft Active Directory ad oggi, ma moltissime sono le novità che bollono in pentola dal team di sviluppo del progetto Samba. La versione 4 è ormai una realtà e sebbene la strada verso la prima release stabile sia lunga, le aspettative in merito sono altissime. Questa versione sarà la prima ad integrare la completa gestione di Active Directory ed un&#8217;altra serie di importanti novità che potranno, perché no, essere argomento di un prossimo articolo.</p>
<p><strong>Articoli della serie</strong></p>
<p>Samba e Active Directory (1 di 3): <a href="http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/">diventare parte di un Dominio</a><br />
Samba e Active Directory (2 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/">interrogare il dominio</a><br />
Samba e Active Directory (3 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/">configurare pam per l&#8217;autenticazione locale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>Samba e Active Directory (2 di 3): interrogare il dominio</title>
		<link>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/</link>
		<comments>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/#comments</comments>
		<pubDate>Wed, 06 May 2009 09:50:26 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Generale]]></category>
		<category><![CDATA[Condivisione dati]]></category>
		<category><![CDATA[Integrazione Active Directory]]></category>
		<category><![CDATA[Samba]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=616</guid>
		<description><![CDATA[Dopo aver introdotto Active Directory ed aver configurato SAMBA per l&#8217;integrazione con un dominio vengono affrontati in questa seconda puntata i metodi per l&#8217;interrogazione dei domini: come ricavare le informazioni sugli utenti ed i gruppi, come accedere ad un computer di dominio ed eseguirvi un comando. Il tutto attraverso gli strumenti offerti da SAMBA, dalla [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" class="alignnone size-full wp-image-196" /></p>
<p>Dopo aver introdotto Active Directory ed aver configurato SAMBA per l&#8217;integrazione con un dominio vengono affrontati in questa seconda puntata i metodi per l&#8217;interrogazione dei domini: come ricavare le informazioni sugli utenti ed i gruppi, come accedere ad un computer di dominio ed eseguirvi un comando.<br />
Il tutto attraverso gli strumenti offerti da SAMBA, dalla linea di comando.</p>
<p><strong>Interrogazioni</strong></p>
<p>Tra gli strumenti che samba mette a disposizione dalla linea di comando per l&#8217;interrogazione delle varie componenti del dominio ne verranno analizzati tre: <em>net</em>, già utilizzato nel precedente articolo per aggiungere la macchina al dominio, <em>smbclient</em>, un&#8217;interfaccia simile a quella di <em>FTP</em> ma utilizzabile per accedere a condivisioni <em>Microsoft Windows</em> e <em>wbinfo</em>, programma che interroga il demone <em>winbind</em>, la componente si SAMBA che si interfaccia con il servizio <em>Active Directory</em>.</p>
<p><strong>net</strong></p>
<p>l&#8217;opzione <em>user</em> del comando <em>net</em> associata alla specifica di <em>-l</em> consente di ricavare l&#8217;elenco utenti del dominio specificato nel file di configurazione di SAMBA:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net -U Administrator ads user -l
Enter Administrator's password:
&nbsp;
User name             Comment
-----------------------------
user1                 Utente di test #1
Guest                 Built-in account for guest access to the computer/domain
...
...</pre></div></div>

<p>Allo stesso modo specificando l&#8217;opzione <em>group</em> è possibile ottenere l&#8217;elenco gruppi:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net -U Administrator ads group -l
Enter Administrator's password:
&nbsp;
Group name            Comment
-----------------------------
Exchange Servers      This group contains all the Exchange servers. This group should not be deleted.
Exchange Organization Users in this group will have permission to read and modify all Exchange configuration. This group should not be deleted.
Exchange Recipient Ad Users in this group can manage Exchange user attributes in the Active Directory and perform select mailbox operations. This group should not be deleted.
...
...</pre></div></div>

<p><em>net</em> permette anche di creare, cancellare e rinominare utenti e gruppi, ad esempio per creare il gruppo test_group il comando sarà:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net -U Administrator ads group ADD test_group
Administrator's password: 
Group test_group added</pre></div></div>

<p>Parallelamente un utente potrà esser creato come segue:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net -U Administrator ads user ADD test_user
Administrator's password: 
User test_user added</pre></div></div>

<p>Purtroppo net non consente ancora di operare sull&#8217;appartenenza dei gruppi, che è prevista nelle versioni future di SAMBA. Tutti le opzioni disponibili possono essere visionate nella man page del comando accessibile digitando <em>man net</em>.</p>
<p><strong>smbclient con il ticket KERBEROS</strong></p>
<p>Il tool <em>smbclient</em> offre un&#8217;interfaccia testuale con comandi simili a quelli <em>ftp</em> attraverso i quali è possibile interrogare ed agire su cartelle relative a condivisioni di tipo SMB/CIFS (cioè Microsoft Windows). Se già da questo punto di vista lo strumento appare subito utilissimo esiste un ulteriore vantaggio che lo rende indispensabile per le architetture Linux integrate con Active Directory: infatti smbclient può utilizzare l&#8217;autenticazione KERBEROS descritta nel precedente articolo per connettersi ai servizi remoti.<br />
Prima di presentare gli esempi di utilizzo è quindi necessario fare acquisire al sistema il <em>ticket</em> KERBEROS attraverso il comando <em>kinit</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ kinit -V Administrator@DOMINIO.IT
Password for Administrator@DOMINIO.IT:
Authenticated to Kerberos v5</pre></div></div>

<p>Il sistema è quindi in possesso della verifica necessaria per presentarsi ai servizi remoti. Utilizzando l&#8217;opzione <em>-k</em> di smbclient è possibile ad esempio sfogliare un computer di dominio del quale si conosce l&#8217;indirizzo IP o il nome. Nel nostro caso il sistema si chiama <em>Test-win03</em> e l&#8217;invocazione di smbclient con i parametri utilizzati elencherà tutte le condivisioni disponibili sul server pubblico Microsoft:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ smbclient -k -L Test-win03
OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
&nbsp;
       Sharename           Type      Comment
       ---------           ----       -------
       print$              Disk       Driver della stampante
       C$                  Disk       Condivisione predefinita
       IPC$                IPC        IPC remoto
       ADMIN$              Disk      Amministrazione remota
       HPLaserJ            Printer   HP LaserJet 4100 Series PS
       musica              Disk      
OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
&nbsp;
	Server               Comment
	---------            -------
&nbsp;
	Workgroup            Master
	---------            -------</pre></div></div>

<p>L&#8217;output del comando mostra quali condivisioni sono disponibili sul server remoto, su queste è quindi possibile eseguire dei comandi. Ad esempio per effettuare il listato del contenuto della cartella <em>musica</em> è possibile invocare smbclient in questa forma:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ smbclient -k //Test-win03/musica -c &quot;ls&quot;
OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
  .                                   D        0  Mon Feb 16 17:13:06 2009
  ..                                  D        0  Mon Feb 16 17:13:06 2009
  Cartoni Animati                     D        0  Mon May 19 13:39:51 2008
  Collaborazioni                      D        0  Mon Feb 16 11:17:12 2009
  Cover                               D        0  Thu Dec 18 16:04:02 2008
...
...</pre></div></div>

<p>smbclient dispone inoltre di una shell, in tutto e per tutto simile ad una shell di tipo ftp. Per accedervi è sufficiente invocare smbclient senza altri paramente che il già citato <em>-k</em> ed il nome della macchina seguito dalla cartella:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ smbclient //Test-win03/musica -k
OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: &gt;</pre></div></div>

<p>I comandi disponibili nell&#8217;interfaccia si ottengono digitando <em>help</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">smb: &gt;help
?              altname        archive        blocksize      cancel         
case_sensitive cd             chmod          chown          del            
dir            du             exit           get            getfacl        
hardlink       help           history        lcd            link           
lowercase      ls             mask           md             mget           
mkdir          more           mput           newer          open           
print          prompt         put            pwd            q              
queue          quit           rd             recurse        reget          
rename         reput          rm             rmdir          showacls       
setmode        stat           symlink        tar            tarmode        
translate      volume         vuid           logon          listconnect    
showconnect    !</pre></div></div>

<p>Altre informazioni utili su smbclient sono ottenibili attraverso la <em>man page</em> (<em>man smbclient</em>) del programma.</p>
<p><strong>wbinfo</strong></p>
<p>L&#8217;ultimo comando illustrato è <em>wbinfo</em> che come anticipato permette di interrogare il demone <em>winbind</em> responsabile delle comunicazione tra SAMBA ed <em>Active Directory</em> e l&#8217;integrazione dei due sistemi. In particolare il demone si occupa di effettuare il <em>mapping</em> delle utenze, di associare cioè l&#8217;identificativo univoco presente sul dominio ad un identificativo univoco LOCALE alla macchina SAMBA.<br />
Per capire quanto illustrato, si osservi il seguente comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ for i in `wbinfo -u --domain=DOMINIO.IT`; do wbinfo -i &quot;$i&quot;; done
DOMINIO.ITuser1:*:10000:10004:User 1:/home/DOMINIO.IT/user1:/bin/bash
DOMINIO.ITuser2:*:10001:10004:User 2:/home/DOMINIO.IT/user2:/bin/bash
DOMINIO.ITuser3:*:10002:10004:User 3:/home/DOMINIO.IT/user3:/bin/bash
DOMINIO.ITuser4:*:10003:10004:User 4:/home/DOMINIO.IT/user4:/bin/bash
...
...</pre></div></div>

<p>L&#8217;elenco ricavato dal comando è del tutto simile a quanto contenuto nel file <em>/etc/passwd</em> di sistema, ad ogni utenza è infatti associato un identificativo univoco, un gruppo, una <em>home dir</em> ed una shell di login.<br />
Anche in questo caso tutte le opzioni disponibili per il comando <em>wbinfo</em> sono disponibili nella <em>man page</em> (<em>man wbinfo</em>).</p>
<p><strong>Conclusioni</strong></p>
<p>L&#8217;esito dell&#8217;ultimo comando illustrato introduce quello che sarà l&#8217;argomento della prossima ed ultima puntata di questa serie: l&#8217;integrazione di <em>Active Directory</em> con il login di sistema attraverso la configurazione di <em>PAM</em>.</p>
<p><strong>Articoli della serie</strong></p>
<p>Samba e Active Directory (1 di 3): <a href="http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/">diventare parte di un Dominio</a><br />
Samba e Active Directory (2 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/">interrogare il dominio</a><br />
Samba e Active Directory (3 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/">configurare pam per l&#8217;autenticazione locale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Samba e Active Directory (1 di 3): diventare parte di un Dominio</title>
		<link>http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/</link>
		<comments>http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 15:00:15 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Condivisione dati]]></category>
		<category><![CDATA[Integrazione Active Directory]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=585</guid>
		<description><![CDATA[In questa serie di tre articoli verrà affrontata l&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" class="alignnone size-full wp-image-196" /></p>
<p>In questa serie di tre articoli verrà affrontata l&#8217;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&#8217;accesso vengano effettuate attraverso il dominio.<br />
Nella prima parte oltre ad un&#8217;introduzione su Active Directory verrà trattata la configurazione di SAMBA per l&#8217;integrazione con un dominio.</p>
<p><strong>Cos&#8217;è Active Directory</strong></p>
<p><a href="http://it.wikipedia.org/wiki/Active_Directory">Active Directory</a> di Microsoft Windows è ormai l&#8217;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.<br />
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 <a href="http://it.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">LDAP</a> opportunamente personalizzato da Microsoft, la risoluzione dei nomi è affidata al servizio DNS interno ai server Active Directory.<br />
La componente base di Active Directory è il protocollo <a href="http://it.wikipedia.org/wiki/Kerberos">Kerberos</a>, che permette di autenticarsi in maniera cifrata.<br />
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 <a href="http://it.wikipedia.org/wiki/Single_Sign-On">SSO</a> o <a href="http://it.wikipedia.org/wiki/Single_Sign-On">Single Sign-On</a>.</p>
<p><strong>Configurazione del sistema</strong></p>
<p>Il sistema che viene configurato nell&#8217;esempio parte da questi presupposti: il dominio Active Directory è <em>DOMINIO.IT</em> ed è erogato da tre server <em>adserver1.dominio.it</em>, <em>adserver2.dominio.it</em> ed <em>adserver3.dominio.it</em>. Si parte dal presupposto che si disponga di un&#8217;utenza amministrativa (<em>Administrator</em>) o comunque di un&#8217;utenza che abbia i permessi di aggiungere computer al dominio. Il server SAMBA configurato sarà appunto un computer aggiunto al dominio <em>DOMINIO.IT</em>.</p>
<p><strong>Installazione KERBEROS</strong></p>
<p>Per far funzionare Kerberos su un sistema Linux (in questo caso, come detto, Debian Lenny) è sufficiente il pacchetto <em>krb5-user</em>. Tale pacchetto contiene tutti gli eseguibili necessari all&#8217;interfacciamento con i server di autenticazione. Inoltre, per completezza, è conveniente installare anche il pacchetto <em>krb5-config</em> contenente un template relativo ai file di configurazione e <em>krb5-doc</em> che contiene la documentazione completa del funzionamento di Kerberos sotto Linux:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install krb5-user krb5-config krb5-doc</pre></div></div>

<p>Il file di configurazione <em>/etc/krb5.conf</em> contiene le impostazioni necessarie al collegamento con il (o &#8220;i&#8221;) server di autenticazione e, pertanto, dovrà contenere le informazioni ad essi associate:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[libdefaults]
        default_realm = DOMINIO.IT
&nbsp;
[realms]
        DOMINIO.IT = {
                kdc = adserver1.dominio.it
                kdc = adserver2.dominio.it
                kdc = adserver3.dominio.it
                admin_server = adserver1.dominio.it
                  }</pre></div></div>

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

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ man krb5.conf</pre></div></div>

<p>A completamento della configurazione sono necessarie due ulteriori operazioni, la prima è l&#8217;aggiunta dei server dichiarati nel file <em>krb5.conf</em> nel file hosts:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># ADs Servers
192.168.0.1    adserver1.dominio.it
192.168.0.2    adserver2.dominio.it
192.168.0.3    adserver3.dominio.it</pre></div></div>

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

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ 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</pre></div></div>

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

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ kinit -V Administrator@DOMINIO.IT
Password for Administrator@DOMINIO.IT:
Authenticated to Kerberos v5</pre></div></div>

<p>Se il messaggio restituito dal comando è &#8220;Authenticated to Kerberos v5&#8243;, allora tutto è andato come da pronostico. In alternativa sarà necessario controllare la bontà dei dati inseriti e rilanciare il comando.</p>
<p><strong>Installazione SAMBA e Winbind</strong></p>
<p>Il secondo componente da configurare per l&#8217;attuazione del progetto è SAMBA insieme alla parte che si occupa di interfacciarsi con i server Microsoft Windows per il reperimento delle informazioni di dominio:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install samba smbclient smbfs winbind</pre></div></div>

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

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[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</pre></div></div>

<p>La configurazione al di là delle opzioni ininfluenti per il progetto, prevede i seguenti parametri:</p>
<ol>
<li><em>realm</em>: il dominio active directory DOMINIO.IT;</li>
<li><em>security</em>: il tipo di funzionamento che SAMBA deve assumere, che è &#8220;ADS&#8221; (Active Directory);</li>
<li><em>auth methods</em>: i metodi di autenticazione che sono guest (ospite), sam (il database standard delle utenze SAMBA) e winbind (attraverso Microsoft Windows);</li>
<li><em>password server</em>: i server presso i quali autenticarsi (identici a quelli dichiarati per Kerberos);</li>
<li><em>idmap uid</em> e <em>idmap gid</em>: gli identificativi di partenza con cui mappare le utenze lette dai server Windows, in modo che a queste utenze possano essere assegnati permessi locali;</li>
<li><em>reset on zero vc</em>: indica al sistema di resettare una connessione se ne subentra un&#8217;altra dallo stesso indirizzo IP. Quest&#8217;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;</li>
</ol>
<p>Prima di avviare il servizio SAMBA è necessaria una variazione al file <em>/etc/nsswitch.conf</em> in modo da indicare al sistema che i dati per le autenticazioni possono essere ricercati oltre che nei file locali, anche nel server <em>winbind</em>, pertanto le righe corrispondenti a queste informazioni andranno variate come indicato di seguito:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">passwd:         compat winbind
group:          compat winbind
...
hosts:          files dns wins</pre></div></div>

<p>A questo punto dopo il riavvio dei servizi appena configurati:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /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.</pre></div></div>

<p>Si potrà includere il server all&#8217;interno del dominio utilizzando il comando <em>net</em> per eseguire l&#8217;operazione di <em>join</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- DOMINIO
Joined 'ANOMALIA' to realm 'dominio.it'</pre></div></div>

<p>L&#8217;output del comando conferma che il server ora è parte del dominio. Un&#8217;ulteriore verifica è effettuabile sempre attraverso il comando <em>net</em> mediante l&#8217;utilizzo dell&#8217;opzione <em>info</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ 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</pre></div></div>

<p><strong>Conclusioni</strong></p>
<p>Nella prossima puntata verranno illustrate le tecniche per interrogare le risorse ed accedervi.</p>
<p><strong>Articoli della serie</strong></p>
<p>Samba e Active Directory (1 di 3): <a href="http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/">diventare parte di un Dominio</a><br />
Samba e Active Directory (2 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/">interrogare il dominio</a><br />
Samba e Active Directory (3 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/">configurare pam per l&#8217;autenticazione locale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
