1
LDAPLightweight Directory Access Protocol
Adresářová služba
Problémové okruhy adresářové služby LDAP• Struktura, organizace a identifikace informací• Operace nad uloženými informacemi• Zabezpečení přístupu k uloženým informacím
LDAP
LDAP• K čemu je LDAP určen
– Jeden se základních nástrojů zabezpečení komunikace autentizací
– Je podporou dalších komunikačních služeb (Web, e-mail ..) a vytváření uživatelských sessions.
• K čemu LDAP není určen– K prezentaci dat– K přenosu objemných dat
2LDAP
LDAP
3LDAP
4
LDAP• LDAP – otevřený standardní protokol Internetu
pro přístup k adresářovým službám• Podpora lokalizace organizací, osob a dalších
zdrojů (soubory, zařízení …..) - v síti Internet a intranetech
• Původ – protokol DAP ze specifikace X.500 (ITU-T) a ISO/IEC 9594 (ISO)
• Implementace LDAP– Nekomerční – University of Michigan – OpenLDAP
(http://www.openldap.org)– Komerční – Microsoft (Active Directory), Netscape
LDAP
5
LDAP• Charakteristika protokolu LDAP
– protokol aplikační vrstvy TCP/IP (klient – server)– transport protokolem TCP nebo UDP – port 389– při použití SSL/TLS – port 636 (LDAPS)
• Distribuovaný systém – hlavní adresář a replikace (princip master server a slave server)– synchronizace periodická (replikační démon)
• Implementace - programový balík– Server démon– Replikační démon– Knihovní funkce (pro implementace klienta do různých aplikací)– Samostatné implementace klienta
LDAP
LDAP• Základní funkční model (klient – server)
6
LDAP klient LDAP server
Databáze
požadavek
odpověď
LDAP operace• Autentizace• Prohledávání databáze• Manipulace s daty databáze
LDAP
7
LDAP• Současná verze – LDAPv3 (RFC 3377)• Dokumentace – RFC 4510 - 4521• Charakteristika protokolu
– IPv4 a IPv6– Podpora silné autentizace (certifikát) a bezpečnosti informace
(důvěrnost a integrita kryptografickými mechanizmy)– Bezpečný transport (SSL/TLS)– Internacionalizace (podpora Unicode)– Server vrací v odpovědi data nebo odkaz na jiný server (rekurze
nebo iterace)– Podpora nespojované komunikace (nad UDP) pro aplikace s
jednoduchými dotazy – pro urychlení odpovědí
LDAP
8
LDAP
• LDAP Message – „obálka“ s daty
– messageID - identifikátor zprávy (pro párování request – response)
– protocolOp - typ operace (20 typů request/response)– controls - volitelná položka obsahující rozšiřující data
zprávy
messageID protocolOp controls LDAP dataTCPIP
LDAP
LDAP• Komunikace • Klient naváže spojení (operace „binding“) – klient musí znát IP adresu +
port LDAP serveru)– Bez autentizace (anonymní) – veřejná data– S autentizací (prokázání identity) – privátní data
• Klient vysílá požadavky – operace nad daty• Server vysílá odpovědi na požadavky
Příklad:
BindRequest - BindResponse
ModifyRequest - ModifyResponse
AddRequest – AddResponse
DelRequest - DelResponse• Klient uzavře spojení (operace „unbinding“)
9LDAP
LDAP• Forma uložení dat – adresářový model
– Položka – entry– Atribut položky - attribute– Jméno – name– Typ atributu
• int (integer)
• bin (binary data)
• cis (case insensitive string)
• ces (case exact string)
• dn (distinguished name)
• tel (telephone number)
– Hodnota - value 10LDAP
LDAP• Typ atributu určuje
– Způsob zápisu hodnoty atributu, tj. syntaxi– Způsob zacházení s hodnotou atributu při manipulaci
s daty (add, delete, replace)• „Schema“ - pravidla pro strukturu a obsah adresářového
stromu DIT– Definuje třídy objektů (objectClass) pro všechny
záznamy v adresáři – každý záznam má přiřazen min. jednu třídu - objectClass je povinným atributem
– Definuje množinu povinných a nepovinných atributů (MUST, MAY)
– Definuje jednotlivé atributy11LDAP
LDAP• Schémata dostupná pro danou implementaci –
např. OpenLDAP
• Jsou připojeny k LDAP démonu prostřednictvím konfiguračního souboru
• Možnost vytváření lokálních schémat - http://www.openldap.org/doc/admin23/schema.html
12
File Description
core.schema OpenLDAP core (required)
cosine.schema Cosine and Internet X.500 (useful)
inetorgperson.schema InetOrgPerson (useful)
misc.schema Assorted (experimental)
nis.schema Network Information Services (FYI)
openldap.schema OpenLDAP Project (experimental
LDAP
13
attributetype ( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' ) DESC 'RFC2256: organizational unit this object belongs to' SUP name )
attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' ) DESC 'RFC2256: first name(s) for which the entity is known by' SUP name )
objectclass ( 2.5.6.5 NAME 'organizationalUnit' DESC 'RFC2256: an organizational unit' SUP top STRUCTURAL MUST ou MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) ) objectclass ( 2.5.6.6 NAME 'person'
DESC 'RFC2256: a person' SUP top STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) ) LDAP
14
LDAPStromová hierarchie objektů – DIT (Directory Information Tree)
DNS Geografická
uzly
listy
LDAP
LDAP• Jednoznačná identifikace položek v globálním jmenném
prostoru DIT – DN (Distinguished Name). • Pojem „Relative Distinguished Name“ – jednoznačná
identifikace položky v rámci jedné větve DIT. • Řetězec RDN vytváří DN.
15LDAP
LDAP• Třída objektu popisuje konkrétní objekt (osobu,
organizaci, ….), má třídu nadřazenou a může mít třídy podřazené
• Definice tříd objektů pro všechny typy položek v adresáři jsou ve schematu
• Tři typy tříd objektů: abstraktní (abstract), strukturální (structural) a doplňkové (auxiliary)
• Hierarchie tříd objektů –
princip dědičnosti
16LDAP
LDAP• Využití OID (Object Identifier) v LDAP službě –
numerická jednoznačná globální identifikace objektů (http://www.oid-info.com/ )
• Sufix 1.3.6.1.4.1.XXXXX přidělí IANA pro privátní větve adresářové hierarchie (např. Cisco - 1.3.6.1.4.1.9, IBM - 1.3.6.1.4.1.4, Stanford University - 1.3.6.1.4.1.255 …)
• OID 1.3.6.1.4.1.1466.115.121.1 – syntaxe datových formátů LDAPv3 – 1.3.6.1.4.1.1466.115.121.1.5 - Binary syntax
– 1.3.6.1.4.1.1466.115.121.1.6 - Bit string syntax
– 1.3.6.1.4.1.1466.115.121.1.16 - DIT Content Rule syntax
– 1.3.6.1.4.1.1466.115.121.1.50 - Telephone number syntax17LDAP
LDAP• Globální prostor identifikátorů informačních objektů
18
internet (1)
org (3)iso-ccitt (2)iso (1)ccitt (0)
experimental (3)mgmt (2)
dod (6)
private (4) snmpV2 (6)
security (5)
Internetová SMI
IBM (4) Cisco (9)Stanford Univ. (299)
Privátní OID1.3.6.1.4.1.41.3.6.1.4.1.9……
IANA- registered private enterprises (1)
LDAP
iso-memeber-body (2)
czech_rep (203)usa (840)
directory (1)
LDAP• Záznam uživatele v /etc/passwdobjectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY
DESC 'Abstraction of an account with POSIX attributes'
MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
MAY ( userPassword $ loginShell $ gecos $ description ) )
• Záznam uživatele v /etc/shadowobjectclass ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' SUP top AUXILIARY
DESC 'Additional attributes for shadow passwords'
MUST uid
MAY ( userPassword $ shadowLastChange $ shadowMin $ shadowMax $ shadowWarning $ shadowInactive $ shadowExpire $ shadowFlag $
description ) )
19LDAP
LDAP• Některé obvyklé atributy:
20
LDIF zkratka
jméno objectClass popis
dc domainComponent dcObject Část doménového jména
c countryName country 2 znakový kód země podle ISO 3166
o organizationName organization Jméno organizace
ou organisationalUnitName organizationUnit Jednotka/útvar organizace
cn commonName personorganizationalPerson
organizationalRolegroupOfNames
applicationProcessapplicationEntity
Obecné jméno
uid userid personorganization
organizationUnit
Identifikační číslo uživatele
mobile mobileTelephoneNumber inetOrgPerson Číslo mobilního telefonu
jpegPhoto inetOrgPerson Fotografie formátu jpgLDAP
LDAP• Textový formát adresářových položek LDIF (LDAP
Interchange Format)– Pro zápis adresářových položek – Pro zápis příkazů modifikace položek– Pro hromadné změny dat a export a import mezi servery
• Struktura LDIF– Každá položka je reprezentována jedním blokem– Bloky jsou odděleny prázdným řádkem– Struktura bloku:
dn: <rozlišovací jméno>
objectClass: <třída objektu>
<jméno atributu>: <hodnota atributu> ..
21LDAP
LDAP• Příklad LDIF souboru: base.ldif
dn: dc=lab,dc=net
dc: lab
objectClass: top
objectClass: domain
dn: ou=People,dc=lab,dc=net
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=lab,dc=net
ou: Group
objectClass: top
objectClass: organizationalUnit
LDAP 22
LDAP• Příklad záznamu ze souboru passwd_students_ipi.ldifdn: uid=xhemala0,ou=People,dc=lab,dc=net
uid: xhemala0
cn: Jakub Hemala
sn: Hemala
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {MD5}gWkZi09CZV3f+RzvpGgrKA==
shadowLastChange: 13907
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 11124
gidNumber: 11000
homeDirectory: /home/xhemala0
LDAP 23
LDAP• Příklad LDIF záznamu pro uživatele elektronické pošty:dn: uid=john,o=Example Corp,c=US
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: inetLocalMailRecipient
objectClass: xyzMailUser
cn: John Doe
sn: Doe
uid: john
userPassword: {crypt}y2KxtbzMYnApU
mail: [email protected]
mailLocalAddress: [email protected]
24LDAP
LDAP
• Alternativa LDIF – DSML (Directory Service Markup Language) – Současná verze DSMLv2.0 – XML formát pro adresářová data– Perspektivní způsob zajištění adresářových služeb v
aplikacích vycházejících z webových technologií a Java technologií
25LDAP
LDAP
Příklad XML-schema pro operaci LDAP „add-request“
<addRequest dn="CN=Alice,OU=HR,DC=Example,DC=COM">
<attr desc="objectclass"><value>top</value></attr>
<attr desc="objectclass"><value>person</value></attr>
<attr desc="objectclass"><value>organizationalPerson</value></attr>
<attr name="sn"><value>Johnson</value></attr>
<attr name="givenName"><value>Alice</value></attr>
<attr name="title"><value>Software Design Engineer</value></attr>
</addRequest>
26LDAP
LDAP• Bezpečnostní aspekty služby LDAP
– Autentizace (operace bind, unbind, abandon)• Přístup bez autentizace (anonymní) k veřejným informacím• Jednoduchá autentizace – klient zadá DN uživatele + heslo
(je uloženo jako hodnota atributu v příslušné položce)• Přes rozhraní SASL (Simple Authentication and Security
Layer)– Klient předá LDAP serveru DN autentizační entity, autentizační
mechanismus (TLS/SSL) a autentizační data (credentials)– Autentizační modul provede autentizaci klienta
– Autorizace• Na principu ACL – není součástí specifikace LDAP
– Zabezpečení proti odposlechu• Přes vrstvu SSL/TLS - port 636 (LDAPS)
27LDAP
28
LDAP• Konfigurovatelné oprávnění pro uživatele
– bez povolení přístupu k datům– k porovnání hodnot jmen (LDAPDN)– k vyhledání jmen (informace o jejich existenci)– ke čtení hodnot atributů jmen– k zápisu hodnot atributů jmen – k výmazu jména
• Adresář – soubor položek– položka „entry“ – množina atributů (typ – hodnota/hodnoty)– identifikace atributu – LDAPOID (řetězec oktetů v dekadické
tečkové notaci) nebo LDAPDN (mnemotechnický textový řetězec)
LDAP
LDAP• Distribuovaná služba LDAP – odkazy a replikace
– Odkazy (referrals)• Obecné – v základní konfiguraci serveru je odkaz na další
server (direktiva refferall – příklad: referral ldap://ldap-services.example.com:10389)
• Pro aktualizaci databáze na straně slave – konfiguraci je direktivou updateref – příklad updateref ldap://ldap-master.example.com)
• Odkazy objektů (objectClass referral) – viz dále
– Replikace• konfigurace master – slave (update z jednoho master serveru
na jeden nebo více slave serverů)• konfigurace multi-master (vzájemný update mezi dvěma nebo
více master servery)29LDAP
LDAP
30
• Princip řetězení dotazů atributy objectClass referral
Definice pro odkaz ze serveru LDAP1 na LDAP2:dn: o=grommets,dc=example,dc=com objectClass: referral objectClass: extensibleObject o: grommets ref: ldap://ldap2.example.com/o=grommets,dc=example,dc=net
LDAP
LDAP• Principy replikace master – slave a multi-master
31LDAP
LDAP• Implementace OpenLDAP
– LDAP servis• LDAP demon – slapd• Konfigurace demona - /etc/openldap/slapd.conf
– Správa databáze– Utility pro manipulaci s adresářovými daty na serveru se
spuštěným demonem - ldapadd, ldapsearch, ldap modify, ldapdelete ….
– Utility pro vytvářeni databáze (LDIF formátu) - slapcat, slapadd, slaptest …
• Další nástroje – LDAP browser32LDAP
33LDAP
LDAP• Související systémová nastavení• NSSWITCH – LDAP jako zdroj informací
/etc/nsswitch.confpasswd: files ldap
shadow: files ldap
group: files ldap
• NSCD (Name Service Cache Daemon) - vytváření cache systémové tabulky z ldap odpovědí - /etc/nscd.conf
• PAM_LDAP (autentizační modul) - /etc/pam_ldap.conf• http://etutorials.org/Server+Administration/
ldap+system+administration/
34LDAP