1 OpenLDAP Usługi katalogowe w Urzędzie Miejskim w Pabianicach Jan Fijałkowski
2 Urząd oczyma administratora um.pabianice.plmaszynyużytkownicygrupybritbej...rootfijal...informatycyfijal...admin
3 Wszystko co chcielibyście wiedzieć o użytkowniku... ● Dane organizacyjne – Tytuł:Obywatel – Imię:Jan – Nazwisko:Fijałkowski – Numer telefonu:642 – Ulica:Zamkowa – Kod pocztowy:95-200 – Wydział:KPM
4 Wszystko co chcielibyście wiedzieć o użytkowniku... c.d. ● Dane systemowe – uid:fijal – uidNumber:1000 – gidNumber:1000 – loginShell:/bin/bash – password:********** –...
5 Jak to wszystko ogarnąć? ● Dane winny być scentralizowane ● Dane winny być dostępne z dowolnej maszyny w sieci, niezależnie od systemu ● Dane winny być dostępne z poziomu najważniejszych aplikacji ● Dostęp do danych winien pozostawać pod kontrolą ● Dane winne być replikowane
6 Problem stary jak sieć ● Celem łatwej wymiany danych katalogowych między systemami opracowano stosowne protokoły sieciowe: – Część protokołu X.500 zwana DAP (Directory Access Protocol), działająca na pełnym stosie OSI – Lekka wersja DAP (Lightweight Directory Access Protocol) działająca nad TCP/IP - LDAP
7 Implementacje LDAP ● OpenLDAP ● Novell eDirectory ● IBM LDAP directory ● Sun Tivoli Directory Server ● Windows Server 2003 Active Directory ●...
8 OpenLDAP ● Projekt powstał w 1998 roku przy wykorzystaniu implementacji LDAP na Uniwersytecie Michigan ● Składa się z: – Demona slapd – serwera – Demona slurpd – replikatora – Bibliotek implementujących protokół LDAP – Narzędzi linii poleceń
9 Protokół LDAP ● LDAP jest implementacją modeli: – Struktury informacji – Struktury przestrzeni nazw – Funkcjonalności – Bezpieczeństwa (aspekt ten nie jest zdefiniowany w specyfikacji, różni producenci stosują własne rozwiązania)
10 Urząd oczyma administratora: LDAP dc=um, dc=pabianice, dc=pl ou=Hosts ou=Peopleou=Group cn=brit cn=bej... uid=root uid=fijal...cn=users... cn=admin cn=fijal
11 Wszystko co chcielibyście wiedzieć o użytkowniku... LDAP dn: uid=fijal, ou=People,dc=um,dc=pabianice,dc=pl objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson... title: Obywatel givenName: Jan sn: Fija ł kowski telephoneNumber: 642 street: Zamkowa... dn: uid=fijal, ou=People,dc=um,dc=pabianice,dc=pl objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson... title: Obywatel givenName: Jan sn: Fija ł kowski telephoneNumber: 642 street: Zamkowa...
12 Struktura informacji wpisatrybut...wartość uid=fijal,ou=Peple,dc=um,dc=pabianice,dc=pl uidNumbe r title...1000Obywate l Pan
13 Struktura przestrzeni nazw ● Każdy wpis posiada „nazwę wyróznioną” (distinguished name), w skrócie DN ● Nazwa ta pozycjonuje wpis w drzewie informacji (Data Information Tree, DIT), podobnie jak pełna nazwa hosta pozycjonuje maszynę w DNS-ie ● Korzeniem drzewa jest „bazowy DN”, w naszym przypadku dc=um,dc=pabianice,dc=pl
14 Funkcjonalność ● Protokół LDAP określa trzy typy operacji: – Wyszukiwanie ● search, compare – Aktualizacja ● add, delete, modify, modifyDN – Uwierzytelnianie i operacje kontrolne ● bind, unbind, abandon
15 Bezpieczeństwo ● Uwierzytelnianie (akredytacja) – Dostęp anonimowy – Akredytacja podstawowa – LDAP przy użyciu SSL/TLS – SASL (Simple Authentication and Security Layer) ● Digest MD5 ● Kerberos v5
16 Stawiamy serwer - slapd.conf # Schema and objectClass definitions include/etc/ldap/schema/core.schema include/etc/ldap/schema/cosine.schema include/etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include/etc/ldap/schema/misc.schema include /etc/ldap/schema/samba.schema schemacheck on loglevel 0 # Schema and objectClass definitions include/etc/ldap/schema/core.schema include/etc/ldap/schema/cosine.schema include/etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include/etc/ldap/schema/misc.schema include /etc/ldap/schema/samba.schema schemacheck on loglevel 0
17 Stawiamy serwer – slapd.conf c.d. databasebdb suffix "dc=um,dc=pabianice,dc=pl" rootdn cn=admin,dc=um,dc=pabianice,dc=pl # replica replica host=172.16.3.2:389 bindmethod=simple binddn=cn=replicator,dc=um,dc=pabianice,dc=pl credentials=xxxxxxx replogfile/var/lib/ldap/replog... # TLS TLSCertificateFile /etc/ssl/certs/britcert.pem... databasebdb suffix "dc=um,dc=pabianice,dc=pl" rootdn cn=admin,dc=um,dc=pabianice,dc=pl # replica replica host=172.16.3.2:389 bindmethod=simple binddn=cn=replicator,dc=um,dc=pabianice,dc=pl credentials=xxxxxxx replogfile/var/lib/ldap/replog... # TLS TLSCertificateFile /etc/ssl/certs/britcert.pem...
18 Bezpieczeństwo slapd.conf ● Kontrola dostępu realizowana w OpenLDAP przez ACL access to attrs=mobile by dn.regex="cn=admin,dc=um,dc=pabianice,dc=pl" write by dn.regex="cn=replicator,dc=um,dc=pabianice,dc=pl" read by self read by * none access to * by dn="cn=admin,dc=um,dc=pabianice,dc=pl" tls_ssf=128 write by * tls_ssf=128 read access to attrs=mobile by dn.regex="cn=admin,dc=um,dc=pabianice,dc=pl" write by dn.regex="cn=replicator,dc=um,dc=pabianice,dc=pl" read by self read by * none access to * by dn="cn=admin,dc=um,dc=pabianice,dc=pl" tls_ssf=128 write by * tls_ssf=128 read
19 Narzędzia linii poleceń ● Offline – slapadd, slapcat ● Online – ldapsearch, ldapcompare – ldapadd, ldapmodify, ldapmodrdn, ldapdelete – ldappaswd, ldapwhoami
20 Konfigurujemy klientów - ldap.conf BASEdc=um, dc=pabianice, dc=pl URIldap://172.16.3.51 TLS_CACERTtc/ssl/certs/cacert.pem BASEdc=um, dc=pabianice, dc=pl URIldap://172.16.3.51 TLS_CACERTtc/ssl/certs/cacert.pem
21 Narzędzia okienkowe: gq - Search &(givenName=Jan*)(street=Zamkow a)
22 Narzędzia okienkowe: gq - wpis
23 Narzędzia okienkowe: gq - Browse
24 Usługi ● Name Service Switch-libnss-ldap ● pam- libpam-ldap ● SMTP- exim4 ● POP3- courier-pop-ssl ● HTTP- apache2 ● Domena NT-samba
25 Name Service Switch-libnss-ldap ● Usługi NSS- /etc/nsswitch.conf ● libnss-ldap- /etc/libnss- ldap.conf uri ldap://172.16.3.51/ldap://172.16.3.51/ base dc=um,dc=pabianice,dc=pl rootbinddn cn=admin,dc=um,dc=pabianice,dc=pl # has ł o w /etc/ldap.secret mode 0600 nss_base_passwd ou=People,dc=um,dc=pabianice,dc=pl nss_base_shadow ou=People,dc=um,dc=pabianice,dc=pl nss_base_group ou=Group,dc=um,dc=pabianice,dc=pl uri ldap://172.16.3.51/ldap://172.16.3.51/ base dc=um,dc=pabianice,dc=pl rootbinddn cn=admin,dc=um,dc=pabianice,dc=pl # has ł o w /etc/ldap.secret mode 0600 nss_base_passwd ou=People,dc=um,dc=pabianice,dc=pl nss_base_shadow ou=People,dc=um,dc=pabianice,dc=pl nss_base_group ou=Group,dc=um,dc=pabianice,dc=pl
26 pam-libpam-ldap ● Konieczny demon nscd ● libpam-ldap- /etc/pam_ldap.conf ● pam- /etc/pam.d/us ł uga authsufficientpam_unix.somd5 shadow authsufficientpam_ldap.so use_first_pass authrequiredpam_deny.so authsufficientpam_unix.somd5 shadow authsufficientpam_ldap.so use_first_pass authrequiredpam_deny.so
27 SMTP-exim4 ● /etc/exim4/conf.d/auth fixed_plain: driver = plaintext public_name = PLAIN server_condition = ${if ldapauth \ {user="uid=${quote_ldap:$2}, \ ou=People,dc=um,dc=pabianice,dc=pl" \ pass="$3" \ ldaps://217.97.237.109/\ }\ {yes}{no}\ } server_set_id = uid=$2 server_prompts = : fixed_plain: driver = plaintext public_name = PLAIN server_condition = ${if ldapauth \ {user="uid=${quote_ldap:$2}, \ ou=People,dc=um,dc=pabianice,dc=pl" \ pass="$3" \ ldaps://217.97.237.109/\ }\ {yes}{no}\ } server_set_id = uid=$2 server_prompts = :
28 POP3-courier-ldap ● /etc/courier/authldaprc LDAP_SERVER 172.16.3.51 LDAP_PORT 389 LDAP_PROTOCOL_VERSION 3 LDAP_BASEDN dc=um,dc=pabianice,dc=pl LDAP_MAIL mail LDAP_FILTER (objectClass=posixAccount) LDAP_HOMEDIR homeDirectory LDAP_FULLNAME cn LDAP_CRYPTPW userPassword LDAP_UID uidNumber LDAP_GID gidNumber LDAP_TLS 1 LDAP_SERVER 172.16.3.51 LDAP_PORT 389 LDAP_PROTOCOL_VERSION 3 LDAP_BASEDN dc=um,dc=pabianice,dc=pl LDAP_MAIL mail LDAP_FILTER (objectClass=posixAccount) LDAP_HOMEDIR homeDirectory LDAP_FULLNAME cn LDAP_CRYPTPW userPassword LDAP_UID uidNumber LDAP_GID gidNumber LDAP_TLS 1
29 HTTP(S)-apache2 ● potrzebny moduł mod_auth_ldap NameVirtualHost ldap.um.pabianice.pl:443 #... SSL AuthType Basic AuthName "LDAP Authentication" AuthLDAPAuthoritative On AuthLDAPEnabled On AuthLDAPURLldap://172.16.3.51:389/\ ou=People,dc=um,dc=pabianice,dc=pl?uid?one Require valid user NameVirtualHost ldap.um.pabianice.pl:443 #... SSL AuthType Basic AuthName "LDAP Authentication" AuthLDAPAuthoritative On AuthLDAPEnabled On AuthLDAPURLldap://172.16.3.51:389/\ ou=People,dc=um,dc=pabianice,dc=pl?uid?one Require valid user
30 Samba ● /etc/samba/smb.conf ● smbldap-tools passdb backend = ldapsam:ldaps://172.16.3.51 ldap admin dn = cn=admin,dc=um,dc=pabianice,dc=pl ldap suffix = dc=um,dc=pabianice,dc=pl ldap group suffix = ou=Group ldap user suffix = ou=People ldap machine suffix = ou=People ldap ssl = On add user script = /usr/sbin/smbldap-useradd -m "%u" passdb backend = ldapsam:ldaps://172.16.3.51 ldap admin dn = cn=admin,dc=um,dc=pabianice,dc=pl ldap suffix = dc=um,dc=pabianice,dc=pl ldap group suffix = ou=Group ldap user suffix = ou=People ldap machine suffix = ou=People ldap ssl = On add user script = /usr/sbin/smbldap-useradd -m "%u"
31 Typowi klienci ● klient poczty- mozilla-thunderbird ● pakiet biurowy- OpenOffice ● aplikacja PIM- Kontact ● programiści-API
32 mozilla-thunderbird
33 mozilla-thunderbird: uzupełnianie
34 OpenOffice: listy seryjne
35 OpenOffice: kwerenda
36 Kontact
37 LDAP API ● OpenLDAP-C ● Net::LDAP-perl ● python-ldap-Python ● JNDI-Java ●...
38 Źródła informacji ● http://www.openldap.org/ http://www.openldap.org/ ● http://www.padl.com/OSS/MigrationTools.html http://www.padl.com/OSS/MigrationTools.html ● http://www.bind9.org/ http://www.bind9.org/ ● http://ldapguru.org/ http://ldapguru.org/ ● man -k ldap :-)