Bardzo dynamiczy rozwój Internetu, stawia coraz wyższą poprzeczkę twórcom narzędzi pozwalających dotrzeć nam do szukanej informacji czy kontaktu z innymi. Jedną z takich usług są tzw. usługi katalogowe. Ostatnio dominującym wśród standardów przeznaczonych do obsługi zasobów danych o charakterze katalogowym stał się serwer LDAP (Lightweight Directory Access Protocol).
20.9.2004 16:00 | Marek Chrobak | přečteno 37368×
Bardzo dynamiczy rozwój Internetu, stawia coraz wyższą poprzeczkę twórcom narzędzi pozwalających dotrzeć nam do szukanej informacji czy kontaktu z innymi. Jedn ą z takich usług są tzw. usługi katalogowe. Ostatnio dominującym wśród standardów przeznaczonych do obsługi zasobów danych o charakterze katalogowym stał się serw er LDAP (Lightweight Directory Access Protocol), który dostarczając uniwersalną bazę danych oraz interfejs dostępowy wykorzystujący protokół TCP/IP, stanowi wygod ną infrastrukturę dla oferowanych usług sieciowych. Istotną własnością systemów działających w oparciu o protokół LDAP jest dobra skalowalność i możliwość dostoso wania schematu bazy do naszych potrzeb.
Chciałbym Wam przybliżyć zasadę działania LDAP-a i pokazać w jaki sposób stworzyć własną bazę w oparciu o ten serwer.
A więc zacznijmy od początku. Musimy mieć wersję instalacyjną. Możemy ją ściągnąć ze strony http://www.openldap.org/software/download/. Sam proces kompilacji i instalacji jest stosunkowo prosty. Wystarczy, że wykonamy następujące polecenia:
tar xvzf openldap-VERSION.tgz |
Teraz zostaje nam już tylko edytowanie pliku konfiguracyjnego bazy /usr/local/etc/openldap/slapd.conf. Przykładowy plik konfiguracyjny może wyglądać następująco:
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
database ldbm
suffix "o=FIRMA,c=pl"
rootdn "cn=Manager,o=FIRMA,c=pl"
rootpw naszehaslo
directory /usr/local/var/openldap-data
pidfile /usr/local/var/slapd.pid
argsfile /usr/local/var/slapd.args
index objectClass eq
Skonfigurowaną bazę uruchamiamy poleceniem /usr/local/libexec/slapd.
Zanim przystąpimy do dalszej konfiguracji, musimy najpierw utworzyć w bazie tzw. rekord główny. Może to być wpis określający organizację lub domenę. Kolejne rekor
dy będą znajdować się poniżej. Każdy następny rekord dodajemy wykonując polecenie:
ldapadd -f naszplik -D 'cn=Manager,o=FIRMA,c=pl' -w naszehaslo
gdzie -f nasz_plik wskazuje skrypt do tworzenia bazy i podstawowych danych. Kolejny parametr -D określa nazwę użytkownika mającego dostęp do zapisu w bazie, za ś opcja -w nasze_haslo jest hasłem użytkownika. Proponuję stworzyć dwa pliki konfiguracyjne o nazwach organs.ldap, który będzie zawierał informacje o strukturze b azy oraz users.ldap. Przykładowe pliki powinny wyglądać następująco:
-----------organs.ldap-----------
dn: o=FIRMA,c=pl
o: FIRMA
objectclass: organization
description: Firma Sp. z o.o.
dn: ou=Ksiegowosc,o=FIRMA,c=pl
objectclass: organizationalUnit
ou: Ksiegowosc
description: Ksiegowosc
dn: ou=Pracownicy,o=FIRMA,c=pl
objectclass: organizationalUnit
ou: Pracownicy
description: Pracownicy
-----------organs.ldap-----------
-----------users.ldap-----------
dn: cn=Jan Kowalski,ou=Pracownicy,o=FIRMA,c=pl
objectclass: person
objectclass: inetorgperson
sn: Kowalski
cn: Jan Kowalski
gn: Jan
title: Administrator
homePhone: +48332220099
mobile: +48601223344
mail: j.kowalski@firma.net
dn: cn=Wojciech Brzozowski,ou=Ksiegowosc,o=FIRMA,c=pl
objectclass: person
objectclass: inetorgperson
sn: Brzozowski
cn: Wojciech Brzozowski
gn: Wojciech
title: Fabrykant
homePhone: +48322009988
mobile: +48505334488
mail: w.brzozowski@firma.net
-----------users.ldap-----------
W przykładzie określamy rekordy dla Jana Kowalskiego oraz Wojciecha Brzozowskiego. Standardowo każda osoba powinna należeć do klasy person, która wymaga określ enia atrybutów cn (commonname/nazwa zwyczajowa) oraz sn (surname/nazwisko), które są zdefiniowane w core.schema. Użyliśmy także atrybutu gn (givenname/imię) zawar tego w klasie inetOrgPerson. I tak po wykonaniu następujących poleceń:
ldapadd -f orgs.ldap -D 'cn=Manager,o=FIRMA,c
=pl' -w nasze_haslo |
ldapsearch -b "ou=Pracownicy,o=FIRMA,c=pl" cn=* |
Teraz zajmiemy się bezpieczeństwem. Pod pojęciem bezpieczeństwa bazy LDAP będę tu rozumiał dwa zasadnicze czynniki: prawa dostępu oraz szyfrowanie transmisji. OpenLDAP posiada rozbudowany mechanizm kontrolujący prawa dostępu. Postać ogólną pojedynczej definicji ACL (Access Control Limit - Limit kontroli dostępu) określa następujący schemat:
access to [obiekt] by [użytkownik] [poziom dostępu]
Poszczególne składowe określone w nawiasach kwadratowych określają:
Jak widać na tym przykładzie każdy następny poziom dostępu posiada uprawnienia poprzednika. Czyli użytkownik otrzymujący poziom read, otrzymuje także search, compare, auth.
Oto kilka przykładowych list kontroli dostępu do OpenLDAP:
Jednak taki poziom zabezpieczeń jest bardzo prymitywny w dzisiejszych czasach, skoro istnieje możliwość podsłuchania transmisji i przechwycenia przesyłanych da nych. Aby zwiększyć poziom zabezpieczeń możemy użyć połączenia szyfrowanego SSL. Skorzystajmy z biblioteki OpenLDAP z Open SSL dzięki opcjom:
Dodatkowo możemy użyć następujących parametrów:
Taka definicja opcji pozwala na korzystanie z protokołu TLS na standardowym porcie ldap (389/tcp). Uruchomienie OpenLDAP działającego na porcie ldaps (636/tcp) jest dopiero możliwe po uruchomieniu bazy z opcjami:
/usr/libexec/slapd -h 'ldap:/// ldaps:///' |
Dzięki temu demon może nasłuchiwać na wszystkich adresach przypisanych do serwera na portach ldap i ldaps. Definicja adresu, na jakim ma nasłuchiwać powinien w yglądać:
/usr/libexec/slapd -h 'ldap://192.168.0.1/ ldaps://192.168.0.1/' |
I to by było wszystko na temat bezpieczeństwa w OpenLDAP. Istnieje oczywiście wiele możliwości zabezpieczenia serwera, lecz jest ich tak wiele, że o tym innym razem.
Do mitów należy opinia, że LDAP stosuje się tam gdzie liczbę użytkowników określa się w tysiącach. Usługi katalogowe LDAP można stosować "wszędzie i praktyczni e do wszystkiego". Mam nadzieję, że artykuł ten przybliżył Wam zagadnienia związane z instalowaniem i korzystaniem z serwera LDAP i dzięki niemu zaczniecie korzys tać z tego serwera usług katalogowych.
Autor: Marek Chrobak, 17-09-2004
Online verze článku: http://www.linuxsoft.cz/article.php?id_article=415