Http:// LDAP per Autenticazione SAMBA e PAM Webb.it 2004 Angelo Failla a.k.a. pallotron...

35
http://www.uzeda.com LDAP per Autenticazione SAMBA e PAM Webb.it 2004 Angelo Failla a.k.a. pallotron [email protected]

Transcript of Http:// LDAP per Autenticazione SAMBA e PAM Webb.it 2004 Angelo Failla a.k.a. pallotron...

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

http://www.uzeda.com

LDAP per AutenticazioneSAMBA e PAM

Webb.it 2004

Angelo Failla a.k.a. [email protected]

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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=como: uzedaobjectclass: organizationdn: cn=Angelo Failla, o=uzeda, c=comcn=Angelo Faillasn=Faillamail: [email protected]: person

o=uzeda, c=com

cn= Angelo Failla, o=uzeda, c=com

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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)

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

slapd.conf – direttive globali (man 5 slapd)# Global Directives:

# Features to permitallow bind_v2

# Schema and objectClass definitionsinclude /etc/ldap/schema/core.schemainclude /etc/ldap/schema/cosine.schemainclude /etc/ldap/schema/nis.schemainclude /etc/ldap/schema/inetorgperson.schemainclude /etc/ldap/schema/samba.schemainclude /etc/ldap/schema/qmail.schema

# Schema check allows for forcing entries to match schemas for their objectClasses'sschemacheck onpassword-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 serverargsfile /var/run/slapd.args

# Read slapd.conf(5) for possible valuesloglevel 256

# Where the dynamically loaded modules are storedmodulepath /usr/lib/ldapmoduleload back_bdb

Definizione schemi

# Backend specific directives apply to this# backend until another 'backend' directive# occurs

backend bdb#backend <other backen>#backend <another one>

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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 occursdatabase bdb

# The base of your directory in database #1suffix "dc=miodominio,dc=mio_dominio_primolivello"

# For SSL/TSL authenticationTLSCertificateFile /etc/ssl/certs/ldapcert.pemTLSCertificateKeyFile /etc/ssl/certs/ldapkey.pemTLSCipherSuite HIGHTLSCACertificateFile /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 #1directory "/var/lib/ldap"

# Indexing options for database #1index objectClass eq uid

# Save the time that the entry gets modified, for database #1lastmod on

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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

by * none

access to * by dn="cn=admin,dc=agencyuzeda,dc=local" write by dn="cn=authuser,dc=agencyuzeda,dc=local" read

DefinizioneACL

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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:

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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 ldapgroup: files ldapshadow: files ldap

hosts: files dns ldapnetworks: files

protocols: db filesservices: db filesethers: db filesrpc: db files

netgroup: nis

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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_primariouri ldaps://vostroserver.vostrodominio.dominio_primario/ldap_version 3

binddn cn=authuser,dc=vostrodominio,dc=dominio_primariobindpw <password_segreta>

rootbinddn cn=admin,dc=vostrodominio,dc=dominio_primario

scope one

nss_base_passwd ou=People,dc=agencyuzeda,dc=local?onenss_base_shadow ou=People,dc=agencyuzeda,dc=local?onenss_base_group ou=Group,dc=agencyuzeda,dc=local?onenss_base_hosts ou=Hosts,dc=agencyuzeda,dc=local?one

