Autenticazione con LDAP per Samba: differenze tra le versioni
(→Installazione degli smbldap-tools) |
(→Installazione degli smbldap-tools) |
(Nessuna differenza)
|
Versione delle 11:05, 25 set 2006
WORK IN PROGRESS
Indice
Introduzione
Come installare e configurare samba come controllore di dominio di primo livello.
Questa guida descrive come installare e configurare Samba come PDC autenticando gli utenti con LDAP. Il sistema imposta un potente e sicuro file/print server oltre ad un robusto Directory Server.
Inoltre il server samba fa anche da logon server per i client Windows® che con l'aiuto dei “logons script” accedono automaticamente ai propri dischi condivisi in base al base al gruppo di appartenenza.
Prima di cominciare
Questa guida descrive come integrare ldap in Samba, quindi mostra:
- come installare e configurare ldap (installando e configurando OpenLDAP, gli script IDEALX per samba, i file slapd.conf e /etc/ldap.conf, Pluggable Authentication Modules (PAM) e infine avvio di OpenLDAP);
- come installare e configurare samba (installazione e avvio di samba, creazione delle cartelle e dei dischi condivisi, configurazione del file smb.conf e impostazione del database delle password LDAP, inizializzazione del database e integrazione di PAM, aggiunta di utenti e workstation windows® nella Directory;
- come abilitare e testare la sicurezza del sistema (TLS per OpenLDAP, PAM e Samba).
Prerequisiti
Sono necessari una buona conoscenza dei sistemi UNIX®/LINUX® dal punto di vista della shell (riga di comando) e nozioni anche di base di networking e di prommazione in python o perl (per la creazione degli logon script, qui è stato usato python).
La distribuzione di riferimento è una Fedora Core 5, però la procedura qui descritta funziona su tutte le altre distribuzioni (es. Slackware®) e le varianti UNIX® come AIX e HP-UX.
È racomandato procurasi una versione precompilata dei pacchetti per la propria distribuzione (es .rpm per Red Hat® e derivati oppure .tgz per Slackware® e derivati).
I programmi usati sono i seguenti:
- OpenSSL;
- OpenLDAP;
- Samba;
- Modulo Perl Crypt::SmbHash;
- Module Perl Digest::SHA1;
- Modulo Perl IO::Socket::SSL;
- Modulo Perl Net::SSLeay.
Schema della rete
La semplicità della rete in esame la rende facilmente adattabile ad una piccola rete domestica. E' stato usato un router a banda larga con firewall integrato.
+------------+ | PC LINUX | | con Server | | Samba | +------+-----+ +----------+ __________ | | ROUTER | | | -----+------+------+-------+ + +---- >> --- >>| INTERNET | | | | FIREWALL | |__________| +----+----+ +----+----+ +----------+ | WINDOWS | | WINDOWS | | CLIENT | | CLIENT | +---------+ +---------+
Questa picola rete ha tre gruppi: finanze, ricerca e amministrazione.
Gli utenti dei gruppi finanze e ricerca hanno dei dischi condivisi in cui salvare i propri file; i membri dei due gruppi hanno solo accesso alle condivisioni del proprio gruppo.
Gli utenti del gruppo amministrazione hanno dei dischi accessibili solo dgli amministratori, hanno però dei privileggi che consentono loro di accedere alle condivisioni sia di finanze sia di ricerca.
Introduzione a LDAP
LDAP : Lightweight Directory Access Protocol, è un protollo per far comunicare più computer con un Directory Server (rfc 1777 e 2251); è stato progettato per permettere un accesso leggero ad alberi derivati da Directory X.500 OSI Directory Access Protocol (DAP).
I dati sono organizzati in una struttura gerarchica (con supporto nativo della replicazione) e non di tabelle come nei DBMS relazionali.
Una Directory è una collezione gerarchica di oggetti e di attributi associati agli ogetti stessi.
Esempio di Directory:
_ (_) dc=vicenza, dc=linux, dc=it | | +---------+---------+ | | | | | | _ _ _ (_) (_) (_) ou=soci, dc=vicenza, dc=linux, dc=it | | +---------+---------+ | | | | | | _ _ _ (_) (_) (_) cn=ottavio, ou=soci, dc=vicenza, dc=linux, dc=it
Integrazione LDAP - SAMBA
Esistono tre principali punti d'integrazione di Samba in un server LDAP:
- il primo è l'inclusione dello schema samba nel server LDAP;
- il secondo è la configurazione di samba per autenticare via il server LDAP, grazie all'utility PAM che crea uno strato di astrazione nel processo di autenticazione, nascondendone la complessità (decidendo ad esempio se usare un file, LDAP, oppure un altro meccanismo di autenticazione);
- il terzo consiste nel usare un insieme di strumenti: i così detti “ IDEALX LDAP toolkit per Samba” prodotti da terzi, ma rilasciati sotto licenza GPL.
Configurazione di LDAP
Installazione di OpenLDAP
Per installare OpenLDAP verificare che nella propria distribuzione non sia già installato, con i seguenti comandi:
rpm -qa | grep ldap
se non si ottiene un risultato simile a openladp-2.3.24 o superiore sarà necessario scaricarlo su uno dei mirror e installarlo con il comando:
rpm -ivh openladp-2.3.24-2.i386.rpm
oppure usando YUM (il sistema di aggiornamento online di fedora, qui non ne parleremo).
Questo è un esempio output che ottengo sulla mia Slackware:
root@chrix:~# ls /var/log/packages/ | grep -i ldap nss_ldap-244-i486-1wsa openldap-2.3.24-i486-2kjz
in caso contrario è possibile scaricare il pacchetto precompilato su uno dei repository di Slackware oppure installarlo direttamente con swaret o altri strumenti di aggiornamento online.
Installazione degli smbldap-tools
Essi sono richiesti per automatizzare la maggior parte delle interazioni tra samba e il server LDAP, contengono ad esempio script che samba richiama automaticamente per aggiungere/rimuovere utenti e/o gruppi, agiungere computer... Sono scritti in perl e quindi eseguibili da shell. Di solito sono già inclusi in vari distribuzioni col pacchetto samba, questo è l'output che ottengo sulla mia Slackware:
root@chrix:~# cd /usr/share/doc/samba-3.0.21c/examples/LDAP/smbldap-tools-0.9.1 root@chrix:~# ls CONTRIBUTORS INSTALL doc/ smbldap-groupshow smbldap-userdel smbldap_bind.conf COPYING Makefile smb.conf smbldap-passwd smbldap-userinfo smbldap_tools.pm ChangeLog README smbldap-groupadd smbldap-populate smbldap-usermod FILES TODO smbldap-groupdel smbldap-tools.spec smbldap-usershow INFRA configure.pl smbldap-groupmod smbldap-useradd smbldap.conf
per installare gli IDEALX toolkit:
- andare sul sito e scaricare la versione 0.9.1 o superiore (smbldaptool-0.9.1.tar.gz);
- scompattare l'archivio in una cartella temporanea col comando:
tar -xvzf smbldap-tool-0.9.1.tar.gz
- creare una cartella per gli script quindi impostare i permessi giusti:
mkdir -p /var/lib/samba/sbin chmod -R 755 /var/lib/samba/
- entrare nella cartella scompattata e copiare gli script nella cartella precedentemente creata, all'invito di comandi scrivere:
cd smbldap-tool-0.9.1 cp smbldap* configure.pl /var/lib/samba/sbin
- impostare i permessi corretti nella cartella /var/lib/samba/sbin, impartendo i seguenti comandi:
chmod 755 * chmod 640 smbldap_bind.conf smbldap.conf smbldap_tools.pm
- infine rimuovere la cartella temporanea in cui è stato scompattato l'archivio.
Il toolkit IDEALX richiede moduli perl aggiuntivi che di default non sono sempre installati nel sistema.
- Andare sul sito e scaricare i seguenti moduli perl (è disponibile un motore di ricerca interno):
- Crypt::SmbHash;
- Digest::SHA1;
- IO::Socket::SSL;
- Net::SSLeay.
- Scompattare gli archivi appena scaricati con tar:
for archivio in *; do tar -xvzf $archivio; done
- Compilare ed installare ( da root) ognuno dei quattro moduli, entrando ogni volta nella rispettiva cartella con i comandi:
perl Makefile.PL make test make install
Configurazione degli schema, delle chiavi ssl e delle cartelle usate da OpenLDAP
Chi usa un pacchetto precompilato ( rpm o tgz ) avrà la cartella /etc/openldap contenente il file di configurazione slapd.conf, prima di editare quel file è necessario copiare il file samba.schema nella cartella /etc/openldap/schema se non già presente! E impostare i permessi corretti:
chmod 644 /etc/openldap/schema/samba.schema
Potete usare locate oppure find per trovarlo, sulla mia Slackaware usando locate:
root@chrix:~# cd /etc/openldap root@chrix:~# locate samba.schema /etc/samba/samba.schema.oc.IBM-ds /etc/samba/samba.schema.at.IBM-ds /etc/samba/samba.schema /etc/openldap/schema/samba.schema /usr/doc/samba-3.0.21c/examples/LDAP/samba.schema.oc.IBM-ds /usr/doc/samba-3.0.21c/examples/LDAP/samba.schema.at.IBM-ds /usr/doc/samba-3.0.21c/examples/LDAP/samba.schema