Samba 3 PDC per Automatica


Il seguente documento presenta quanto è stato realizzato per l'installazione di un server Samba come Primary Domain Controller in una rete con macchine Windows XP Professional. Trattandosi di un Samba PDC i client Windows XP devono per forza essere Professional per accedere al dominio, quelli Home non sono in grado di effettuare il login.
L'obiettivo è quello di installare un sistema centralizzato per la gestione degli utenti con la possibilità di controllare tutto lato client, questo implicherà l'utilizzo di un front end grafico per la gestione remota del server dalla macchine Windows.

Installazione

Il primo approccio è stato effettuato sulla versione 2.0 di Samba, obsoleta e soprattutto priva di una funzionalità importante per un PDC: la registrazione dell'account macchina in automatico al login nel dominio. Per far funzionare Samba come PDC è necessario infatti registrare tutte le macchine che si connettono al dominio come utenti speciali, questo poichè Samba gira come un processo Unix sul server. Questa nuova caratteristica presente solo in Samba 3 consente la registrazione automatica di una macchina che si unisce al dominio attraverso un add machine script che gira sul server, evitando ulteriore lavoro all'amministratore di rete e nel nostro caso perseguendo l'obiettivo finale del progetto: la gestione remota centralizzata.
In base a quanto detto si è deciso di installare l'ultima release stabile Samba 3.0.14a su Debian con kernel  2.6.8; si è inoltre installato il front end grafico per la gestione remota SWAT.
Una volta installato, SWAT è stato abilitato modificando i file seguenti nel modo illustrato:

/etc/services
swat    901/tcp

/etc/inetd.conf
swat   stream   tcp   nowait.400   root   /user/sbin/tcpd /usr/sbin/swat

Configurazione /etc/samba/smb.conf

L'installazione non richiede particolari accorgimenti, ringraziando Debian si può utilizzare apt-get:

apt-get update
apt-get install samba
apt-get install swat

Il funzionamento del server è interamente basato sulla configurazione del file /etc/samba/smb.conf che in questo caso è stato modificato mediante il tool SWAT, l'unica controindicazione di SWAT è che elimina tutti i commenti in smb.conf.
Analizziamo ora nello specifico i parametri che sono stati impostati:

[global]
workgroup =  AUTOMATICA_PDC    Imposta il nome del dominio
netbios name =  PC1   Imposta il nome netbios del server
server string = AUTOMATICA - PDC   E' la descrizione del server
socket options =  TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192   Sono dei parametri di ottimizzazione per velocizzare il server
os level = 255   Imposta il valore del server nella elezione del Master Browser, con questo valore si è sicuri di vincere
preferred master = yes   Forza una elezione quando si avvia il server e vi partecipa con maggiori possibilità di successo
local master = yes   Fa partecipare alle elezioni per il Local Master Browser
domain master = yes   Fa lavorare Samba come PDC
security = user   Impone di autenticare gli utenti localmente, necessario per un PDC
encrypt passwords = yes Cripta login e password in fase di login, obbligatorio su un PDC e necessario per interagire correttamente con client Windows NT e successivi
domain logons = yes   Al momento del login sul dominio i client si devono autenticare
host allow =  127.0.0.1, 160.78.28.0/24   Consente l'accesso solo al localhost ed a tutte le macchine della rete 160.78.28.0/24
add machine script =  /usr/sbin/useradd -d /dev/null -g machines -s /bin/false -M %u   (Solo per Samba 3) Aggiunge automaticamente al sistema l'account di una nuova macchina che entra nel dominio
log file =  /var/log/samba/log.%m   Definisce la posizione del log e ne scrive uno per ogni macchina client
log level = 2   Imposta a 2 il livello di logging
max log size = 50   Imposta a 50Kb la dimensione massima del file di log
logon home = \\%N\%U\.profile   Definisce la posizione del file .profile (per client Win9x/ME) in \\nomeserver\nomeutente.
logon path = \\%N\profiles\%U   Definisce la posizione della directory profiles (per i client WinNT/2k/XP). A profiles verrà sostituito il percorso esatto contenuto nella share [profiles] definita in seguito
logon drive = Z:   Crea l'unità di rete Z: al login sui client Windows, nella nostra configurazione corrisponderà alla home dell'utente unix
logon script = netlogon.bat   Specifica quale script eseguire sul client ad ogni login. Lo script viene cercato nella directory definita nella share [netlogon]

