350 likes | 576 Vues
LDAP. 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. Lightweight Directory Access Protocol Adresářová služba. LDAP. K čemu je LDAP určen
E N D
LDAP • 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 Lightweight Directory Access Protocol Adresářová služba 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 LDAP
LDAP LDAP
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
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) požadavek LDAP klient LDAP server odpověď • LDAP operace • Autentizace • Prohledávání databáze • Manipulace s daty databáze Databáze LDAP
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
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 IP TCP messageID protocolOp controls LDAP data 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“) LDAP
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 LDAP
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é atributy LDAP
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 LDAP
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
LDAP Stromová hierarchie objektů – DIT (DirectoryInformationTree) 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. LDAP
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 LDAP
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 syntax LDAP
LDAP • Globální prostor identifikátorů informačních objektů iso-memeber-body (2) iso (1) ccitt (0) iso-ccitt (2) czech_rep (203) org (3) usa (840) dod (6) directory (1) internet (1) InternetováSMI experimental (3) private (4) mgmt (2) security (5) snmpV2 (6) IANA- registered private enterprises (1) Stanford Univ. (299) IBM (4) Cisco (9) 1.3.6.1.4.1.4 1.3.6.1.4.1.9 …… Privátní OID LDAP
LDAP • Záznam uživatele v /etc/passwd objectclass ( 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/shadow objectclass ( 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 ) ) LDAP
LDAP • Některé obvyklé atributy: LDAP
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>.. LDAP
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
LDAP • Příklad záznamu ze souboru passwd_students_ipi.ldif dn: 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
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: john@example.com mailLocalAddress: john@example.com LDAP
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í LDAP
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> LDAP
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) LDAP
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) LDAP
LDAP • 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 LDAP
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 browser LDAP
LDAP • Související systémová nastavení • NSSWITCH – LDAP jako zdroj informací /etc/nsswitch.conf passwd: 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/ LDAP