Ldap klient ja server: erinevus redaktsioonide vahel

Allikas: Kuutõrvaja
Mine navigeerimisribaleMine otsikasti
Resümee puudub
Jj (arutelu | kaastöö)
 
(ei näidata 4 kasutaja 109 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
 
# 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===


#chmod 440 /usr/local/etc/openldap/slapd.conf
loome esimesena info.ldiff millega paneme paika kogu struktuuri
#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
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


slapd_enable="YES"
Teeme failist eksportimise serverisse
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
'''# 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 13: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

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.

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