[homes]   Share speciale che definisce la home directory di ogni utente
comment = Home directory di ogni utente   Descrizione della share
read only = No   Ogni utente deve poter scrivere nella sua home
browseable = No   E' bene che le home dei vari utenti non siano pubblicamente visibili

[profiles]   Share speciale dove vengono scritti i file di profilo per gli utenti roaming. Ad ogni login e logout il suo contenuto viene sincronizzato con la cartella dei documenti sul computer locale
comment = Share per i file profile utenti    Descrizione della share
path = /home_samba/profiles   La directory locale sul server Samba dove sono salvati i profili. Qui vengono automaticamente create le sottodirectory corrispondenti ad ogni utente
read only = No   I profili sono sincronizzati con il client e devono essere scrivibili
create mask = 0600   La maschera con cui vengono creati i file
directory mask = 0700   La maschera con cui vengono create le directory
browseable = No   E' bene non rendere publicamente visibili i profili, come per le home

[netlogon]   Share speciale che contiene gli script eseguiti sui client Windows al login sul dominio. Possono essere utilizzati per l'amministrazione centralizzata
comment = Share per script eseguiti su client Windows  
path = /home_samba/netlogon   La directory sul server in cui sono contenuti gli script per il login
read only = yes   Questi script devono essere accessibili solo in lettura
write list = @admin   ma possono essere modificati dagli utenti del gruppo admin
browseable = No   Essendo una share di servizio è bene che non sia mostrata agli utenti

[public]   Share pubblica per lo scambio di dati o deposito file comuni degli utenti del dominio
comment = Directory pubblica
path = /home_samba/public   Percorso della share sul server
read only = No   Deve essere scrivibile da chiunque

Directory e permessi

E' stato necessario creare le directory per i roaming profile e netlogon con i nomi ed i  premessi corretti, nello specifico sono state create le seguenti:

/home_samba/netlogon    0755 owner root, gruppo admin
/home_samba/profiles      1757   (è scrivibile da root e le sottodirectory sono gestibili dai rispettivi utenti senza poter modificare quelle degli altri)

Gestione login e password

Gli utenti Samba e le rispettive home directory e permessi vengono lette dal NIS del server che gestisce tutti gli account preesistenti. I nuovi utenti devono essere creati sul server Unix a mano, per il resto la procedura può essere completamente eseguita con il front end grafico SWAT dai client Windows.
Samba utilizza come file delle password /etc/samba/smbpasswd che presenta una riga con login, password criptata e altri dati, inoltre per ogni utente deve essere presente il corrispettivo utente sul normale file degli utenti Unix /etc/passwd. Questo perchè Samba agisce sul sistema locale come un normale processo Unix e, anche se viene eseguito come root, accede al filesystem con i permessi degli utenti secondo quanto configurato.
Samba agisce come PDC, oltre a creare una login (sia in /etc/samba/smbpasswd che in /etc/passwd) per ogni utente, si deve creare una login speciale per ogni macchina del dominio. Questa login, definita trust account o computer account ha il nome NetBios del computer seguito dal segno dollaro ($). Al primo login da parte del trust account viene generata una sorta di password che viene utilizzata per autenticare le comunicazioni fra il PDC e il client ed assicurarsi che non ci siano altre macchine che possano unirsi al dominio con lo stesso nome NetBios. La gestione dei trust account è eseguita in maniera automatica, tramite l'uso della direttiva add machine script, a tal fine sul server è stato creato il gruppo machines.

Quando si configura un client Windows NT/2k/XP per farlo diventare parte di un dominio, viene richiesta una password di amministratore. In questo caso si deve utilizzare la login di root con relativa password, per questo è stato necessario aggiungere l'utente root al smbpasswd

smbpasswd -a root

Per leggere dal NIS tutti gli utenti e gruppi sono stati modificati i due file locali di utenti e password nel seguente modo:

/etc/passwd
+::::::

/etc/group
+:::

Con questa configurazione le password Unix sono NIS-password, per cambiarle in remoto si dovrebbe utilizzare yppasswd che richiede la vecchia password in chiaro, i client NT però usano password criptate ed è quindi impossibile sincronizzare le password Samba con quelle Unix, anche da root.

In una configurazione di prova è stata testata anche la gestione degli utenti direttamente sul server samba che gestisce il dominio AUTOMATICA_PDC, in questo modo è stata possibile la sincronizzazione. Per fare in modo che la password cambiata tramite samba sia aggiornata anche su /etc/passwd locale sono satate aggiunte al file smb.conf le seguenti righe di configurazione in [global]:

