Erinevus lehekülje "Ldap klient ja server" redaktsioonide vahel

Allikas: Kuutõrvaja
(LDAP serverisse algstruktuuri tekitamine ja kasutajate lisamine)
 
(ei näidata 4 kasutaja 108 vahepealset redaktsiooni)
1. rida: 1. rida:
suhteliselt tegemist tõlkega http://www.cultdeadsheep.org/FreeBSD/docs/Quick_and_dirty_FreeBSD_5_x_and_nss_ldap_mini-HOWTO.html lehelt mõningad asjad muudetud
+
===Sissejuhatus===
  
'''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õigeparemini :)
+
(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 :)
  
'''serveri pool'''
+
Käesolevas õpetuses vaatleme kuidas kasutajate infot hoida ldap serveris
  
installime openldap serveri
+
Selleks serverisse järgneva puukujulise struktuuri
  
  cd /usr/ports/net/openldap22-server/
+
  dc:        com
  make install
+
              |
 +
dc:        myserver        (Organisation)
 +
          /     \
 +
ou:  People  Groups    (Organisational Units, nö grupp kus hoitakse vajalikku infot)
 +
      /   \    .. \
 +
  uid: ..  Ants      test      (OU-spetsiifiline data ehk kasutajad - grupid)
  
süsteemi paigaldatakse ka berkeley db mida openldab defauldis kasutab kuid on võimalik seada see tööle ka no näiteks postgresql peal.
+
* Base DN: dc=myserver,dc=com
 +
* Users: dc=myserver,dc=com,ou=People
 +
* Groups: dc=myserver,dc=com,ou=Groups
  
genereerime serverile parooli
+
Ehk tekitame DC myserver,com mis hoiab endas kahte OUd (organisatsional unitit) People ja Groups, millest ühte
 +
salvestame kasutajate info ja teise grupiinfo, alternatiivina Linuxi shadow ja group failidele
  
# slappasswd -s parool
+
===Serveri install ja seadistus===
{SSHA}nPKG3qbPABkp21aTBZV2IpbcGUHLi3a2
 
  
liigume /usr/local/etc/openldap ning avame faili slapd.conf lisame sinna
+
Installime openldap serveri
 +
 
 +
FreeBSDs käib see järgnevalt
 +
 
 +
cd /usr/ports/net/openldap24-server && make install
 +
 
 +
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, mille seadistame hiljem konfiguratsioonis rootpw reale
 +
 +
  # slappasswd -s parool
 +
{SSHA}nPKG3qbPABkp21aTBZV2IpbcGUHLi3a2
 +
 
 +
liigume /usr/local/etc/openldap või linuxi puhul /etc/openldap ning avame faili slapd.conf, muudame seda vastavalt allolevale näitele
  
 
  include        /usr/local/etc/openldap/schema/core.schema
 
  include        /usr/local/etc/openldap/schema/core.schema
 
  include        /usr/local/etc/openldap/schema/cosine.schema
 
  include        /usr/local/etc/openldap/schema/cosine.schema
 
  include        /usr/local/etc/openldap/schema/nis.schema
 
  include        /usr/local/etc/openldap/schema/nis.schema
 +
 
  pidfile        /var/run/ldap/slapd.pid
 
  pidfile        /var/run/ldap/slapd.pid
 
  argsfile        /var/run/ldap/slapd.args
 
  argsfile        /var/run/ldap/slapd.args
 
 
  database        bdb
 
  database        bdb
  suffix          "dc=test,dc=org"
+
  suffix          "dc=myserver,dc=com"
  rootdn          "cn=Manager,dc=test,dc=org"
+
  rootdn          "cn=Manager,dc=myserver,dc=org"
 
  rootpw          {SSHA}nPKG3qbPABkp21aTBZV2IpbcGUHLi3a2
 
  rootpw          {SSHA}nPKG3qbPABkp21aTBZV2IpbcGUHLi3a2
 
  directory      /var/db/openldap-data
 
  directory      /var/db/openldap-data
33. rida: 53. rida:
 
  index          uid            pres,eq,sub
 
  index          uid            pres,eq,sub
  
natuke failiõigusi paika noh lihtsalt igaksjuhuks
+
Selleks, et infovahetus toimuks krüpteeritult, genereerime võtmed ja lisame konfi lõppu veel järgnevad read
  
#chmod 440 /usr/local/etc/openldap/slapd.conf
+
# Define SSL and TLS properties (optional)
#chown ldap:ldap /usr/local/etc/openldap/slapd.conf
+
TLSCertificateFile /etc/ssl/ldap.pem
#chown -R ldap:ldap /var/db/openldap*
+
TLSCertificateKeyFile /etc/openldap/ssl/ldap.pem
 +
TLSCACertificateFile /etc/ssl/ldap.pem
  
/etc/rc.conf’i lisame ldap’i teenuse käivitamiseks boodil
+
Aga selleks, et kliendid saaksid 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, turvalisuse huvides
 +
 
 +
chmod 440 /usr/local/etc/openldap/slapd.conf
 +
chown ldap:ldap /usr/local/etc/openldap/slapd.conf
 +
chown -R ldap:ldap /var/db/openldap*
 +
 
 +
Et slapd käivituks peale serveri booti lisame /etc/rc.conf’i
  
 
  slapd_enable="YES"
 
  slapd_enable="YES"
45. rida: 81. rida:
 
  slapd_sockets="/var/run/openldap/ldapi"
 
  slapd_sockets="/var/run/openldap/ldapi"
  
peale rebooti võime sockstatiga kontrollida kas ldap kuulab 389 pordil
+
Peale rebooti peaks ldap kuulama 389 pordil, seda võib sockstat/netstat abil täiendavalt kontrollida
 +
 
 +
===LDAP serverisse algstruktuuri tekitamine ja kasutajate lisamine===
 +
 
 +
loome esimesena info.ldiff millega paneme paika kogu struktuuri
 +
 
 +
dn: ou=Groups,dc=myserver,dc=com
 +
objectClass: organizationalUnit
 +
objectClass: top
 +
ou: Groups
 +
 +
dn: ou=People,dc=myserver,dc=com
 +
objectClass: organizationalUnit
 +
objectClass: top
 +
ou: People
 +
 
 +
Teeme failist eksportimise serverisse
 +
 
 +
'''# ldapadd -x -D "cn=Manager,dc=myserver,dc=com" -W -f info.ldiff'''
 +
