LDAP per Autenticazione Angelo Failla a.k.a. pallotron

Slides:



Advertisements
Presentazioni simili
Linux Kernel (Hac|Ma)king Come compilarsi da soli il proprio kernel - # make it simple.
Advertisements

Il modello Informativo
Accesso ai dati su file LSA: Laboratorio di Sistemi Informativi Economico Aziendali Salvatore Ruggieri Dipartimento di Informatica, Università di Pisa.
Database MySql.
Windows Server 2003 Active Directory Diagnostica, Troubleshooting e Ripristino PierGiorgio Malusardi IT Pro – Evangelist Microsoft.
ISA Server 2004 Enterprise Edition Preview. ISA Server 2004.
Introduzione ad Active Directory
Installazione di Apache 2, PHP5, MySQL 5
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
Mantenimento dello stato Laboratorio Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Connessione con MySQL.
Biglietti: schema E/R.
Dr. Giovanni Stracquadanio
Organizzazione di una rete Windows 2003
Sicurezza e Policy in Active Directory. Sommario Amministrazione della sicurezza in una rete Windows 2003 Amministrazione della sicurezza in una rete.
Amministrazione di una rete con Active Directory
Amministrazione di una rete con Active Directory.
Amministrazione di una rete con Active Directory
Active Directory.
Giuseppe Fabio Fortugno.
Installazione pacchetti sotto Linux. Linux: Installare le applicazioni Adesso che abbiamo configurato Linux vogliamo imparare a installare qualche programma.
Uso di openafs Come usare il tool openafs per accedere e gestire i propri files sotto AFS.
LDAP Studio di fattibilità. Le sezioni dello studio di fattibilità 1. Panoramica sulla situazione attuale 2. Progetto della soluzione 3. Specifiche generali.
389 Directory Server Dael Maselli.
TCP_Wrapper Le richieste per un determinato servizio (ad. es. telnet, ftp, rsh, etc.) vengono soddisfatte soltanto se lindirizzo IP del richiedente rientra.
4 Cosa è una rete? ã Punto di vista logico: sistema di dati ed utenti distribuito ã Punto di vista fisico: insieme di hardware, collegamenti, e protocolli.
Sistemi Operativi - Introduzione 1 Informazioni utili Per avere una distribuzione linux sul proprio pc: 1.
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net Web Part e controlli di login Elaborazione di Franco Grivet Chin.
Corso di PHP.
Test sul Cisco VPN Concentrator
Gruppo Directory Services Rapporto dell'attivita' svolta - Marzo 2000.
E. Ferro / CNAF / 14 febbraio /13 GRID.it servizi di infrastruttura Enrico Ferro INFN-LNL.
1 Installazione da rete Introduzione Configurazione del server NFS Cosa serve sul client Configurazione kickstart.
Guida IIS 6 A cura di Nicola Del Re.
Amministrazione della rete
Fabrizio Grossi Verifica delle attività. L'operato degli amministratori di sistema deve essere oggetto, con cadenza almeno annuale, di un'attività
Server Web in una rete Windows Sommario Meccanismi di accesso remoto Meccanismi di accesso remoto Introduzione ai Server Web Introduzione ai Server.
Printserver2.pg.infn.it (VM Xen in esecuzione su redhat cluster)
Configurazione in ambiente Windows Ing. A. Stile – Ing. L. Marchesano – 1/23.
Sistemi Informativi sul Web
Creare pagine web Xhtlm. Struttura di una pagina.
Il Server web Laboratorio di Progettazione Web AA 2007/2008
SIBA Days 2009 – III Edizione Il Servizio di accesso remoto alle risorse informative elettroniche Domenico Lucarella Coordinamento SIBA Università del.
Backup and Migrate, Captcha ReCaptcha e Spamicide Docente: Simone Zambenedetti. Moduli per la Sicurezza.
BIOINFO3 - Lezione 361 RICERCA DI SIMILARITA TRA SEQUENZE Un altro problema comunissimo in bioinformatica è quello della ricerca di similarità tra sequenze.
Configurazione di una rete Windows
Amministrazione della rete: web server Apache
1 Amministrazione del sistema Creazione degli account al sistema. Comandi per la gestione degli utenti File per la gestione degli utenti, password shadow.
Lezione 1 Approccio al sistema operativo : la distribuzione Knoppix Live Cd Knoppix 3.6 Interfacce a caratteri e grafica: console e windows manager File.
Installazione Come tecnico, si potrebbe aver necessità di effettuare una installazione pulita di un sistema operativo. L'esecuzione di una installazione.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
INFN-AAI Directory Service LDAP Dael Maselli (Slides by Fulvio Ricciardi) Tutorial INFN-AAI Plus Dicembre 2010.
Active Directory e Gestione Utenti di Valerio Di Bacco.
Distributed System ( )7 TCP/IP four-layer model.
FTP File Transfer Protocol
Fabrizio Felici LAMP workshop GROsseto Linux Users Group.
Directory Directory cos’e’? Directory qual’e’ il suo scopo?
MySQL Database Management System
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
FTP1 FTP (File Transfer Protocol), implementato dai programmi ftp e ftpd, permette ad utenti di connettere sistemi remoti e trasferire files.
Distribuzione controllata del software con Systems Management Server 2003 Fabrizio Grossi.
Extension pack per IIS7 Piergiorgio Malusardi IT Pro Evangelist
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Servizi Internet Claudia Raibulet
Tecnologie lato Server: i Server Web © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.
Fedora Directory Server Dael Maselli. Funzionalita’ principali Replica Multi-Master fino a 4 nodi Connessione e autenticazione sicura (SSLv3, TLSv1 e.
Attivita' tecniche Test effettuati su Fedora Directory Server: SSL/TLS Autenticazione con Backend PAM Autenticazione Ticket Kerberos Replica Master-Slave.
Active Directory. Cos’è Active Directory (AD)  Un “directory service”  Un contenitore di oggetti  Un insieme di servizi di accesso  Un “namespace”
IV Corso di formazione INFN per amministratori di siti GRID Tutorial di amministrazione DGAS Giuseppe Patania.
La gestione della rete e dei server. Lista delle attività  Organizzare la rete  Configurare i servizi di base  Creare gli utenti e i gruppi  Condividere.
Transcript della presentazione:

LDAP per Autenticazione Angelo Failla a.k.a. pallotron http://www.uzeda.com LDAP per Autenticazione SAMBA e PAM Webb.it 2004 Angelo Failla a.k.a. pallotron afailla@uzeda.com

Di cosa parleremo? LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Di cosa parleremo? Prerequisiti necessari; Cosa è LDAP? Backend, file LDIF, ObjectClass e Attributi; Cenni su installazione e configurazione di OpenLDAP; Configurazione lato server: configurare Slapd e l'infrastruttura di base; Configurazione lato client: migrazione del NSS e configurazione PAM; Configurazione lato client: configurare SAMBA per usare LDAP; Tools utili per l'amministratore: LAM, phpLDAPadmin; Conclusione e altri scenari d'uso; Questions & Answers.

Requisiti necessari LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Requisiti necessari Sapersi muovere all'interno di un sistema di tipo UNIX :) Saper generae certificati di openSSL; Conoscenza dei comandi della consolle; Conoscenza delle procedure di compilazione dei sorgenti e loro installazione nel sistema; Conoscenza basilare del server SAMBA (versione 3), del N.I.S. e di P.A.M.

Cosa è LDAP? LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Cosa è LDAP? LDAP == Lightweight Directory Access Protocol E' un protocollo che permette di accedere ad un servizio di directory (inteso come elenco di dati), simile ad una rubrica telefonica, ma con contenuti eterogenei. LDAP parte dal modello di dati stabiliti dallo standard X.500 (questo prevede sia un modello dei dati che un protocollo di accesso), da cui eredita solo il modello dati, ma implementa un protocollo di accesso semplificato basato sul TCP/IP, che è stato standardizzato dall'RFC 2251. Un elenco (o directory) è simile ad un database, ma tende a contenere informazioni più descrittive e basate su attributi. Un elenco LDAP è generalmente concepito per fornire una responsività elevata alle richieste di lettura e ricerca, può essere facilmente replicato, e supporta la distribuzione del carico. Inoltre il protocollo considera come accettabili inconsistenze temporanee delle informazioni. Il server di OpenLDAP si chiama slapd.

I Backend LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com I Backend Slapd ha la possibilità di usare diversi tipi di database come backend in cui memorizzare tutte le informazioni necessarie. Meritano di essere citati almeno i seguenti: BDB (Berkley Database): è quello di default, è un backend per database transazionali con grandi prestazioni e utilizza Sleepycat Berkeley DB 4; LDBM (Lightweight DBM): questo backend può utilizzare sia il Berkeley DB che GDBM; SHELL: una interfaccia backend per script di shell; PASSWD: una semplice interfaccia backend per il file passwd(5) Il backend transazionale BDB è progettato per autorizzare accessi multiutente (anche concorrenti ad un database con qualsiasi mix di operazioni di lettura/scrittura). Questo genere di backend è particolarmente utilizzato in situazioni che richiedono: Transazioni: permette operazioni atomiche; Disaster Recovery: permette di recuperare i dati in seguito a crash di sistema e/o crash dell'hardware, senza perdere le transazioni effettuate.

Backend: il formato LDIF LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Backend: il formato LDIF In questo seminario si assume l'utilizzo del backend BDB. Per importare ed esportare directory tra i vari server LDAP-based, o per descrivere una serie di cambiamenti da applicare ad un directory, si utilizza un formato conosciuto come LDIF, che è un acronimo per LDAP Data Interchange Format. Un file LDIF memorizza informazioni in una gerarchia di entry object-oriented. Tutti i pacchetti LDAP dispongono di utility (generalmente sotto consolle) che convertono i file LDIF nel formato BDB. Un tipico file LDIF somiglia al seguente: dn: o=uzeda, c=com o: uzeda objectclass: organization dn: cn=Angelo Failla, o=uzeda, c=com cn=Angelo Failla sn=Failla mail: afailla@uzeda.com objectclass: person o=uzeda, c=com cn= Angelo Failla, o=uzeda, c=com

Gli Attributi e gli ObjectClass LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Gli Attributi e gli ObjectClass Come si può vedere dall'esempio ogni entry è identificata univocamente da un distinguished name (abbreviato DN), un DN è formato dal nome dell'entry seguito a un path formato da più nomi che rintraccia il posizionamento dell'entry all'interno della struttura ad albero rovesciato che compone la struttura dati del server LDAP (si pensi alla classica rappresentazione di un filesystem). In LDAP, un ObjectClass definisce un set di attributi che possono essere usati per definire un entry. Tutti i pacchetti LDAP forniscono di default almeno i seguenti objectclass: Groups: un particolare oggetto atto a rappresentare liste disordinate di oggetti singoli o di gruppi di oggetti; Locations: un oggetto atto a rappresentare nome di nazioni e loro descrizione; Organizations: atto a rappresentare organizzazioni, aziende, etc Person: contiene gli attributi utili per schedare una persona all'interno di una directory.

Installazione di un server LDAP (cenni) LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Installazione di un server LDAP (cenni) E' possibile installare OpenLDAP prelevando i sorgenti in formato tar.gz direttamente dal sito (http://www.openldap.org TODO: controllare link), oppure utilizzando i pacchetti creati ad hoc per la vostra distribuzione GNU/Linux, BSD, Darwin, etc etc. Normalmente i pacchetti precompilati sono più rapidi da installare e/o mantenere, e sono già stati compilati per supportare molti backend, hanno già il supporto TLS/SSL compilato. Ad es. con una distribuzione Debian è sufficiente digitare il comando apt-get install slapd ldap-utils. Per le istruzioni inerenti l'installazione si rimanda alla documentazione ufficiale ed agli HOWTO elencati nella bibliografia di queste slide. Alla fine del processo di installazione tutti i binari, i file di configurazioni, gli schemi di default, etc. saranno installati in opportune directory del filesystem. Occorre prestare molta attenzione alla directory /etc/ldap/, in cui è presente il file di configurazione di slapd (slapd.conf)

Configurazione di Slapd, il file slapd.conf LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Configurazione di Slapd, il file slapd.conf Vediamo adesso un esempio pratico di configurazione del server slapd, il suo file di configurazione si trova in /etc/ldap/slapd.conf (questo su debian, installando il pacchetto con apt, per le installazioni da sorgente il file dovrebbe trovarsi su /usr/local/etc/ldap/slapd.conf o in un altra directory, a seconda dell'opzione - -prefix fornita allo script configure). Il file di configurazione è strutturato in due parti: Definizioni Globali: riguarda la configurazione generale del server nellla prima, in questa parte vengono definiti gli schemi da utilizzare, le impostazioni di protocollo, l'algoritmo di default da utilizzare per memorizzare le password, il livello di verbosity, la posizione del pid file, la definizioni dei tipi di backend da utilizzare, etc; Direttive dei backend (leggi database): queste sezioni iniziano normalmente con la direttiva database <nome_backend>, e riguardano la configurazione dei singoli database.

slapd.conf – direttive globali (man 5 slapd) LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com slapd.conf – direttive globali (man 5 slapd) # Global Directives: # Features to permit allow bind_v2 # Schema and objectClass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema include /etc/ldap/schema/qmail.schema # Schema check allows for forcing entries to match schemas for their objectClasses's schemacheck on password-hash {CRYPT} # Where the pid file is put. The init.d script # will not stop the server if you change this. pidfile /var/run/slapd/slapd.pid # List of arguments that were passed to the server argsfile /var/run/slapd.args # Read slapd.conf(5) for possible values loglevel 256 # Where the dynamically loaded modules are stored modulepath /usr/lib/ldap moduleload back_bdb Definizione schemi # Backend specific directives apply to this # backend until another 'backend' directive # occurs backend bdb #backend <other backen> #backend <another one>

slapd.conf – dirett. database 1/2 (man 5 slapd) LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com slapd.conf – dirett. database 1/2 (man 5 slapd) ####################################################################### # Specific Directives for database #1, of type bdb: # Database specific directives apply to this databasse until another # 'database' directive occurs database bdb # The base of your directory in database #1 suffix "dc=miodominio,dc=mio_dominio_primolivello" # For SSL/TSL authentication TLSCertificateFile /etc/ssl/certs/ldapcert.pem TLSCertificateKeyFile /etc/ssl/certs/ldapkey.pem TLSCipherSuite HIGH TLSCACertificateFile /etc/ssl/certs/cacert.pem #TLSVerifyClient 1 rootdn "cn=admin,dc=miodomino,dc=mio_dominio_primolivello" rootpw {CRYPT}rkoPoUxb6iKN6 # Where the database file are physically stored for database #1 directory "/var/lib/ldap" # Indexing options for database #1 index objectClass eq uid # Save the time that the entry gets modified, for database #1 lastmod on

slapd.conf – dirett. database 2/2 (man 5 slapd) LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com slapd.conf – dirett. database 2/2 (man 5 slapd) # Where to store the replica logs for database #1 # replogfile /var/lib/ldap/replog # The userPassword by default can be changed # by the entry owning it if they are authenticated. # Others should not be able to see it, except the # admin entry below # These access lines apply to database #1 only access to attrs=userPassword by dn="cn=admin,dc=miodominio,dc=mio_dominio_primolivello" write by anonymous auth by self write by * none access to dn="ou=Rubrica,dc=miodominio,dc=mio_dominio_primolivello" by dn="cn=admin_rubrica,dc=miodominio,dc=mio_dominio_primolivello" write by dn=”authuser,dc=miodominio,dc=mio_dominio_primolivello" read access to * by dn="cn=admin,dc=agencyuzeda,dc=local" write by dn="cn=authuser,dc=agencyuzeda,dc=local" read Definizione ACL

Avviare slapd LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Avviare slapd Come potete leggere nel commento qui sotto, normalmente slapd parte facendo la listen solo sulla porta tcp 389 che corrisponde al servizio ldap (no ssl), per fare in mo do che il vostro server ldap ascolti anche alla porta ldaps (636) occorre inserire la uri ldaps:// all'interno dello script di avvio di slapd (attenzione! La posizione delle righe qui sotto può variare da distribuzione a distribuzione, per es. Sotto debian si trova su /etc/default/slapd, in altre distribuzioni SystemV potrebbe trovarsi in /etc/init.d/slapd). # slapd normally serves ldap only on all TCP-ports 389. slapd can also # service requests on TCP-port 636 (ldaps) and requests via unix # sockets. # Example usage: SLAPD_SERVICES="ldap:/// ldaps:/// ldapi:///" Nota bene: se il vostro server ldap deve esclusivamente essere utilizzato via ssl dai client della rete conviene impostare questa voce ai valori “ldap://127.0.0.1 ldaps://”, questo impedisce le connessioni in chiaro da tutti gli host della rete eccetto che dall'interfaccia di loopback.

Migrazione del Name Service Switch LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Migrazione del Name Service Switch Adesso che il nostro file di configurazione è stato creato, il passo successivo è la migrazione del NSS. Il NSS è una interfaccia che permette di demandare, a delle librerie esterne, l'accesso a informazioni riguardanti l'ambiente locale (come ad es. account utenti, password, gruppi, hosts, corrispondenze tra i nomi delle macchine e i numeri di porta). Questo tipo di interfaccia viene fornita dalle libc GNU. Il grande vantaggio del NSS è che diventa possibile definire in maniera modulare ed estensibile il tipo di supporto da utilizzare per le varie classi di informazioni sopra descritte. Queste definizioni vengono dichiarate all'interno del file /etc/nsswitch.conf. Il formato prevede una riga per ogni classe di informazione, nella prima colonna viene specificato il tipo di classe (di solito le keyword sono hosts, group, passwd, aliases, protocols, etc) seguito dal carattere ' : ', poi sono possibili valori che indicano dove reperire le informazioni per quelle classi, questi valori sono identificati da parole chiavi come ldap, file, dns, db, nis, con la possibilità di specificare l'ordine in cui questi supporti vengono presi in considerazione. Un esempio di file nella prossima slide:

Il file /etc/nsswitch.conf LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Il file /etc/nsswitch.conf # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: files ldap group: files ldap shadow: files ldap hosts: files dns ldap networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis

Il file libnss-ldap.conf LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Il file libnss-ldap.conf Per usufruire del supporto LDAP è necessario installare il pacchetto libnss-ldap (sotto debian), bisogna poi editare il file /etc/libnss-ldap.conf, come il file sottostante: base dc=vostrodominio,dc=dominio_primario uri ldaps://vostroserver.vostrodominio.dominio_primario/ ldap_version 3 binddn cn=authuser,dc=vostrodominio,dc=dominio_primario bindpw <password_segreta> rootbinddn cn=admin,dc=vostrodominio,dc=dominio_primario scope one nss_base_passwd ou=People,dc=agencyuzeda,dc=local?one nss_base_shadow ou=People,dc=agencyuzeda,dc=local?one nss_base_group ou=Group,dc=agencyuzeda,dc=local?one nss_base_hosts ou=Hosts,dc=agencyuzeda,dc=local?one ssl start_tls ssl on Alcune avvertenze: E' opportuno settare i permessi di questo file a 600 in quanto alcune password sono specificate in chiaro... La password per il binding al server LDAP da account root è memorizzata nel file /etc/ldap.secret, anch'esso con permessi 600.

Migrare /etc/passwd /etc/group /etc/shadow etc LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Migrare /etc/passwd /etc/group /etc/shadow etc Adesso dobbiamo migrare le informazioni presenti in /etc/group, /etc/passwd ed /etc/shadow sul nostro server ldap. Per fare ciò ci vengono in aiuto una collezione di tool scritti in perl presenti nel pacchetti migrationtools (http://www.padl.com/OSS/MigrationTools.html). Prima di procedere occorre editare il file /etc/migrationtools/migrate_common.ph, modificando le righe sottostanti: $DEFAULT_MAIL_DOMAIN = "agencyuzeda.local"; $DEFAULT_BASE = "dc=agencyuzeda,dc=local"; occorrerà successivamente chiamare il comando migrate_base.pl > base.ldif, questo comando genera un file ldif contenente l'infrastruttura di base dell'albero del server LDAP. Il file base.ldif conterrà ad es. Una sezione come questa: dn: ou=Hosts,dc=gnulinux,dc=it ou: Hosts objectClass: top objectClass: organizationalUnit

Migrare /etc/passwd /etc/group /etc/shadow etc LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Migrare /etc/passwd /etc/group /etc/shadow etc Normalmente conviene sempre editare il file base.ldif ed eliminare le entry non necessarie (ad es. Tutte le entry relative al NIS). Dopodichè occorrerà dare il comando: ldapadd -x -D"cn=admin,dc=gnulinux,dc=it" -W -f base.ldif -x dice al comando di utilizzare la simple authentication -D indica con quale dn si deve fare il lobin -W indica al comando di chiedere la password -f specifica al comando che deve prendere le informazioni da aggiungere dal file base.ldif Una volta aggiunta la struttura base occorre migrare il file delle password, lo shadow e i gruppi, questo si fa esattamente come fatto per la infrastruttura di base, utilizzando i vari comandi di migrationtools (migrate_passwd, migrate_groups, etc), veranno creati i vari file ldiff che dovranno essere aggiunti all'albero con il comando ldapadd.

Un utente specifico per l'autenticazione LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Un utente specifico per l'autenticazione Per quanto riguarda l'autenticazione conviene creare un utente dedicato sull'elenco, da tenere separato dall'utente utilizzato come amministratore dell'elenco. Questo permette di avere un maggiore controllo su quanto i vari client potranno fare, limitando l'accesso alle sole informazioni che è possibile prelevare (ricordate le ACL?). Per questo conviene creare un file ldif fatto pressapoco così: dn: cn=authuser,dc=vostro_dominio,dc=dominio_primo_livello cn: authuser sn: authuser objectClass: top objectClass: person userPassword: {CRYPT}D9/AZpu.opt3o Il campo userPassword può essere ottenuto col comando, seguente specificando l'hash. maciste:~# slappasswd -h {CRYPT} New password: Re-enter new password: {CRYPT}D9/AZpu.opt3o

Come verificare il funzionamento del NSS LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Come verificare il funzionamento del NSS A questo punto, se è stato tutto fatto correttamente, dovremmo poter estrarre informazioni su gruppi, utenti, shadow password, da ogni macchina della rete abilitata a usare ldap (cioè con il file libnss-ldap corettamente configurato). Per verificare usiamo il comando getent. macchina_client# getent passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync ...... pallotron:x:1000:1000:Angelo Michele Failla:/home/pallotron:/bin/bash gmaggio:x:1001:1000:Gabriele Maggio:/home/gmaggio:/bin/bash administrator:x:0:1000:Account admin win:/home/Administrator:/bin/bash segreteria:x:1002:1000:account di prova:/home/segreteria:/bin/bash mgrasso:x:1003:1000:Maurizio Grasso:/home/mgrasso:/bin/bash Verifichiamo poi group e shadow nella medesima maniera.

Configurare P.A.M.: ldap.conf LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Configurare P.A.M.: ldap.conf Ora che il NSS sta correttamente funzionando occorre configurare l'infrastruttura PAM delle nostre macchine client per permettere a servizi come login, passwd, ssh, etc di poter autenticare e cambiare le password. Prima di far questo occorre assicurarsi che le macchine client abbiano l'infrastruttura pam in grado di usare ldap, questo si verifica vedendo se in /lib/security esiste il relativo modulo pam_ldap.so, se questo file non è presente occorre installare questo modulo (sotto debian apt-get install libpam-ldap). Per far ciò occorre editare il file /etc/ldap/ldap.conf e i file dentro /etc/pam.d. Ecco il file ldap.conf: rootbinddn cn=admin,dc=vostro_dominio,dc=dominio_primo_livello binddn cn=authuser,dc=vostro_dominio,dc=dominio_primo_livello bindpw <pass_segreta> ssl start_tls ssl on suffix dc=vostro_dominio, dc=dominio_primo_livello uri ldaps://server_ldap.vostro_dominio.dominio_primo_livello/ ldap_version 3 pam_filter objectclass=posixAccount pam_login_attribute uid pam_password md5 pam_member_attribute memberuid pam_template_login_attribute uid pam_password crypt

Configurare P.A.M.: la directory pam.d LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Configurare P.A.M.: la directory pam.d Cosa ben diversa è invece la directory pam.d. All'interno di questa directory sono contenuti i vari file di configurazione per ogni servizio, che modificano il loro comportamento in fase di autenticazione. maciste:/etc/pam.d# ls BACKUP cupsys other sudo chfn gdm other.dpkg-old suexec-apache chsh gdm-autologin passwd suexec-apache-ssl common-account kcheckpass passwd.dpkg-old xdm common-auth kdm ppp xscreensaver common-password kscreensaver samba common-session login ssh cron login.dpkg-old su Sotto debian basta toccare i file common*, in quanto questi vengono poi inclusi da tutti gli altri.

Configurare P.A.M.: la directory pam.d LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Configurare P.A.M.: la directory pam.d common-account account sufficient pam_ldap.so account required pam_unix.so common-auth (definisce gli schemi di autenticazione da usare nel sistema) auth sufficient pam_ldap.so use_first_pass auth required pam_unix.so common-password (definisce i moduli che permettono di cambiare la password) password sufficient pam_ldap.so password sufficient pam_unix.so nullok use_authtok md5 shadow use_first_pass password required pam_deny.so common-session (definisce i moduli che definiscono i task da compiere all'inizio e alla fine di una sessione) session required pam_mkhomedir.so skel=/etc/skel/ session sufficient pam_ldap.so session required pam_unix.so

Configurare Samba: Premesse LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Configurare Samba: Premesse Adesso vedremo come configurare un server SAMBA (versione 3) come PDC utilizzando ldap come backend per utenti e gruppi. Prima di passare effettivamente alla sua configurazione prepariamo l'elenco ldap. Abbiamo bisogno di: 1) includere lo schema di samba3 nel file di configurazione di slapd 2) sono necessari alcuni dn di base per far joinare le workstation al dominio. Le entry di base dell'elenco sono nobody, administrator. Creiamoci il nostro file ldiff con queste entry e poi aggiungiamole con il comando ldapadd.

Configurare Samba: Entry LDAP di base LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Configurare Samba: Entry LDAP di base dn: uid=Administrator, dc=vostro_dominio, dc=dominio_primo_livello objectClass: account objectClass: sambaSamAccount           objectClass: posixAccount   gecos: Samba Admin              homeDirectory: / loginShell: /dev/null                 uidNumber: 506 gidNumber: 0               uid: Administrator sambaPwdLastSet: 1042526918 sambaLogonTime: 0 sambaLogoffTime: 0           sambaKickoffTime: 0           sambaPwdCanChange: 0 sambaPwdMustChange: 0 displayName: Administrator  cn: Administrator             sambaHomePath: \\%N\ sambaHomeDrive: U:          sambaProfilePath: \\%N\\profile sambaSID: S-1-5-21-2656270644-2771678393-2525940785-500 sambaPrimaryGroupSID: S-1-5-21-2656270644-2771678393-2525940785-512 sambaLMPassword: 7DDDDD60A3BD71AAAAA65F36030673DD sambaNTPassword: 6417743DD60A3BD71AAAAA82F4CC21AA sambaAcctFlags: [UX         ] Nota: i path sono relativi alla configurazione del server samba, i campi delle password sono settati random, tanto dopo potrà essere cambiato con il comando smbpasswd. Occorre sostituire S-1-5-21-2656270644-2771678393-2525940785 con il SID ottenuto con il comando net getlocalsid

Configurare Samba: Entry LDAP di base LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Configurare Samba: Entry LDAP di base dn: uid=nobody, dc=unav, dc=es               objectClass: account objectClass: sambaSamAccount objectClass: posixAccount uid: nobody                  sambaPwdLastSet: 1026225030   sambaLogonTime: 0   sambaLogoffTime: 2147483647 sambaKickoffTime: 2147483647 sambaPwdCanChange: 0 sambaPwdMustChange: 2147483647  displayName: Nobody cn: Nobody sambaSID: S-1-5-21-2656270644-2771678393-2525940785-501 sambaPrimaryGroupSID: S-1-5-21-2656270644-2771678393-2525940785-514 gecos: Nobody or Guest        homeDirectory: /              loginShell: /dev/null      uidNumber: 99 gidNumber: 99                sambaAcctFlags: [UX         ]

Configurare Samba: il file smb.conf LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Configurare Samba: il file smb.conf [global] workgroup = NOME_DOMINIO security = user netbios name = maciste obey pam restrictions = Yes pam password change = yes passdb backend = tdbsam ldapsam:ldap://localhost/ syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 name resolve order = lmhosts host wins bcast logon script = script_logon.bat logon path = \\maciste\profiles logon drive = U: logon home = \\maciste\%u domain logons = Yes preferred master = Yes local master = Yes domain master = Yes dns proxy = No wins support = Yes idmap uid = 10000-15000 idmap gid = 10000-15000 winbind separator = '\' winbind use default domain = Yes winbind enum users = yes winbind enum groups = yes

Configurare Samba: il file smb.conf LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Configurare Samba: il file smb.conf ldap suffix = dc=agencyuzeda, dc=local ldap machine suffix = ou=Hosts,dc=agencyuzeda, dc=local ldap user suffix = ou=People,dc=agencyuzeda, dc=local ldap group suffix = ou=Group, dc=agencyuzeda, dc=local ldap idmap suffix = dc=agencyuzeda, dc=local ldap admin dn = cn=admin,dc=agencyuzeda,dc=local [homes] comment = Home Directories read only = No create mask = 0755 directory mask = 0755 browseable = No [netlogon] comment = Network Logon Service path = /var/samba/netlogon write list = @ntadmin guest ok = Yes share modes = No [profiles] path = /var/samba/profiles create mask = 0600 directory mask = 0700

Come joinare le macchine al dominio LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Come joinare le macchine al dominio Per cambiare la password dell'account Administrator utilizziamo il comando smbpasswd. smbpasswd -w <nostra_pass_segreta> Dopo questo comando la password sarà modificata e possiamo joinare le nostre macchine al dominio. Per fare ciò occorre inserire un entry per ogni macchine all'interno dell'elenco ou=Hosts, dc=vostrodominio, dc=dominio_pimo_livello con il comando: smbpasswd -a -m <machine_name>$ Dopodichè, su ogni macchina windows da joinare occorrerà recarsi sul pannello di controllo -> Proprietà di sistema -> Nome computer -> Cambio Dominio. Verrà richiesto l'utente con cui joinare, occorrerà inserire la stringa VOSTRODOMINIO\Administrator ed inserire la password settata con smbpasswd -w (TODO: mettere screenshot)

Come joinare le macchine al dominio LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Come joinare le macchine al dominio

Il groumapping POSIX <--> Samba LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Il groumapping POSIX <--> Samba Se la vostra è un rete etorogenea, fatta di macchine Linux e Windows, che accedono a directory condivise da un fileserver (le macchine windows con samba, quelle linux ad es. Tramite NFS o altri filesystem di rete), può sorgere la esigenza di mappare i gruppi posix con quelli di windows, e viceversa, in modo da non avere noie e problemi con i permessi. Questo si realizza con la utility net messa a disposizione dal comando samba (dopo aver aggiunto il gruppo samba al vostro elenco ldap) maciste:~# net groupmap list System Operators (S-1-5-32-549) -> manager grafici (S-1-5-21-1319615927-900196694-2235752281-3005) -> grafici [snip] Domain Admins (S-1-5-21-1319615927-900196694-2235752281-512) -> manager Domain Users (S-1-5-21-1319615927-900196694-2235752281-513) -> users Power Users (S-1-5-32-547) -> manager Print Operators (S-1-5-32-550) -> manager Administrators (S-1-5-32-544) -> manager Account Operators (S-1-5-32-548) -> manager Users (S-1-5-32-545) -> users programmatori (S-1-5-21-1319615927-900196694-2235752281-3003) -> programmatori La mappatura si realizza con il comando: net groupmap add unixgroup=<nome_gruppo> type=domain ntgroup=<gruppo win>

Alcuni tools di amministrazione: LAM e phpLDAPadmin LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Alcuni tools di amministrazione: LAM e phpLDAPadmin E' irragionevole gestire un dominio con i soli comandi di shell!! Per questo vengono in aiuto delle interfaccie, alcune binarie altre direttamente web, che permettono di gestire gli account, i gruppi, e le macchine. LAM è uno di questi. La cosa più interessante di questo tool è che permette di gestire sia gli account posix che quelli samba in modo integrato. Permette di impostare le password, gli expire, i path dei profili windows e delle home unix, di parametrizzare gli script bat di logon per ogni utente. Ha anche la possibilità di definire dei template di profilo. PhpLDAPadmin è invece un'applicativo php per l'accesso generale alla struttura dell'elenco, con esso è possibile browsare e modificare l'elenco in ogni singolo punto dell'albero, aggiungere attributi e classi ad un entry (io lo uso per gestire il dominio di posta con qmail + ldap). Di seguito degli screenshot.

LAM LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com LAM

phpLDAPadmin LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com phpLDAPadmin

Altri scenari d'uso LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - afailla@uzeda.com Altri scenari d'uso Aggiungendo gli opportuni schemi in slapd.conf e espandendo le entry di ogni singolo utente con gli attributi di questi schemi è possibile utilizzare un elenco ldap per autenticare un utente su innumervoli servizi, tra cui: Apache (autenticazione HTTP); MySQL; Squid (Proxy WEB); Qmail e altri server di posta; Altri servizi. In più è anche possibile utilizzare una porzione del nostro db ldap per realizzare un elenco di contatti che poi è possibile browsare praticamente con tutti i client di posta evoluti come Evolution, Sylpheed, Mail di Apple, ed anche lo stesso Outlook Express.