passwd program = /usr/bin/passwd %u   La riga di comando per cambiare la password utente (%u)
passwd chat = *Enter*new*UNIX*password* %n\n *Retype*new*UNIX*password:* %n\n *passwd:\spassword*updated*successfully*\n.   La procedura di matching per gestire le richieste di output in passwd
unix password sync = Yes   Attiva la sincronizzazione delle password

La procedura applicata tuttavia non permette la sincronizzazione delle passwords che vengono cambiate dal sistema Unix, in questo caso sarà necessario cambiare la corrispondente password Samba a mano.

Configurazione client Windows XP Professional

Per consentire l'accesso al dominio da parte del client Windows XP Pro è necessario modificare alcuni parametri di sicurezza e due chiavi di registro, vediamo la procedura nel dettaglio:

- Aprire l'editor delle policy di Sicurezza Locale (Start->Pannello di controllo->Prestazioni e manutenzione->Strumenti di Aministrazione->Criteri di protezione locali->Criteri locali->opzioni di protezione)
- Disabilitare la voce "Domain member: Digitally encrypt or sign secure channel (always)" (Membro di dominio: aggiunta crittografia o firma digitale ai dati del canale protetto (sempre) )
- Disabilitare la voce "Domain member: Disable machine account password changes" (Controller di dominio: rifiuta cambio password account computer)
- Disabilitare la voce "Domain member: Require strong (Windows 2000 or later) session key" (Membro di dominio: richiesta chiave di sessione avanzata (Windows 2000 o versioni successive) )
- Aprire l'editor del registro di sistema (Start->Esegui->regedit->Invio) e modificare la chiave [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ Netlogon\Parameters] come segue:
"requiresignorseal"=dword:00000000
"signsecurechannel"=dword:00000000

Se sulla macchina Windows è installato un firewall è altresì necessario aprire le porte 137 e 139 necessarie al funzionamento di Samba e la 901 per SWAT, di seguito è riportata la procedura per la configurazione del firewall nativo di WindowsXp Professional SP2:

Start->Pannello di controllo->Centro Sicurezza PC->Windows Firewall->Eccezioni->Aggiungi porta->
Nome porta: SAMBA TCP
Numero porta: 137
Selezionare TCP
->Ok.

Ripetere l'operazione per la corrispondente porta UDP e per la porta 139 e 901.
A questo punto ci si può unire al dominio come su Windows NT/2000: Tasto destro su Risorse del Computer, selezionare Proprietà, Nome del Computer e tasto Cambia, inserire come dominio AUTOMATICA_PDC, alla richiesta di login usare l'account di root della macchina Unix su cui gira il server.

Guida rapida per gestire gli utenti con SWAT

Come è stato detto gli utenti vengono letti automaticamente dal database di quelli già registrati per l'accesso ai laboratori della palazzina 1, le home directory sono le stesse dell'account esistente, lo stesso vale per i diritti di accesso. Per ogni utente oltre alla directory home è possibile aggiungere la risorsa di rete condivisa e pubblica \\pc1\public.
Dopo aver aggiunto al dominio una macchina attraverso la procedura descritta nella sezione "Configurazione client Windows XP Professional", per aggiungere degli utenti al server Samba è necessario collegarsi tramite un browser web a //pc1:901, una finestra richiederà di autenticarsi come root del sistema Unix. Una volta inserite username e password è possibile gestire completamente Samba attraverso il front end grafico SWAT. Per aggiungere un utente basterà entrare nella sezione "Password", utilizzare la sezione "Server Password Management", inserire i dati relativi all'utente da aggiungere e premere "Add new user". In questa schermata è possibile gestire in modo semplice ed intuitivo i vari account: attivare e disattivare utenti, eliminare account.
Il singolo utente che desideri cambiare la propria password, può farlo comodamente dal menù di Windows che compare premendo crtl+alt+canc e selezionando "Cambia password".

Riepilogo informazioni utili

Nome dominio: AUTOMATICA_PDC
Nome NetBios server: PC1
URL per la gestione remota: //pc1:901
Percorso smb.conf: /etc/samba/smb.conf
Percorso condivisione pubblica sul server: /home_samba/public
Percorso condivisione pubblica per i client: \\pc1\public

Contatto

Per qualsiasi informazione o chiarimento scrivere a alberto.stillo@studenti.unipr.it