Newsgroup: it.comp.os.linux.sys
Titolo: openldap client per autenticarsi in AD

Ciao a tutti,
vi espongo l'annoso problema  :)
voglio fare in modo che gli utenti di un dominio AD di M$ possano
autenticarsi anche su un server linux RedHat.
Sembra facile, ma obbligatoriamente non deve esserci samba di mezzo..
Ho letto che pam_ldap ed nss_ldap fanno al caso mio quindi ho provato
ad installare open_ldap client (pam_ldap ed nss_ldap sono di default
su RH) e configurato ldap.conf,nsswitch.conf e krbs5.conf con i
riferimenti al mio dominio. Ovviamente dovendo solo richiedere
informazioni sul SAM account non è necessario installare la parte
server di openldap.
Configurato il tutto, ho fatto una prova usando ldapsearch e la query
funziona solo se specifico il DN e faccio il bind per specificare
l'utente autorizzato in AD da utilizzare nella query.
ldapsearch  -D "cn=Andrea,ou=Users,dc=test,dc=com" -w password -x
Ho specificato allora il bind nel file ldap.conf per usare lo stesso
account per le query.
Ho provato poi a specificare (tramite l'utility di config. redhat-
auth) di usare ldap+kerberos per autenticare su Linux, ho fatto il
login ma una volta data la password rimane in standby... anche facendo
un su - o qualsiasi operazione che richieda la verifica delle
informazioni account utente, mi rimane bloccata la sessione.
speravo che qualcuno di voi avesse già provato una soluzione del
genere, magari mi sapete
indicare qualche informazione utile...
grazie mille
andrew

Andrea ha scritto:

Non ti so aiutare purtroppo, ma non ho capito una cosa, perché non deve 
esserci il server ldap?
Secondo me serve, e al massimo smista poi le richieste al m$, o mi sbaglio?


bè,  il kerberos dovrebbe servire per l'autenticazione in ambienti
windows (GSSAPI), cmq ho provato a toglierlo ma non cambia nulla, mi
sa che si è sputt. qualcosa.
In ogni modo, con openldap di RedHat non è possibile specificare il
bind nel file di config. principale (ldap.conf) quindi come cavolo
faccio poi ad integrare l'autenticazione ldap??


si , però openldap su RedHat gestisce in modo differente le opzioni.
http://www.opensourceinfo.org/index.php/man_pages/ldap.conf
l'opzione binddn è disponibile solo come user only , quindi
tramite .ldaprc
L'ho creata sotto la home utente ma mi va in errore:
 "nss_ldap: failed to bind to LDAP server ldap://
