Ldap klient ja server

Allikas: Kuutõrvaja
Redaktsioon seisuga 5. august 2006, kell 18:50 kasutajalt 84.50.68.186 (arutelu)

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

cd /usr/ports/net/openldap22-server/
make install

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

natuke failiõigusi paika noh lihtsalt igaksjuhuks

  1. chmod 440 /usr/local/etc/openldap/slapd.conf
  2. chown ldap:ldap /usr/local/etc/openldap/slapd.conf
  3. 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

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

  1. cd /usr/ports/net/nss_ldap
  2. make install clean
  3. cd /usr/ports/security/pam_ldap/
  4. 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

  1. 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 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

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

)
  1. id testuser

uid=1000(testuser) gid=1000 groups=1000

  1. id testuser2

uid=1001(testuser2) gid=1001 groups=1001

  1. finger testuser

Login: testuser Name: Niisama ldap user Directory: /home/test Shell: /bin/csh Never logged in. No Mail. No Plan.

  1. 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