Enter LDAP Password:                                                 
 +
adding new entry "ou=Groups,dc=myserver,dc=com"                     
 +
 +
adding new entry "ou=People,dc=myserver,dc=com"
 +
 +
Kaks uute userite lisamise template’t. Slappadd’ga saab nende failide abil ldap’i kasutajad testuser ja testuser2. Hiljem võib kirjutada näiteks shellskripti, mis parameetritena võtab kasutaja parooli ja grupi ning loob automaatselt kodukatalooma ja genereerb slappasswd’ga parooli automaatselt
  
nüüd loome test.ldiff faili ning ekspordime selle ldap’i
+
Kasutaja mille tekitamine info on:
  
dn: dc=test,dc=org
+
cn=StupidTest User
dc: test
+
dn cn=StupidTest User,ou=People,dc=myserver,dc=com
objectClass: top
+
cn StupidTest User
objectClass: domain
+
gecos Niisama ldap user
objectClass: domainRelatedObject
+
gidNumber 1000
associatedDomain: test.org
+
homeDirectory /home/test
structuralObjectClass: domain
+
loginShell /bin/csh
 +
User Name testuser
 +
uidNumber 1000
 +
Password parool
  
dn:ou=groups, dc=test, dc=org
+
Selleks tekitame fiali '''testuser.ldiff''' millesse lisame järgneva info
objectclass: top
 
objectclass: organizationalUnit
 
ou: groups
 
structuralObjectClass: organizationalUnit
 
  
dn:ou=people, dc=test, dc=org
+
# kasutaja info People's OU'sse
objectclass: top
+
dn: cn=StupidTest User, ou=People, dc=myserver, dc=org
objectclass: organizationalUnit
+
cn: StupidTest User
ou: people
+
sn: Dummy
structuralObjectClass: organizationalUnit
+
objectclass: top
 +
objectclass: person
 +
objectclass: posixAccount
 +
objectclass: shadowAccount
 +
uid:testuser
 +
userpassword:{SSHA}GmbwsRvJugoiT5NIIJ2bk+5YVfWMUVa1
 +
uidnumber:1000
 +
gidnumber:1000
 +
gecos:Niisama ldap user
 +
loginShell:/bin/bash
 +
homeDirectory: /home/test
 +
 +
# grupi info Groups OU'sse
 +
dn: cn=test, ou=Groups, dc=myserver, dc=org
 +
objectclass: top
 +
objectclass: posixGroup
 +
cn: test
 +
gidnumber: 1000
 +
memberuid: test
  
teeme failist eksportimise
+
Lisame info ldap serverisse
  
slapadd -l test.ldiff
+
'''# ldapadd -x -D "cn=Manager,dc=myserver,dc=com" -W -f testuser.ldiff'''
 +
Enter LDAP Password:
 +
adding new entry "cn=StupidTest User, ou=People, dc=myserver, dc=com"
 +
 +
adding new entry "cn=test, ou=Groups, dc=myserver, dc=com"'
  
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
+
Kui vaatame nüüd phpldamadminiga struktuuri näeb see välja järgnev
  
Esimene kasutaja testuser.ldiff
+
[[Pilt:Ldapstruktuur.png]]
  