ssl start_tlsssl 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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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=itou: HostsobjectClass: topobjectClass: organizationalUnit

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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_livellocn: authusersn: authuserobjectClass: topobjectClass: personuserPassword: {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

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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 passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/shbin:x:2:2:bin:/bin:/bin/shsys:x:3:3:sys:/dev:/bin/shsync:x:4:65534:sync:/bin:/bin/sync............pallotron:x:1000:1000:Angelo Michele Failla:/home/pallotron:/bin/bashgmaggio:x:1001:1000:Gabriele Maggio:/home/gmaggio:/bin/bashadministrator:x:0:1000:Account admin win:/home/Administrator:/bin/bashsegreteria:x:1002:1000:account di prova:/home/segreteria:/bin/bashmgrasso:x:1003:1000:Maurizio Grasso:/home/mgrasso:/bin/bash

Verifichiamo poi group e shadow nella medesima maniera.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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_livellobinddn cn=authuser,dc=vostro_dominio,dc=dominio_primo_livellobindpw <pass_segreta>

ssl start_tlsssl on

suffix dc=vostro_dominio, dc=dominio_primo_livellouri ldaps://server_ldap.vostro_dominio.dominio_primo_livello/

ldap_version 3

pam_filter objectclass=posixAccount

pam_login_attribute uidpam_password md5

pam_member_attribute memberuid

pam_template_login_attribute uid pam_password crypt

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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# lsBACKUP cupsys other sudochfn gdm other.dpkg-old suexec-apachechsh gdm-autologin passwd suexec-apache-sslcommon-account kcheckpass passwd.dpkg-old xdmcommon-auth kdm ppp xscreensavercommon-password kscreensaver sambacommon-session login sshcron login.dpkg-old su

Sotto debian basta toccare i file common*, in quanto questi vengono poi inclusi da tutti gli altri.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

Configurare P.A.M.: la directory pam.d

common-accountaccount sufficient pam_ldap.soaccount required pam_unix.so

common-auth (definisce gli schemi di autenticazione da usare nel sistema)auth sufficient pam_ldap.so use_first_passauth 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_passpassword 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.sosession required pam_unix.so

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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 slapd2) 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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

Configurare Samba: Entry LDAP di basedn: uid=Administrator, dc=vostro_dominio, dc=dominio_primo_livelloobjectClass: accountobjectClass: sambaSamAccount           objectClass: posixAccount   gecos: Samba Admin              homeDirectory: /loginShell: /dev/null                 uidNumber: 506gidNumber: 0               uid: AdministratorsambaPwdLastSet: 1042526918sambaLogonTime: 0sambaLogoffTime: 0           sambaKickoffTime: 0           sambaPwdCanChange: 0sambaPwdMustChange: 0displayName: Administrator  cn: Administrator             sambaHomePath: \\%N\sambaHomeDrive: U:          sambaProfilePath: \\%N\\profile sambaSID: S-1-5-21-2656270644-2771678393-2525940785-500sambaPrimaryGroupSID: S-1-5-21-2656270644-2771678393-2525940785-512sambaLMPassword: 7DDDDD60A3BD71AAAAA65F36030673DDsambaNTPassword: 6417743DD60A3BD71AAAAA82F4CC21AAsambaAcctFlags: [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

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

Configurare Samba: Entry LDAP di basedn: uid=nobody, dc=unav, dc=es               objectClass: accountobjectClass: sambaSamAccountobjectClass: posixAccountuid: nobody                  sambaPwdLastSet: 1026225030   sambaLogonTime: 0   sambaLogoffTime: 2147483647sambaKickoffTime: 2147483647 sambaPwdCanChange: 0sambaPwdMustChange: 2147483647  displayName: Nobodycn: NobodysambaSID: S-1-5-21-2656270644-2771678393-2525940785-501sambaPrimaryGroupSID: S-1-5-21-2656270644-2771678393-2525940785-514gecos: Nobody or Guest        homeDirectory: /              loginShell: /dev/null      uidNumber: 99gidNumber: 99                sambaAcctFlags: [UX         ]

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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 read only = No create mask = 0600 directory mask = 0700

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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)

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

Come joinare le macchine al dominio

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

Il groumapping POSIX <--> SambaSe 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 listSystem Operators (S-1-5-32-549) -> managergrafici (S-1-5-21-1319615927-900196694-2235752281-3005) -> grafici[snip]Domain Admins (S-1-5-21-1319615927-900196694-2235752281-512) -> managerDomain Users (S-1-5-21-1319615927-900196694-2235752281-513) -> usersPower Users (S-1-5-32-547) -> managerPrint Operators (S-1-5-32-550) -> managerAdministrators (S-1-5-32-544) -> managerAccount Operators (S-1-5-32-548) -> managerUsers (S-1-5-32-545) -> usersprogrammatori (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>

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

LAM

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

phpLDAPadmin

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

http://www.uzeda.com

LDAP per Autenticazione SAMBA e PAMwebb.it 2004 – Angelo Failla aka pallotron - [email protected]

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.