Ldap klient ja server
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
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 :)
serveri pool
installime openldap serveri
freebsd's
cd /usr/ports/net/openldap22-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 no 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 noh 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/nss_ldap.conf /usr/local/etc/ldap.conf
kirjutame nss_ldap.conf’i
host 192.168.1.1 <- siia siis ldap serveri ip ssl start_tls ldap_version 3 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
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 :)
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
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