dn: cn=StupidTest User, ou=people, dc=test, dc=org
+
Loome veel ka teise kasutaja, tekitame selleks faili testuser2.ldiff
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
+
dn: cn=StupidTest User2, ou=people, dc=myserver, dc=org
objectclass: top
+
cn: StupidTest User2
objectclass: posixGroup
+
sn: Dummy
cn: test
+
objectclass: top
gidnumber: 1000
+
objectclass: person
memberuid: test
+
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
  
 +
'''# ldapadd -x -D "cn=Manager,dc=myserver,dc=com" -W -f testuser2.ldiff'''
 +
Enter LDAP Password:                                                 
 +
adding new entry "ou=Groups,dc=myserver,dc=com"                     
 +
 +
adding new entry "ou=People,dc=myserver,dc=com"
  
slapadd -l testuser.ldiff
+
Nüüd on meil kaks posix kasutajat ja gruppi, järgnevalt vaatame kuidas need kasutajad autentima panna
  
teine kasutaja testuser2.ldiff
+
Kasutaja leidmine käsureal
  
dn: cn=StupidTest User2, ou=people, dc=test, dc=org
+
ldapsearch -x -H ldapi:/// -D "cn=admin,dc=zoo,dc=tartu,dc=ee" -W -b "dc=zoo,dc=tartu,dc=ee" uid=otsitav_kasutaja
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
+
Kasutaja kustutamine
objectclass: top
 
objectclass: posixGroup
 
cn: test2
 
gidnumber: 1001
 
memberuid: test2
 
  
slapadd -l testuser2.ldiff
+
ldapdelete -x -H ldapi:/// -D "cn=admin,dc=zoo,dc=tartu,dc=ee"  -w ldap_admini_parool "uid=kasutaja_kes_maha,ou=people,dc=zoo,dc=tartu,dc=ee"
  
'''kliendi pool'''
+
===FreeBSD poolne autentimine===
  
installime nss_ldap ja pam_ldap softi sellekäigus paigutatakse süsteemi ka openldap-client
+
http://www.freebsd.org/doc/en/articles/ldap-auth/article.html
  
#cd /usr/ports/net/nss_ldap  
+
Installime nss_ldap ja pam_ldap softi, sellekäigus paigutatakse süsteemi ka openldap-client
#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
+
cd /usr/ports/net/nss_ldap && make install clean
 +
cd /usr/ports/security/pam_ldap/ && make install
  
login  auth    sufficient      /usr/local/lib/pam_ldap.so
+
lisame /etc/pam.d/ldap faili FreeBSD 5.x või kõrgema puhul ja /etc/pam.conf FreeBSD 4.x 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
 
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/nss_ldap.conf /usr/local/etc/ldap.conf
+
ln -s /usr/local/etc/ldap.conf /usr/local/etc/nss_ldap.conf
  
kirjutame nss_ldap.conf’i
+
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=myserver,dc=org"
 +
nss_base_passwd ou=People,dc=myserver,dc=org?sub
 +
nss_base_group ou=Group,dc=myserver,dc=org?sub
 +
nss_base_shadow ou=people,dc=myserver,dc=org?sub
 +
 +
BASE    dc=myserver, dc=org
 +
scope sub
 +
 +
pam_password exop
 +
pam_filter objectclass=posixAccount
 +
pam_login_attribute uid
 +
pam_member_attribute memberuid
  
host 192.168.1.1 <- siia siis ldap serveri ip
 
base dc=test,tdc=org
 
ldap_version 3
 
port 389
 
pam_password md5
 
nss_base_passwd ou=People,dc=test,dc=org?sub
 
nss_base_group          ou=Group,dc=test,dc=org?sub
 
ssl no
 
  
 
avame faili /etc/nsswitch.conf ning kirjutame sinna
 
avame faili /etc/nsswitch.conf ning kirjutame sinna
  
passwd:  files ldap
+
passwd:  files ldap
group:  files ldap
+
group:  files ldap
  
 
nüüd kirjutame /etc/pam.d/sshd konfi
 
nüüd kirjutame /etc/pam.d/sshd konfi
  
auth            sufficient      /usr/local/lib/pam_ldap.so no_warn try_first_pass
+
auth            required        pam_nologin.so          no_warn
auth            required        pam_unix.so
+
auth            sufficient      pam_opie.so            no_warn no_fake_prompts
 +
auth            requisite      pam_opieaccess.so      no_warn allow_local
 +
auth            sufficient      /usr/local/lib/pam_ldap.so     no_warn
 +
auth            required        pam_unix.so             no_warn try_first_pass
 +
 +
  account        required        pam_login_access.so
 +
account        required        /usr/local/lib/pam_ldap.so      no_warn ignore_authinfo_unavail  ignore_unknown_user
  
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
+
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
  
