Hálózati Operációs Rendszerek LDAP, OpenLDAP Előadó: Bilicki Vilmos bilickiv@inf.u-szeged.hu www.inf.u-szeged.hu/~bilickiv
Forrás Brian Arkils: LDAP directories explained
Tartalom/1 LDAP LDAP névtér Kliens LDAP műveletek LDAP séma LDAP objektum struktúra LDAP objektum elnevezés Kliens LDAP műveletek Cimtárképes alkalmazások Keresés LDAP protokol LDAP séma Objektum osztályok Attribútumok Szintakszisok Egyezési szabályok OID-k Séma ellenőrzés Cimtár menedzsment
Tartalom/2 OpenLDAP Névtér Műveletek és kliensek Séma Menedzsment Biztonság
LDAP – könnyűsúlyú X.500 DAP Működő kód (jobb mint a rideg szabványok) Több éve fejlesztik (RFC 1487 (1993): LDAPv1; RFC 1777 (1995): LDAPv2; RFC 2251 (1997): LDAPv3) Csak könyvtár-hozzáférési protokoll nem teljes címtár Csak azt specifikálja hogyan társalogjon a kliens és a szerver Nem specifikálja a címtár működését
LDAP általános hozzáférési protokoll
LDAP v3 RFC3377 RFC2251 (LDAP a vezetéken) RFC2252 (Attribútum szintakszis definiálás) RFC2253 (UTF-8) RFC2254 (LDAP kereső kulcsszavak) RFC2255 (LDAP URL) RFC2256 (X500-ból átvett felhasználói séma) RFC2829 (Azonosítási módszerek) RFC2830 (Bővítmények TLS számára)
LDAP objektum struktúra Csak fa struktúra – DIT Minden elem lehet tároló elem Struktúra szabályok korlátozhatják ezt X.500 c –country l –locale o –organization ou –organization unit Névterek (Naming contexts) Lapos névtér gyors növekedés Nem skálázható Gyakorlatban: Politikai/funkció Földrajzi Erőforrás alapú Felhasználó alapú
LDAP objektum elnevezés(1) RDN – relativ megkülönböztető név Elnevezési attribútum (nincs definiálva az LDAP-ban) Több attribútum is lehet Mit érdemes RDN-nek választani? DN – megkülönböztető név OID - Objektum azonositó Minden attribútum tipusnak van egy OID-je 2.5.4.3 Egyértelmű azonositás Gyakoribb attribútumok: cn – common name l – locality name st – state or province name c – country name dc – domain component uid – user identity Speciális karakterek \, Kód beszúrás ?
LDAP objektum elnevezés(2) URL elnevezés RFC 2255 ldap://[hostname][/dn[?[attributes]?][?[scope][?[filter]?][?[extensions]] 389-es port scope Base One Sub Filter – (objectclass=*) ldap://wanda.cab.u-szeged.hu:389/cn=Vilmos Bilicki,ou=Staff,dc=cab,dc=u-szeged,dc=hu?sn LDAPv2 , szóköz ‘
LDAP kliens műveletek(1) LDAP kliens – amit a felhasználó lát a cimtárból Cimtár képes alkalmazások Email szerverek Sendmail Exchange Csoportmunak támogató alkalmazások Email klinesek Netscape mail Pine Outlook Tanúsitvány szolgáltatók
LDAP kliens műveletek(2) Keresés Nincs olvasás -> keresni kell Kötelező paraméterek Alap DN, legalább a gyökeret ismernünk kell (dc=cab,dc=u-szeged,dc=hu) A keresés hatóköre Base – csak egy bejegyzést One – mindent egy szinten Subtree – minden DN alatti Kereső szűrő, attribótum tipus+összehasonlitó operátor+érték (cn=Bilicki Vilmos) =, <=, >=, ~= Lehet szűrőket kombinálni &, |, ! (|(cn=Vilmos Bilicki)(cn=Bilicki Vilmos)) Opcionális paraméterek Mit szeretnénk visszakapni derefAliases sizeLimit timeLimit typesOnly
LDAP protokol (RFC2251) Címtár hozzáférési protkoll írás/olvasás Egyszerűsített DAP (egyszerűbb kliensek) Hivatkozások használata (Referral) SASL (Simple Authentication and Security Layer) Bővíthető Publikált séma
LDAP protokol (RFC2251) Kliens – szerver LDAP, CLAPD Minimalizálja a kliens feladatait Aszinkron működés a szerver nem köteles sorrendben válaszolni, a kliens nem köteles megvárni a választ Adatmodell: X.500 adatmodell Egy vagy több szerver DIT RDN DN
LDAP kommunikációs minta Kliens kapcsolódik a szerverhez - bind művelet A szerver visszaadja a bind ereményét Kliens keresés művelet Szever válasz (találatok) Szerver válasz eredménykód Kliens lekapcsolódás – unbind művelet Szerver unbind üzenet
LDAP műveletek Bind Search Compare Add Delete Modify ModifyRDN, Rename Üres string anonym Search Compare Add Delete Modify ModifyRDN, Rename Megtarthatja az átnevezettet is Unbind Abandon Extend
LDAP vezérlők A kliens kérheti a szervert, hogy a normál művelete egy kicsit máshogy hajtsa végre root DSE – supportedControl tulajdonság Példák paged search – egységenként kapja az erdményt nem egyszerre, sizeLimit server-side sort – a szerver sorbarendezve adja át persistent search – a szűrüben eső tartalom változáskor értesiti a klienset
LDAP séma (1) A felhasználók elől rejtve van Megadja a tárolható információ leirását Módositásával a cimtár kiterjeszthető Objektum osztály – definiálja a megengedett bejegyzéseket Tartalom szabályok Struktúra szabályok Név formátum Tulajdonság tipus – tipust definiál Szintakszis Egyezési szabályok Alapételmezett séma: RFC 2252 Felhasználói séma: RFC 2256 X.500 definiciók érvényesek Nincs kötelező séma LDAPv3 – minden bejegyzés alséma bejegyzésbe kell a séma helyét publikálni subschemaSubentry
LDAP séma(2) Objektum osztályok Bejegyzések tipusai objectclass tulajdonság Tipusai Absztrakt – a hierarchia alapja Kiegészitő – nem lehet hierarchiába rendezni Strukturális - származtatott Függőségi hierarchiába rendezhetőek (öröklés, nincs szűkités) Elemei: OID Név Leirás Inaktiv állapot Alap osztály Kategória Kötelező tulajdonságok Opcionális tulajdonságok Gyakran – Elnevezési attribútum, Tartalmazó szabályok Szövegfájlban vagy cimtárban tárolják
LDAP séma(3) Tulajdonságok RFC 2252, RFC 2251 Tulajdonság tipus Szintakszis Egyezési szabályok Elemei: OID Név – több is lehet Leirás – opciók pl. bináris Inaktiv állapot Alap osztály Egyezőség szabály Sorbarendezés szabály Részegyezés szabály Megengedett értékek száma – többnyelvű bejegyzések Kollektiv Módositható Használata
LDAP séma(4) Tulajdonságok Működési tulajdonságok Alséma createTimestamp modifyTimestamp creatorsName modifiersName subschemaSubentry attributeTypes altServer Alséma
LDAP séma(5) Szintakszisok Összehasonlitási szabályok OID ASN.1 RFC2252 - 58 alap szintakszis Binary 1.3.6.1.4.1.1466.115.121.1.5 0 vagy 1 Nincs szabvány Összehasonlitási szabályok OID Garantálja az egyediségét? IANA Bővithető
LDAP séma(6) Bővitmények DNS dynamicObject – kiegészitő osztály Java dc - tulajdonság domain, dcObject – kiegészitő objektum osztály dynamicObject – kiegészitő osztály lejár – pl. gyűlés, ideiglenes dolgozó time-to-live – tulajdonság Java DHCP KDC
OpenLDAP (1) University of Michigan http://www.openldap.org/ Nyilt forráskódú szoftver Gyakori kibocsátás (heti, havi) Minőséges szoftver Operációs rendszer független Általános cimtár szerepkörre törekszik Szigorúan követi az LDAP RFC-ket Moduláris felépités Biztonság Adatbázis … Két process: slapd – szöveges konfig. fájlok slurpd – log fájl mentén replikáció
OpenLDAP (2) Névtér Egyszerű névtér Az LDAP szabványokat követi Használhatja DNS-t a névterében (RFC 2247) dc=inf, dc=u-szeged, dc=hu Támogatja DNS SRV rekordokat Az OpenLDAP működtet egy gyökér szervert (RFC 3088) root.openldap.org LDAP URL-t ad vissza a DN lekérdezésekre (SRV) specifikáció _ldap._tcp.mycompany.com ldap://server1. mycompany.com
OpenLDAP (3) Névtér: Egy szerveren több névtér is tárolható Ajánlott külön-külön adatbázis minden névtérnek Nagyobb tervezési szabadság Replikációs topológia Konfiguráció Indexelés… Hivatkozások (referrals) Tipusai: Felső (superior) – slurpd szövegfájlában ! Alsó (subordinate) Külső (extrenal) class=referral ManageDsaIT támogatva van Replikáció Single Master ajánlott Multimaster van de kisérleti Slapd replog fájl Slurpd LDAP műveletek
OpenLDAP (4) Névtér: Adatbázis támogatás LDBM az alapértelmezett Más adatbázis is használható Shell háttér – az LDAP parancsokat le kell kódolnunk Proxy használat Indexelés LDBM támogatja, slapd ckonfig. fájl Komolyabb hangolást igényel mint más termékeknél Minden hagyományos operátor alapján indexelhetünk index st eq index userCretificate pres
OpenLDAP (5) Működés, kliensek: Szabványos de kevés plussz szolgáltatás Parancssoros kliens: ldapadd ldapdelete ldap.. Kevés integrált alkalmazás sendmail Terméktámogatás mint más open source projektnél, levelezőlista Vezérlők Password Modify Control ManageDsaIT
OpenLDAP (6) Séma: Minden RFC –ben leirt definiciót tartalmaz néhány kisérletivel kiegészitve BNF formátumú Zárójel opcionális elem Nagybetű kötelező elem (oid NAME ‘objectclassname’ SUP superclass objectclasskind MUST (attribute1 $ atribute2) MAY (attribute3 $ atribute4)) ( 2.5.6.6 NAME ‘person’ SUP top STRUCTURAL MUST (sn $ cn) MAY (userPassword $ telephoneNumber) ) Slapd konfig. fájlban + 9 séma fájl További fájlokat lehet hozzáadnunk
OpenLDAP (7) Séma: 58 szintaxis (bővithető) 33 egyezési szabály (bővithető) schema_init.c-ben tehetjük meg ezt 81 osztályt támogat (igyekszik a szabványokat követni) Többszörös öröklődés Alias támogatás (cimtáron belüli hivatkozás) 192 tulajdonság Altipusok Opciók (nyelvi változatok) Néhány működési tulajdonság (modifiersName, …) ezeket autómatikusan használja
OpenLDAP (8) Menedzselés: LDIF támogatás Indexelés slapadd slapcat Slapindex (változáskor ójra kell épiteni az indexet)
OpenLDAP (9) Biztonság: RFC 2829 RFC 2830 Cyrus SASL (Simple Authentication and Secutity Layer) modul ANONYMOUS CRAM-MD5 KERBEROS_V4 PLAIN GSSAPI DIGEST-MD5 LOGIN SRP
OpenLDAP (10) Biztonság: Azonositás SASL id -> OpenLDAP id uid=bilicki, cn= mycompany.com, cn=KERBEROS_V4, cn= AUTH slapd konfig. fájl hozzárendelés saslRegexp saslRegexp uid=(.*),cn=MYCOMPANY.COM,cn=KERBEROS_V4,cn=auth uid=$1,ou=People,dc=Mycompany,dc=com
OpenLDAP (11) Biztonság: Személytelenités (impersonation) Web szerver -> cimtár Trükkös ACL slapd konfig. Fájl saslAuthzTo saslAuthzFrom saslAuthzTo=uid.*,ou=People,dc=Mycompany,dc=com
OpenLDAP (12) Biztonság: Engedélyezés slapd konfig. Fájl dirketivák Adatbázis szintű Globális szintű acces to <mit> by <ki> <hozzáférés> acces to dn=_.*,ou=People,dc=Mycompany,dc=com by dn=_cn=Han Solo,ou=Peolpe,dc=Mycompany,dc=com write dn=_.*,ou=Peolpe,dc=Mycompany,dc=com read Módositás után újra kell inditani !!!!!!!!!!!
Áttekintés/1 LDAP LDAP névtér Kliens LDAP műveletek LDAP séma LDAP objektum struktúra LDAP objektum elnevezés Kliens LDAP műveletek Cimtárképes alkalmazások Keresés LDAP protokol LDAP séma Objektum osztályok Attribútumok Szintakszisok Egyezési szabályok OID-k Sáma ellenőrzés Cimtár menedzsment
Áttekintés/2 OpenLDAP Névtér Műveletek és kliensek Séma Menedzsment Biztonság
A következő előadás tartalma Directory Server Active Directory