Erinevus lehekülje "Ldap klient ja server" redaktsioonide vahel
(→Haldusvahendid) |
|||
2. rida: | 2. rida: | ||
(Lightweight Directory Access Protocol) http://www.openldap.org/ on Michigani Ülikooli (University of Michigan) poolt välja töötatud kataloogiteenuse protokoll asendamaks X.500 DAP (Directory Access Protocol) protokolli. Süsteemis pakub ta võimalust ühe teenuse piires hoida ning väljastada mitmesugust kasutajakontode kohta käivat infot. Näiteks hoida lisaks kasutaja paroolile ja nimele veel tema kontaktandmeid, samba parooli jms. Samuti saab ldap’i hästi kasutada kui on mitu serverit (mail, www, samba, terminaliserver) ning oleks vaja, et samad kasutajad eksisteeriksid kõigis neis serverites. Käesolev näide sobibki sellise lahenduse loomiseks kõige paremini :) | (Lightweight Directory Access Protocol) http://www.openldap.org/ on Michigani Ülikooli (University of Michigan) poolt välja töötatud kataloogiteenuse protokoll asendamaks X.500 DAP (Directory Access Protocol) protokolli. Süsteemis pakub ta võimalust ühe teenuse piires hoida ning väljastada mitmesugust kasutajakontode kohta käivat infot. Näiteks hoida lisaks kasutaja paroolile ja nimele veel tema kontaktandmeid, samba parooli jms. Samuti saab ldap’i hästi kasutada kui on mitu serverit (mail, www, samba, terminaliserver) ning oleks vaja, et samad kasutajad eksisteeriksid kõigis neis serverites. Käesolev näide sobibki sellise lahenduse loomiseks kõige paremini :) | ||
+ | |||
+ | dc: com | ||
+ | | | ||
+ | dc: genfic (Organisation) | ||
+ | / \ | ||
+ | ou: People servers (Organisational Units) | ||
+ | / \ .. | ||
+ | uid: .. John (OU-specific data) | ||
===Serveri pool=== | ===Serveri pool=== |
Redaktsioon: 19. mai 2010, kell 13:06
Sisukord
LDAP
(Lightweight Directory Access Protocol) http://www.openldap.org/ on Michigani Ülikooli (University of Michigan) poolt välja töötatud kataloogiteenuse protokoll asendamaks X.500 DAP (Directory Access Protocol) protokolli. Süsteemis pakub ta võimalust ühe teenuse piires hoida ning väljastada mitmesugust kasutajakontode kohta käivat infot. Näiteks hoida lisaks kasutaja paroolile ja nimele veel tema kontaktandmeid, samba parooli jms. Samuti saab ldap’i hästi kasutada kui on mitu serverit (mail, www, samba, terminaliserver) ning oleks vaja, et samad kasutajad eksisteeriksid kõigis neis serverites. Käesolev näide sobibki sellise lahenduse loomiseks kõige paremini :)
dc: com | dc: genfic (Organisation) / \ ou: People servers (Organisational Units) / \ .. uid: .. John (OU-specific data)
Serveri pool
Installime openldap serveri
FreeBSD's
cd /usr/ports/net/openldap24-server && make install
teises os'ides vastavalt siis emerge apt-get install etc
Süsteemi paigaldatakse ka berkeley db, mida openldab defauldis kasutab, kuid on võimalik seada see tööle ka nö näiteks postgresql peal.
genereerime serverile parooli
# slappasswd -s parool {SSHA}nPKG3qbPABkp21aTBZV2IpbcGUHLi3a2
liigume /usr/local/etc/openldap ning avame faili slapd.conf, lisame sinna
include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/nis.schema pidfile /var/run/ldap/slapd.pid argsfile /var/run/ldap/slapd.args database bdb suffix "dc=test,dc=org" rootdn "cn=Manager,dc=test,dc=org" rootpw {SSHA}nPKG3qbPABkp21aTBZV2IpbcGUHLi3a2 directory /var/db/openldap-data index objectClass eq index uid pres,eq,sub
Selleks, et toimiks kõik info liigutamine TLS krüpteeritult, genereerime võtmed ja lisame konfi read, näiteks
# Define SSL and TLS properties (optional) TLSCertificateFile /etc/ssl/ldap.pem TLSCertificateKeyFile /etc/openldap/ssl/ldap.pem TLSCACertificateFile /etc/ssl/ldap.pem
Selleks, et kliendid saaksid küll anonüümselt audentida vastu ldap serverit, kuid mitte lugeda krütpeeritud paroole, aitavad read
access to attrs=userPassword by self write by anonymous auth by * none access to * by * read
natuke failiõigusi paika lihtsalt igaksjuhuks
chmod 440 /usr/local/etc/openldap/slapd.conf chown ldap:ldap /usr/local/etc/openldap/slapd.conf chown -R ldap:ldap /var/db/openldap*
/etc/rc.conf’i lisame ldap’i teenuse käivitamiseks boodil
slapd_enable="YES" slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"' slapd_sockets="/var/run/openldap/ldapi"
peale rebooti võime sockstatiga kontrollida kas ldap kuulab 389 pordil
Nüüd loome test.ldiff faili ning ekspordime selle ldap’i, sellega paneme paika kogu struktuuri
dn: dc=test,dc=org dc: test objectClass: top objectClass: domain objectClass: domainRelatedObject associatedDomain: test.org structuralObjectClass: domain dn:ou=groups, dc=test, dc=org objectclass: top objectclass: organizationalUnit ou: groups structuralObjectClass: organizationalUnit dn:ou=people, dc=test, dc=org objectclass: top objectclass: organizationalUnit ou: people structuralObjectClass: organizationalUnit
Teeme failist eksportimise
# slapadd -l test.ldiff
Kaks uute userite lisamise template’t. Slappadd’ga saab nende failide abil ldap’i kasutajad testuser ja testuser2. Muidugi võib kirjutada mingi shellskripti, mis parameetritena võtab kasutaja parooli ja grupi ning loob kodukatalooma lisaks ka :) Genereerida tuleb ka slappasswd’ga parool mõlemale kasutajale
Esimene kasutaja testuser.ldiff
dn: cn=StupidTest User, ou=people, dc=test, dc=org cn: StupidTest User sn: Dummy objectclass: top objectclass: person objectclass: posixAccount objectclass: shadowAccount uid:testuser userpassword:{SSHA}GmbwsRvJugoiT5NIIJ2bk+5YVfWMUVa1 uidnumber:1000 gidnumber:1000 gecos:Niisama ldap user loginShell:/bin/csh homeDirectory: /home/test dn: cn=test, ou=groups, dc=test, dc=org objectclass: top objectclass: posixGroup cn: test gidnumber: 1000 memberuid: test
# slapadd -l testuser.ldiff
Teine kasutaja testuser2.ldiff
dn: cn=StupidTest User2, ou=people, dc=test, dc=org cn: StupidTest User2 sn: Dummy objectclass: top objectclass: person objectclass: posixAccount objectclass: shadowAccount uid:testuser2 userpassword:{SSHA}wU0T6ixZb9sU2+JTK8Au8sq7noNfMkbv uidnumber:1001 gidnumber:1001 gecos:TestUser loginShell:/bin/csh homeDirectory: /home/test2 dn: cn=test2, ou=groups, dc=test, dc=org objectclass: top objectclass: posixGroup cn: test2 gidnumber: 1001 memberuid: test2
# slapadd -l testuser2.ldiff
Kliendi pool
Installime nss_ldap ja pam_ldap softi, sellekäigus paigutatakse süsteemi ka openldap-client
cd /usr/ports/net/nss_ldap && make install clean cd /usr/ports/security/pam_ldap/ && make install
lisame /etc/pam.d/ldap faili 5x puhul või /etc/pam.conf 4x süsteemis rea
login auth sufficient /usr/local/lib/pam_ldap.so
lähme /usr/local/etc ning nimetame nss_ldap.conf.sample nss_ldap.conf loome sellest softlingi ldap.conf’ile
ln -s /usr/local/etc/ldap.conf /usr/local/etc/nss_ldap.conf
kirjutame ldap.conf’i
ssl start_tls tls_checkpeer no ldap_version 3 host 192.168.1.1 <- siia siis ldap serveri ip suffix "dc=test,dc=org" nss_base_passwd ou=People,dc=test,dc=org?sub nss_base_group ou=Group,dc=test,dc=org?sub nss_base_shadow ou=people,dc=test,dc=org?sub BASE dc=test, dc=org scope sub pam_password exop pam_filter objectclass=posixAccount pam_login_attribute uid pam_member_attribute memberuid
avame faili /etc/nsswitch.conf ning kirjutame sinna
passwd: files ldap group: files ldap
nüüd kirjutame /etc/pam.d/sshd konfi
auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass auth required pam_unix.so
kommenteerime kõik muud read vastavalt teiste teenuste pam konfidesse, /etc/pam.d all tuleb lisada samad read, kui huvi ka neid saada ldap’ilt auth’ima, nagu ftp imap jms
# id testuser uid=1000(testuser) gid=1000 groups=1000 # id testuser2 uid=1001(testuser2) gid=1001 groups=1001
# finger testuser Login: testuser Name: Niisama ldap user Directory: /home/test Shell: /bin/csh Never logged in. No Mail. No Plan.
# ssh testuser2@localhost Password: Last login: Tue May 31 14:54:12 2005 from localhost Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 5.4-RELEASE (GENERIC) #0: Sun May 8 10:21:06 UTC 2005 Welcome to FreeBSD! Could not chdir to home directory /home/test2: No such file or directory
viimane rida näitab, et tuleks luua ka serverisse kodukataloog userile ning see nfs’i abil jagada kliendile :)
Linux ldap klient
Installida tuleb samad paketid nagu nss_ldap ja pam ldap
/etc/lpdap.conf'i kasutame sama, mis bsd'l
pam'i konfimiseks kirjutame faili
/etc/pam.d/system-auth
read
auth required pam_env.so auth sufficient pam_unix.so likeauth nullok shadow auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account requisite pam_unix.so account sufficient pam_localuser.so account required pam_ldap.so password required pam_cracklib.so retry=3 password sufficient pam_unix.so nullok use_authtok shadow md5 plain password sufficient pam_ldap.so use_authtok use_first_pass password required pam_deny.so session required pam_limits.so session required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0066 session optional pam_ldap.so
Haldusvahendid
Enda serveri lokaalsete kasutajate ldap’i viimiseks vajalikud skriptid saab http://www.padl.com/OSS/MigrationTools.html Ühtteist saab veel teha näiteks automount ja samba http://www.idealx.org/prj/samba/samba-ldap-howto.pdf ning veebiliides muretseda. Viimaseid on mitmeid kirjutatud, aga alati võib ka ise midagi nokitseda http://ee.php.net/manual/en/ref.ldap.php
Lisaks veel … Yet Another Passwd 2 LDIF Converter http://freshmeat.net/projects/yap2lc/?topic_id=861
Web-based password changing cgi script for LDAP-based user databases http://www.cloudmaster.com/~sauer/projects/fom-files/cache/90.html
Kasutajate administreerimiseks http://cpu.sourceforge.net/
Muidugi ka http://phpldapadmin.sourceforge.net
Phpldapadmini sisselogimiseks kasutaja "cn=Manager,dc=test,dc=org" ja parooliks see mis sai eelnevalt defineeritud
Ldap ja Apache
htaccess vastu ldap'i audentima leidsin kõige lollikindlam panna vastu pam'i mis omakorda ldap külge ehk siis kuigi apachel on tore moodul auth_ldap teatas minu ldap server ,et kasutagem ldapv3 mitte mingit iidset protokolli. Apachet saab ka muidugi ldap'i toega kompileerida.
loomulikult siis tehtud bsd peal aga peaks toimima ka linuxil täpselt samuti. Apache 222 puhul võib olla kõik veel omasoodu erinev. ldap.conf
ssl start_tls tls_checkpeer no suffix "dc=domeen,dc=ee" host 192.168.1.100 base dc=domeen,tdc=ee ldap_version 3 pam_password SSHA nss_base_passwd ou=people,dc=domeen,dc=ee?sub nss_base_group ou=groups,dc=domeen,dc=ee?sub
installime peale ka pam_ldap mooduli
portsude alt make mod_auth_pam'ile ja apache's read lisada
LoadModule auth_pam_module libexec/apache2/mod_auth_pam.so LoadModule auth_sys_group_module libexec/apache2/mod_auth_sys_group.so
/etc/pam.d alla tekitasin faili httpd kuhu kirjutasin read
auth sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass auth required pam_unix.so no_warn try_first_pass
ja siis lihtsalt .htaccess vajalikku kohta näiteks
AuthType Basic AuthName "secure area" require user kasutaja
FreeBSD 4.x korral tuleb muuta faili /etc/pam.conf lisades sinna
httpd auth required /usr/local/lib/pam_ldap.so httpd account required /usr/local/lib/pam_lda
Ldap ja db uuendamine
Kasutades dbd backendit võib selle uuendamisel ldap mitte enam toimida selljuhul aitab näiteks
db4.5_recover -v -h /var/lib/openldap-data/ chown -R ldap\: /var/lib/openldap-data/
Kasulikud lisamaterjalid
- http://www.cultdeadsheep.org/FreeBSD/docs/Quick_and_dirty_FreeBSD_5_x_and_nss_ldap_mini-HOWTO.html Originaalselt kasutatud selle pala kirjutamise juures
- http://kuutorvaja.eenet.ee/wiki/OpenLDAP_kasutamine_Debianiga