# id testuser
+
# finger testuser
uid=1000(testuser) gid=1000 groups=1000
+
Login: testuser                         Name: Niisama ldap user
# id testuser2
+
Directory: /home/test                  Shell: /bin/csh
uid=1001(testuser2) gid=1001 groups=1001
+
Never logged in.
 +
No Mail.
 +
No Plan.
  
# finger testuser
+
# ssh testuser2@localhost
Login: testuser                        Name: Niisama ldap user
+
Password:
Directory: /home/test                  Shell: /bin/csh
+
Last login: Tue May 31 14:54:12 2005 from localhost
Never logged in.
+
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
No Mail.
+
        The Regents of the University of California.  All rights reserved.
No Plan.
+
 +
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
  
# ssh testuser2@localhost
+
viimane rida näitab, et tuleks luua ka serverisse kodukataloog userile ning see nfs’i abil jagada kliendile :)
Password:
+
 
Last login: Tue May 31 14:54:12 2005 from localhost
+
===Linux poolne autentimine===
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
+
 
        The Regents of the University of CaliforniaAll rights reserved.
+
Installida tuleb samad paketid miss FreeBSD's ehk nss_ldap ja pam ldap
 +
 
 +
/etc/lpdap.conf'i võib jääda samaks mis oli BSD näiteks
 +
 
 +
pam'i konfimiseks kirjutame faili
 +
 
 +
  /etc/pam.d/system-auth
 +
 
 +
read
  
FreeBSD 5.4-RELEASE (GENERIC) #0: Sun May 8 10:21:06 UTC 2005
+
auth    required    pam_env.so
Welcome to FreeBSD!
+
auth    sufficient  pam_unix.so likeauth nullok shadow
Could not chdir to home directory /home/test2: No such file or directory
+
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
  
viimane rida näitab ,et tuleks luua ka serverisse kodukataloog userile ning see nfs’i abil jagada kliendile :)
+
===Haldusvahendid===
  
mis veel. Enda serveri lokaalsete kasutajate ldap’i viimiseks vajalikud skriptid saab http://www.padl.com/OSS/MigrationTools.html Muidu annaks veel ühtteist 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
+
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.
  
lisaks veel … Yet Another Passwd 2 LDIF Converter http://freshmeat.net/projects/yap2lc/?topic_id=861
+
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
 
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/
+
Kasutajate administreerimiseks http://cpu.sourceforge.net/
 +
 
 +
===Veebi haldusliides phpldapadmin===
 +
 
 +
Kättesaadav urlitlt http://phpldapadmin.sourceforge.net
 +
 
 +
Phpldapadmini sisselogimiseks kasutaja "cn=Manager,dc=test,dc=org" ja parooliks see mis sai eelnevalt slapd.confi  defineeritud
 +
 
 +
Uue kasutaja loomiseks tuleb seal vajutada ou=Peolpe peale, valida create a child entry, generic: unix accout ja täita väljad, paljusid neist soovitab veebiliides seejuures juba ise automaatselt.
 +
 
 +
[[Pilt:Snapldap.jpg]]
 +
 
 +
===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=myserver,dc=org"
 +
host 192.168.1.100
 +
base dc=domeen,tdc=ee
 +
ldap_version 3
 +
pam_password SSHA
 +
nss_base_passwd ou=people,dc=myserver,dc=com?sub
 +
nss_base_group ou=groups,dc=myserver,dc=com?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
 +
 
 +
===OpenLDAP admin parooli vahetamine===
 +
 
 +
Uue parooli tekitamine käib käsuga
 +
 
 +
# slappasswd
 +
siia-mingi-krüptiline-parool
 +
 
 +
Vastuseks tuleb miskit taolist
 +
{SSHA}nEBrMjBpjElc7tpxN0YUZyBHkvxs6hO7
 +
 
 +
Edasi tekitad tekstifaili, newpasswd.ldif, kus sees
 +
 
 +
dn: olcDatabase={1}hdb,cn=config
 +
changetype: modify
 +
replace: olcRootPW
 +
olcRootPW: {SSHA}nEBrMjBpjElc7tpxN0YUZyBHkvxs6hO7
 +
 
 +
Seejuures vaata et õige baas ja PW sinna saaks! Ja siis lõpuks
 +
 
 +
# ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpasswd.ldif
 +
 
 +
See "-Y EXTERNAL" tähendab, et autenditakse väljaspool ldapi, ehk pead olema root.
 +
 
 +
===Ldapi Berkeley db remont===
 +
 
 +
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/
 +
 
 +
===Logi ja debug===
 +
 
 +
Logilevelite kohta ütleb man järgmist
 +
 
 +
man slapd.conf
 +