test.com/
: Invalid
credentials"
quindi è proprio il bind che non va :(

 
no, quello č proprio openldap, perň modificato da redhat, in quanto
l'openldap originale non prevede bindpw.


Se può esserti utile questa guida:
http://download.microsoft.com/download/0/7/2/072cf40b-0575-42e5-8f97-614d3db4fa66/Integrazione_AD.pdf
già, microsoft.
la stessa guida è stata pubblicata anche su Linux & C n. 61

 la stessa guida è stata pubblicata anche su Linux & C n. 61
si avevo già letto questa guida. Il fatto è che si basa sulla modifica
dello schema AD tramite i services for Unix che in realtà a me non
servono, oltretutto non voglio joinare linux nel dominio, solo per
autenticare le utenze basterebbe pam_ldap ed nss_ldap.

 autenticare le utenze basterebbe pam_ldap ed nss_ldap.
se non modifichi lo schema AD, come fai ad ottenere UID e GID per ogni 
utente? li ricrei localmente?

 l'openldap originale non prevede bindpw.
No, è l'ex Netscape Directoy, poi passato come Fedora Directory.
-- 
Vide

 windows (GSSAPI)
Il kerberos serve per il SSO, dato che ti rimane il ticket di sessione per
entrare senza dover di nuovo dare le credenziali (user+password). Ma il
backend di auth è comunque LDAP
-- 
Vide


a questo ci pensa proprio nss_ldap.
Il problema è che non riesco a fargli leggere il benedetto .ldaprc in
modo che possa fare il bind all'autenticazione  :(

Vide wrote:

che cosa è Fedora/Red Hat Directory?
quello che usa Andrea? 
non mi pare, ti ha anche linkato il man di openldap


infatti non si tratta di DS della fedora/RH, ma solamente di openldap
probabilmente leggermente modificato per casa Redhat (come molti dei
suoi programmi)

Andrea wrote:

non so se quello che vuoi fare tu sia fattibile, ma se è nss-ldap che deve
funzionare, le informazioni per il bind le devi mettere in /etc/ldap.conf,
non in /etc/openldap/ldap.conf

 non mi pare, ti ha anche linkato il man di openldap
Ah ok, scussate :P però cmq RH ha anche il suo DS che non è OpenLDAP
-- 
Vide

 non in /etc/openldap/ldap.conf
infatti le avevo create, ma non se le fila.
come non si fila il bind dentro .ldaprc.
mentre specificandole in una query ldapsearch il tutto funziona
(infatti le utility openldap-client si appoggiano a /etc/ldap.conf)
è proprio redhat che non funzia, appena torna su il sito provo a
guardare.. anche se ci avevo già provato.

Andrea wrote:

io ti linko pure questo, ma si basa sempre sulla modifica dello schema AD:
http://blog.scottlowe.org/2005/12/22/complete-linux-ad-authentication-details/

 io ti linko pure questo, ma si basa sempre sulla modifica dello schema AD:
è inutile che tu cerchi di recuperare le info di un utente con
nss_ldap e pam_ldap se non hai lo schema ldap AD modificato...
un utente active directory non dispone degli attributi posix quali uid
e gid, etc... quindi è impossibile autenticare direttamente tali
utenti su macchine posix. a questo punto ci sono due modi per
procedere:
1. modificare lo schema AD (vedi i link già postati)
2. utilizzare winbind 
http://openskills.info/infobox.php?ID=863
ciao,
stefano


winbind, quindi con Samba. Alla fine o è Windows che si adatta a Linux
(modificando l'AD) o viceversa (con Samba).
Eppure questo decantato nss_ldap dovrebbe permettere di fare da
interfaccia per la conversione UID / GID almeno per quanto riguarda
solo gli attributi utente/password.
Adesso proverò con winbind, visto che non ne vengo fuori.
L'alternativa sarebbe mettere su un proxy openldap, oppure un server
Windows R2 SUA aggiuntivo che faccia anche lui da "gateway" per le
autenticazioni..

 wrote:

a me va in errore il link di openskills, sia con IE che con Firefox..

 autenticazioni..
il problema, come ho già cercato di spiegare, sta nel fatto che un
utente active directory non possiede attributi posix quali uid, gid,
home directory, ...
come farebbe un proxy ldap a capire che uid e gid dare ai vari utenti?
ne da a caso? e su che base? e lo stesso problema si porrebbe con
nss_ldap
secondo me è impossibile autenticare un utente unix su AD
semplicemente così...
riposto il link di openskills
http://openskills.info/infobox.php?ID=863
ciao,
stefano


mi spiace contraddirti ma funziona!  :)
il problema era che per fare il bind usavo un utente che non aveva
suff. permessi per fare le query su tutti i sAMaccountname degli
utenti di dominio.
Ho usato un utente domain_admin (temporaneamente) e funziona.
Adesso riesco ad autenticare gli user locali di linux tramite AD di
windows, senza l'uso di samba o modificando lo schema AD.
nss_ldap serve proprio a fare da interfaccia (name service) , inoltre
gli UID/GID degli utenti rimangono invariati in quanto pam_ldap ed
nss_ldap servono solo per l'autenticazione user/password.
es con utente auth in ldap:
uid=501(gand) gid=502(gand) groups=502(gand)
context=root:system_r:unconfined_t:SystemLow-SystemHigh
farò altre prove ma sembra funzionare egregiamente ed è anche veloce.
grazie per il vostro supporto.

 mi spiace contraddirti ma funziona!  :)
tanto per curiosità, visto che non l'ho mai fatto ma mi interessa
capire, potresti postare (o mandarmi in privato) il file di
configurazione di nss ldap?
grazie!
stefano


i parametri principali nel file nsswitch.conf:
passwd:     files ldap
shadow:     files ldap
group:       files ldap
(ma funziona anche con compat)
ldap.conf:
base dc=dominio,dc=com
uri ldap://IP_di_ldap_server/
ldap_version 3
binddn CN=utente_proxy,OU=Users,OU=Milano,DC=dominio,DC=com
bindpw password_utente_proxy
scope sub
nss_base_passwd ou=Users,ou=Milano,dc=dominio,dc=com?one
nss_base_shadow ou=Users,ou=Milano,dc=dominio,dc=com?one
# RFC 2307 (AD) mappings
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute uid sAMAccountName
#nss_map_attribute homeDirectory unixHomeDirectory
#nss_map_attribute shadowLastChange pwdLastSet
#nss_map_objectclass posixGroup group
nss_map_attribute uniqueMember member
pam_login_attribute sAMAccountName
pam_filter objectclass=User
pam_password md5
# inserito per test
nss_map_attribute cn samAccountName
ssl no
Tieni conto che non è attivo SSL nel dominio, altrimenti bisognerebbe
attivarlo.
Inoltre non uso il kerberos perchè non mi serve il SSO ma solamente
l'autenticazione centralizzata.
Ciao
Andrea

 #nss_map_attribute homeDirectory unixHomeDirectory
per le home come fai?
grazie!
PS. Andrea, scusa il messaggio privato, ma non avevo visto la tua
risposta qui (e neanche la mia richiesta, quindi ho pensato di aver
sbagliato a inviarla e te l'ho rifatta direttamente :-)


uso le home locali su Linux.
In pratica a me serve solamente che l'autenticazione venga controllata
tramite ldap di windows. Una volta verificata la login (nss_ldap pensa
a gestire gli UID/GID), tutto il resto è gestito normalmente da Linux.
Nel file pam.d/login  (oppure authconfig di redhat) puoi definire la
politica di autenticazione per il modulo pam_ldap, ovvero
"required" (è obbligatoria l'autenticazione ldap altrimenti non fa il
login) oppure "sufficient" o altre opzioni.. adesso non ho il file da
vedere ma se vuoi te lo mando.
bye