Comments
Description
Transcript
LDAP per Autenticazione SAMBA e PAM
http://www.uzeda.com LDAP per Autenticazione SAMBA e PAM Webb.it 2004 Angelo Failla a.k.a. pallotron [email protected] LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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. ● LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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=com o: uzeda objectclass: organization dn: cn=Angelo Failla, o=uzeda, c=com cn=Angelo Failla sn=Failla mail: [email protected] objectclass: person o=uzeda, c=com cn= Angelo Failla, o=uzeda, c=com LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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. ● LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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) LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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. ● LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - [email protected] 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 Definizione schemi /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} # Backend specific directives apply to this # backend until another 'backend' directive # Where the pid file is put. The init.d script # occurs # will not stop the server if you change this. pidfile /var/run/slapd/slapd.pid backend bdb #backend <other backen> # List of arguments that were passed to the server #backend <another one> argsfile /var/run/slapd.args # Read slapd.conf(5) for possible values loglevel 256 # Where the dynamically loaded modules are stored modulepath moduleload /usr/lib/ldap back_bdb LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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 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 # 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 {CRYPT}rkoPoUxb6iKN6 LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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 by by by by attrs=userPassword dn="cn=admin,dc=miodominio,dc=mio_dominio_primolivello" write anonymous auth self write * 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 Definizione ACL LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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: LDAP per Autenticazione SAMBA e PAM webb.it 2004 – Angelo Failla aka pallotron - [email protected] http://www.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: group: shadow: files ldap files ldap files ldap hosts: networks: files dns ldap files protocols: services: ethers: rpc: db db db db netgroup: nis files files files files LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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_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 nss_base_shadow nss_base_group nss_base_hosts ssl start_tls ssl on ou=People,dc=agencyuzeda,dc=local?one ou=People,dc=agencyuzeda,dc=local?one ou=Group,dc=agencyuzeda,dc=local?one ou=Hosts,dc=agencyuzeda,dc=local?one 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. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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=it ou: Hosts objectClass: top objectClass: organizationalUnit LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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 -D -W -f dice al comando di utilizzare la simple authentication indica con quale dn si deve fare il lobin indica al comando di chiedere la password 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. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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_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 LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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 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. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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_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_attribu te uid pam_password crypt LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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# ls BACKUP cupsys chfn gdm chsh gdm-autologin common-account kcheckpass common-auth kdm common-password kscreensaver common-session login cron login.dpkg-old other other.dpkg-old passwd passwd.dpkg-old ppp samba ssh su sudo suexec-apache suexec-apache-ssl xdm xscreensaver Sotto debian basta toccare i file common*, in quanto questi vengono poi inclusi da tutti gli altri. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - [email protected] Configurare P.A.M.: la directory pam.d common-account account sufficient account required pam_ldap.so pam_unix.so common-auth (definisce gli schemi di autenticazione da usare nel sistema) auth auth sufficient required pam_ldap.so use_first_pass pam_unix.so common-password (definisce i moduli che permettono di cambiare la password) password password password sufficient sufficient required pam_ldap.so pam_unix.so nullok use_authtok md5 shadow use_first_pass pam_deny.so common-session (definisce i moduli che definiscono i task da compiere all'inizio e alla fine di una sessione) session required session sufficient session required pam_mkhomedir.so skel=/etc/skel/ pam_ldap.so pam_unix.so LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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 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. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - [email protected] Configurare Samba: Entry LDAP di base dn: uid=Administrator, dc=vostro_dominio, dc=dominio_primo_livello objectClass: account objectClass: sambaSamAccount Nota: i path sono relativi alla configurazione del server objectClass: posixAccount gecos: Samba Admin samba, i campi delle password sono settati random, homeDirectory: / tanto dopo potrà essere cambiato con il comando loginShell: /dev/null smbpasswd. uidNumber: 506 gidNumber: 0 Occorre sostituire S-1-5-21-2656270644-2771678393uid: Administrator 2525940785 con il SID ottenuto con il comando sambaPwdLastSet: 1042526918 sambaLogonTime: 0 sambaLogoffTime: 0 net getlocalsid 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 ] LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - [email protected] 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 ] LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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 LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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 LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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) LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - [email protected] Come joinare le macchine al dominio LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - [email protected] 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> LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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. LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - [email protected] LAM LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.it 2004 – Angelo Failla aka pallotron - [email protected] phpLDAPadmin LDAP per Autenticazione SAMBA e PAM http://www.uzeda.com webb.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.