...
 +
        loglevel <integer>
 +
              Specify the level at which debugging statements and
 +
              operation statistics should be syslogged (currently
 +
              logged to the syslogd(8) LOG_LOCAL4 facility).  Log
 +
              levels are additive, and available levels are:
 +
                      1      trace function calls
 +
                      2      debug packet handling
 +
                      4      heavy trace debugging
 +
                      8      connection management
 +
                      16    print out packets sent and received
 +
                      32    search filter processing
 +
                      64    configuration file processing
 +
                      128    access control list processing
 +
                      256    stats                            log
 +
                              connections/operations/results
 +
                      512    stats log entries sent
 +
                      1024  print  communication  with  shell
 +
                              backends
 +
                      2048  entry parsing
 +
 
 +
syslog seadistus võiks olla järgnev /etc/syslog.conf
 +
 
 +
local4.* /var/log/ldap.log
 +
 
 +
Selleks, et ldap hakkaks logima nimetatud faili on vajalik teha veel restart syslogile
 +
 
 +
===Berkeley Db tuunimine===
 +
 
 +
Kasutades berkeley db'd on soovitatav andmebaasi asukohta (käesoleval juhul /var/db/openldap-data)
 +
tekitada DB_CONFIG fail. http://www.oracle.com/technology/documentation/berkeley-db/db/programmer_reference/env_db_config.html
 +
 
 +
näiteks
 +
 
 +
set_cachesize 0 8388608 8
 +
set_lg_regionmax 1048576
 +
set_lg_bsize 2097152
 +
 
 +
===PHP abil ldap kasutamine===
 +
 
 +
Alati võib ka ise midagi nokitseda abiks manual lingil http://ee.php.net/manual/en/ref.ldap.php
 +
 
 +
Vajalik on, et eelnevalt php kompileeritaks ldap toega
 +
 
 +
Ühenduse loomine
 +
 
 +
<source lang=php>
 +
<?php
 +
    $ldapHost = "192.168.1.11";
 +
        $ldapPort = "389";
 +
    $ldapUser ="cn=Manager,dc=myserver,dc=com";
 +
    $ldapPswd ="parool";
 +
 +
$ldapLink =ldap_connect($ldapHost, $ldapPort)
 +
    or die("Can't establish LDAP connection");
 +
 +
if (ldap_set_option($ldapLink,LDAP_OPT_PROTOCOL_VERSION,3))
 +
{
 +
    echo "Using LDAP v3";
 +
}else{
 +
    echo "Failed to set version to protocol 3";
 +
}
 +
 +
ldap_bind($ldapLink,$ldapUser,$ldapPswd)
 +
    or die("Can't bind to server.");
 +
?>
 +
</source>
 +
 
 +
Käivitamise järel peaks skript teatama
 +
 
 +
Using LDAP v3
 +
 
 +
Kasutajate nimekiri
 +
 
 +
<source lang=php>
 +
<?php
 +
    $dn = " ou=People,dc=myserver,dc=com";
 +
    $attributes = array("cn", "Sn");
 +
    $filter = "(cn=*)";
 +
    $ad = ldap_connect("193.40.0.61")
 +
          or die("Couldn't connect to AD!");
 +
 +
    ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
 +
 +
    $bd = ldap_bind($ad,"cn=Manager,dc=myserver,dc=com","parool")
 +
          or die("Couldn't bind to AD!");
 +
 +
    $result = ldap_search($ad, $dn, $filter, $attributes);
 +
 +
    $entries = ldap_get_entries($ad, $result);
 +
 +
    for ($i=0; $i<$entries["count"]; $i++)
 +
    {
 +
        echo $entries[$i]["cn"]
 +
            [0]."<br />";
 +
    }
 +
 +
    ldap_unbind($ad);
 +
 +
?>
 +
</source>
 +
 
 +
Kasutaja lisamine
 +
 
 +
<source lang=php>
 +
<?php
 +
    $ad = ldap_connect("193.40.0.61")
 +
          or die("Couldn't connect to server!");
 +
 +
    ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
 +
 +
    $bd = ldap_bind($ad,"cn=Manager,dc=myserver,dc=com","parool")
 +
          or die("Couldn't bind to AD!");
 +
 +
    $info["cn"] = "John Jones";
 +
    $info["sn"] = "Jones";
 +
 +
    $info["objectClass"][0] = "top";
 +
    $info["objectClass"][1] = "person";
 +
    $info["objectClass"][2] = "posixAccount";
 +
    $info["objectClass"][3] = "shadowAccount";
 +
 +
    $info["uid"] = "testuser";
 +
    $info["userpassword"] = "{SSHA}wU0T6ixZb9sU2+JTK8Au8sq7noNfMkbv";
 +
    $info["uidnumber"] = "1002";
 +
    $info["gidnumber"] = "1002";
 +
 +
    $info["gecos"] = "TestUser";
 +
    $info["loginShell"] = "/bin/csh";
 +
    $info["homeDirectory"] = "/home/test2";
 +
 +
    $bd = ldap_add($ad, "cn=Jobukakk7, ou=People, dc=myserver, dc=com", $info);
 +
 +
    ldap_unbind($ad);
 +
?>
 +
</source>
 +
 
 +
===FreeBSD süsteemis Lpdaps kasutamine===
 +
 
 +
$ ldapsearch -H ldaps://
 +
 
 +
/usr/local/etc/openldap/ldap.conf faili on vaja lisada rida
 +
 
 +
TLS_REQCERT never
 +
 
 +
või teise parameetriga (allow)
 +
 
 +
Ilma võib süsteem anda järgmise vea:
 +
 
 +
"ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)"
 +
 
 +
===Kasulikud lisamaterjalid===
  
muidugi ka http://phpldapadmin.sourceforge.net
+
* http://kuutorvaja.eenet.ee/wiki/OpenLDAP_kasutamine_Debianiga
 +
* http://www.gentoo.org/doc/en/ldap-howto.xml Ldap ja Gentoo
 +
* http://www.openldap.org/pub/ksoper/OpenLDAP_TLS.html
 +
* http://quark.humbug.org.au/publications/ldap/ldap_tut.html
 +
* http://www.flatmtn.com/article/setting-ldap-back-sql bdb asemel sql

Viimane redaktsioon: 1. detsember 2016, kell 16:23

Sissejuhatus

(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 :)

Käesolevas õpetuses vaatleme kuidas kasutajate infot hoida ldap serveris

Selleks serverisse järgneva puukujulise struktuuri

dc:         com
             |
dc:        myserver         (Organisation)
          /      \
ou:   People   Groups    (Organisational Units, nö grupp kus hoitakse vajalikku infot)
      /    \     .. \
uid: ..   Ants      test      (OU-spetsiifiline data ehk kasutajad - grupid)
  • Base DN: dc=myserver,dc=com
  • Users: dc=myserver,dc=com,ou=People
  • Groups: dc=myserver,dc=com,ou=Groups

Ehk tekitame DC myserver,com mis hoiab endas kahte OUd (organisatsional unitit) People ja Groups, millest ühte salvestame kasutajate info ja teise grupiinfo, alternatiivina Linuxi shadow ja group failidele

Serveri install ja seadistus

Installime openldap serveri

FreeBSDs käib see järgnevalt

cd /usr/ports/net/openldap24-server && make install

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, mille seadistame hiljem konfiguratsioonis rootpw reale

 # slappasswd -s parool
{SSHA}nPKG3qbPABkp21aTBZV2IpbcGUHLi3a2

liigume /usr/local/etc/openldap või linuxi puhul /etc/openldap ning avame faili slapd.conf, muudame seda vastavalt allolevale näitele

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=myserver,dc=com"
rootdn          "cn=Manager,dc=myserver,dc=org"
rootpw          {SSHA}nPKG3qbPABkp21aTBZV2IpbcGUHLi3a2
directory       /var/db/openldap-data
index           objectClass     eq
index           uid             pres,eq,sub

Selleks, et infovahetus toimuks krüpteeritult, genereerime võtmed ja lisame konfi lõppu veel järgnevad read

# Define SSL and TLS properties (optional)
TLSCertificateFile /etc/ssl/ldap.pem
TLSCertificateKeyFile /etc/openldap/ssl/ldap.pem
TLSCACertificateFile /etc/ssl/ldap.pem

Aga selleks, et kliendid saaksid 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, turvalisuse huvides

chmod 440 /usr/local/etc/openldap/slapd.conf
chown ldap:ldap /usr/local/etc/openldap/slapd.conf
chown -R ldap:ldap /var/db/openldap*

Et slapd käivituks peale serveri booti lisame /etc/rc.conf’i

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"'
slapd_sockets="/var/run/openldap/ldapi"

Peale rebooti peaks ldap kuulama 389 pordil, seda võib sockstat/netstat abil täiendavalt kontrollida

LDAP serverisse algstruktuuri tekitamine ja kasutajate lisamine

loome esimesena info.ldiff millega paneme paika kogu struktuuri

dn: ou=Groups,dc=myserver,dc=com
objectClass: organizationalUnit
objectClass: top
ou: Groups

dn: ou=People,dc=myserver,dc=com
objectClass: organizationalUnit
objectClass: top
ou: People

Teeme failist eksportimise serverisse

# ldapadd -x -D "cn=Manager,dc=myserver,dc=com" -W -f info.ldiff
Enter LDAP Password:                                                  
adding new entry "ou=Groups,dc=myserver,dc=com"                       

adding new entry "ou=People,dc=myserver,dc=com"

Kaks uute userite lisamise template’t. Slappadd’ga saab nende failide abil ldap’i kasutajad testuser ja testuser2. Hiljem võib kirjutada näiteks shellskripti, mis parameetritena võtab kasutaja parooli ja grupi ning loob automaatselt kodukatalooma ja genereerb slappasswd’ga parooli automaatselt

Kasutaja mille tekitamine info on:

cn=StupidTest User
dn	cn=StupidTest User,ou=People,dc=myserver,dc=com
cn	StupidTest User
gecos	Niisama ldap user
gidNumber	1000
homeDirectory	/home/test
loginShell	/bin/csh
User Name	testuser
uidNumber	1000
Password	parool

Selleks tekitame fiali testuser.ldiff millesse lisame järgneva info

# kasutaja info People's OU'sse
dn: cn=StupidTest User, ou=People, dc=myserver, 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/bash
homeDirectory: /home/test

# grupi info Groups OU'sse
dn: cn=test, ou=Groups, dc=myserver, dc=org
objectclass: top
objectclass: posixGroup
cn: test
gidnumber: 1000
memberuid: test

Lisame info ldap serverisse

# ldapadd -x -D "cn=Manager,dc=myserver,dc=com" -W -f testuser.ldiff
Enter LDAP Password:
adding new entry "cn=StupidTest User, ou=People, dc=myserver, dc=com"

adding new entry "cn=test, ou=Groups, dc=myserver, dc=com"'

Kui vaatame nüüd phpldamadminiga struktuuri näeb see välja järgnev

Ldapstruktuur.png

Loome veel ka teise kasutaja, tekitame selleks faili testuser2.ldiff

dn: cn=StupidTest User2, ou=people, dc=myserver, 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
# ldapadd -x -D "cn=Manager,dc=myserver,dc=com" -W -f testuser2.ldiff
Enter LDAP Password:                                                  
adding new entry "ou=Groups,dc=myserver,dc=com"                       

adding new entry "ou=People,dc=myserver,dc=com"

Nüüd on meil kaks posix kasutajat ja gruppi, järgnevalt vaatame kuidas need kasutajad autentima panna

Kasutaja leidmine käsureal

ldapsearch -x -H ldapi:/// -D "cn=admin,dc=zoo,dc=tartu,dc=ee" -W -b "dc=zoo,dc=tartu,dc=ee" uid=otsitav_kasutaja

Kasutaja kustutamine

ldapdelete -x -H ldapi:/// -D "cn=admin,dc=zoo,dc=tartu,dc=ee"  -w ldap_admini_parool "uid=kasutaja_kes_maha,ou=people,dc=zoo,dc=tartu,dc=ee"

FreeBSD poolne autentimine

http://www.freebsd.org/doc/en/articles/ldap-auth/article.html

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 FreeBSD 5.x või kõrgema puhul ja /etc/pam.conf FreeBSD 4.x 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=myserver,dc=org"
nss_base_passwd ou=People,dc=myserver,dc=org?sub
nss_base_group ou=Group,dc=myserver,dc=org?sub 
nss_base_shadow ou=people,dc=myserver,dc=org?sub

BASE    dc=myserver, 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            required        pam_nologin.so          no_warn
auth            sufficient      pam_opie.so             no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so       no_warn allow_local
auth            sufficient      /usr/local/lib/pam_ldap.so      no_warn
auth            required        pam_unix.so             no_warn try_first_pass

 account         required        pam_login_access.so
account         required        /usr/local/lib/pam_ldap.so      no_warn ignore_authinfo_unavail  ignore_unknown_user

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 poolne autentimine

Installida tuleb samad paketid miss FreeBSD's ehk nss_ldap ja pam ldap

/etc/lpdap.conf'i võib jääda samaks mis oli BSD näiteks

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.

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/

Veebi haldusliides phpldapadmin

Kättesaadav urlitlt http://phpldapadmin.sourceforge.net

Phpldapadmini sisselogimiseks kasutaja "cn=Manager,dc=test,dc=org" ja parooliks see mis sai eelnevalt slapd.confi defineeritud

Uue kasutaja loomiseks tuleb seal vajutada ou=Peolpe peale, valida create a child entry, generic: unix accout ja täita väljad, paljusid neist soovitab veebiliides seejuures juba ise automaatselt.

Snapldap.jpg

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=myserver,dc=org"
host 192.168.1.100
base dc=domeen,tdc=ee
ldap_version 3
pam_password SSHA
nss_base_passwd ou=people,dc=myserver,dc=com?sub
nss_base_group ou=groups,dc=myserver,dc=com?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

OpenLDAP admin parooli vahetamine

Uue parooli tekitamine käib käsuga

# slappasswd
siia-mingi-krüptiline-parool

Vastuseks tuleb miskit taolist

{SSHA}nEBrMjBpjElc7tpxN0YUZyBHkvxs6hO7

Edasi tekitad tekstifaili, newpasswd.ldif, kus sees

dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}nEBrMjBpjElc7tpxN0YUZyBHkvxs6hO7

Seejuures vaata et õige baas ja PW sinna saaks! Ja siis lõpuks

# ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpasswd.ldif

See "-Y EXTERNAL" tähendab, et autenditakse väljaspool ldapi, ehk pead olema root.

Ldapi Berkeley db remont

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/

Logi ja debug

Logilevelite kohta ütleb man järgmist

man slapd.conf
...
       loglevel <integer>
              Specify the level at which debugging statements and
              operation statistics should be syslogged (currently
              logged to the syslogd(8) LOG_LOCAL4 facility).  Log
              levels are additive, and available levels are:
                      1      trace function calls
                      2      debug packet handling
                      4      heavy trace debugging
                      8      connection management
                      16     print out packets sent and received
                      32     search filter processing
                      64     configuration file processing
                      128    access control list processing
                      256    stats                            log
                             connections/operations/results
                      512    stats log entries sent
                      1024   print   communication   with   shell
                             backends
                      2048   entry parsing

syslog seadistus võiks olla järgnev /etc/syslog.conf

local4.*						/var/log/ldap.log

Selleks, et ldap hakkaks logima nimetatud faili on vajalik teha veel restart syslogile

Berkeley Db tuunimine

Kasutades berkeley db'd on soovitatav andmebaasi asukohta (käesoleval juhul /var/db/openldap-data) tekitada DB_CONFIG fail. http://www.oracle.com/technology/documentation/berkeley-db/db/programmer_reference/env_db_config.html

näiteks

set_cachesize 0 8388608 8
set_lg_regionmax 1048576
set_lg_bsize 2097152

PHP abil ldap kasutamine

Alati võib ka ise midagi nokitseda abiks manual lingil http://ee.php.net/manual/en/ref.ldap.php

Vajalik on, et eelnevalt php kompileeritaks ldap toega

Ühenduse loomine

 <?php
     $ldapHost = "192.168.1.11";
         $ldapPort = "389";
     $ldapUser ="cn=Manager,dc=myserver,dc=com";
     $ldapPswd ="parool";
 
 $ldapLink =ldap_connect($ldapHost, $ldapPort)
     or die("Can't establish LDAP connection");
 
 if (ldap_set_option($ldapLink,LDAP_OPT_PROTOCOL_VERSION,3))
 {
     echo "Using LDAP v3";
 }else{
     echo "Failed to set version to protocol 3";
 }
 
 ldap_bind($ldapLink,$ldapUser,$ldapPswd)
     or die("Can't bind to server.");
 ?>

Käivitamise järel peaks skript teatama

Using LDAP v3

Kasutajate nimekiri

 <?php
    $dn = " ou=People,dc=myserver,dc=com";
    $attributes = array("cn", "Sn");
    $filter = "(cn=*)";
    $ad = ldap_connect("193.40.0.61")
          or die("Couldn't connect to AD!");
 
    ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
 
    $bd = ldap_bind($ad,"cn=Manager,dc=myserver,dc=com","parool")
          or die("Couldn't bind to AD!");
 
    $result = ldap_search($ad, $dn, $filter, $attributes);
 
    $entries = ldap_get_entries($ad, $result);
 
    for ($i=0; $i<$entries["count"]; $i++)
    {
        echo $entries[$i]["cn"]
             [0]."<br />";
    }
 
    ldap_unbind($ad);
 
 ?>

Kasutaja lisamine

 <?php
    $ad = ldap_connect("193.40.0.61")
          or die("Couldn't connect to server!");
 
    ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
 
    $bd = ldap_bind($ad,"cn=Manager,dc=myserver,dc=com","parool")
          or die("Couldn't bind to AD!");
 
    $info["cn"] = "John Jones";
    $info["sn"] = "Jones";
 
    $info["objectClass"][0] = "top";
    $info["objectClass"][1] = "person";
    $info["objectClass"][2] = "posixAccount";
    $info["objectClass"][3] = "shadowAccount";
 
    $info["uid"] = "testuser";
    $info["userpassword"] = "{SSHA}wU0T6ixZb9sU2+JTK8Au8sq7noNfMkbv";
    $info["uidnumber"] = "1002";
    $info["gidnumber"] = "1002";
 
    $info["gecos"] = "TestUser";
    $info["loginShell"] = "/bin/csh";
    $info["homeDirectory"] = "/home/test2";
 
    $bd = ldap_add($ad, "cn=Jobukakk7, ou=People, dc=myserver, dc=com", $info);
 
    ldap_unbind($ad);
 ?>

FreeBSD süsteemis Lpdaps kasutamine

$ ldapsearch -H ldaps://

/usr/local/etc/openldap/ldap.conf faili on vaja lisada rida

TLS_REQCERT never

või teise parameetriga (allow)

Ilma võib süsteem anda järgmise vea:

"ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)"

Kasulikud lisamaterjalid