Apache Authentifizierung am LDAP-Server Lars Gelbke Inf03
Übersicht 1. Einführung 2. Apache 3. LDAP 4. Authentifizierung Allgemein und Aufbau 3. LDAP Einführung Verzeichnis / Datenbank Verzeichnisstruktur Mechanismen 4. Authentifizierung allgemeiner Ablauf Apache Konfiguration LDAP Konfiguration Beispiel 5. Resümee 6. Quellen Lars Gelbke Inf03
Einführung Warum? Wieso? Weshalb? LDAP was ist das ? LDAP Allheilmittel ? Apache Flexibel wie immer ? Apache standardkonform ? Lars Gelbke Inf03
Apache Allgemein Produkt der Apache Software Foundation OpenSource Projekt meist verbreiteter Web-Server entstanden aus dem NCSA http-Server serverseitige Unterstützung von Scriptsprachen Lars Gelbke Inf03
Apache Aufbau modularer Aufbau hohe Plattformunabhängigkeit durch APR (Apache Portable Runtime) seit Version 2.0 Vielzahl an verschiedenen Authentifizierungsmodulen verschiedene Securitykonzepte Lars Gelbke Inf03
LDAP Einführung Lightweight Directory Access Protocol Entwicklung an der Universität von Michigan und erstmal 1993 in einem RFC vorgeschlagen Weiterentwicklung/Vereinfachung des DAP (Directory Access Protocol) auch als X.500 Standard bekannt LDAP setzt im Gegensatz zu DAP nicht auf OSI-Stack sondern auf TCP/IP-Stack auf Lars Gelbke Inf03
LDAP Verzeichnis / Datenbank Verzeichnisse sind auf Lesezugriff optimiert und bieten nur eingeschränkte Schreibfunktionen verbesserte Suchfunktionen von vornherein standortunabhängig konzipiert kann viele gleichzeitige Zugriffe meistern Bsp.: Passwortdatei Lars Gelbke Inf03
LDAP LDAP-Verzeichnisstruktur hierarchische Baumstruktur root-Objekt Verwendung von Standardisierten Schemen Lars Gelbke Inf03
LDAP Schemen ähnelt einer Klasse welche für ein daraus entstandenes Objekt Attribute bereitstellt dient der Client-Standardisierung abgeleitete Klassen möglich Lars Gelbke Inf03
LDAP Beispiel ## FIRST Level hierarchy - people ## uses mixed upper and lower case for objectclass ou=people, dc=example,dc=com ou: peopledescription: All people in organisation objectclass: organizationalunit ## SECOND Level hierarchy ## ADD a single entry under FIRST (people) level # this is an ENTRY sequence and is preceded by # the ou: Human Resources is the department name dn: cn=Robert Smith,ou=people,dc=example,dc=com objectclass: inetOrgPerson cn: Robert Smith cn: Robert J Smith sn: smith uid: rjsmith userpassword: rJsmitH carlicense: HISCAR 123 homephone: 555-111-2222 mail: r.smith@example.com description: swell guy ou: Human Resources Beispiel # this is a comment dc=example,dc=com dc: example description: My wonderful company objectClass: dcObject objectClass: organization o: Example, Inc. Lars Gelbke Inf03
LDAP Mechanismen 2 Phasen Authentication Phase / bind phase Anmeldung des Clients am Verzeichnis Anonym Simple Protected (Simpel über SSL) Strong Authorization Phase / compare phase Abfrage der übergebenen Parameter Lars Gelbke Inf03
LDAP Stärken Schwächen ermöglicht zentralisierte Datenhaltung kein fixer Primärschlüssel vereinfachte Security Policen nur schwere Implementierung in SQL-Systemen offener Standard und somit kostenfreie Integration möglich wenig aussage kräftige Literatur optimiert auf Lesezugriff nicht alle Systeme unterstützen LDAP verteiltes Verzeichnissystem möglich generalisierte Schemen(Klassen) Lars Gelbke Inf03
Authentifizierung Allgemein Lars Gelbke Inf03
Authentifizierung System Betriebssystem: Suse 9.2 Apache: Teil des XAMPP for Linux Paketes 1.4.13 Apache-Version: 2.0.53 LDAP: OpenLDAP Version: 2.3.27 Datenbank: BerkeleyDB Version: 4.5.20 Lars Gelbke Inf03
Authentifizierung Apache modularer Aufbau Hauptkonfiguration in httpd.conf Zugriffsrechte können in httpd.conf oder in .htaccess konfiguriert werden .htaccess muss in dem zu schützenden Verzeichnis liegen Vielzahl an Parametern die durch die Module bereitgestellt werden LoadModule auth_module modules/mod_auth.so Lars Gelbke Inf03
Authentifizierung Apache-Module mod_auth mod_access Grundfunktionalitäten zur Dateibasierten Authentifizierung mod_access Grundfunktionalitäten zur Adressbasierten mod_ldap stellt Cache und SSL Funktionen zur Verfügung mod_auth_ldap wichtigstes Modul zur LDAP- Authentifizierung mod_core bietet Grundlegende Funktionalitäten welche von allen Modulen genutzten werden können Lars Gelbke Inf03
Authentifizierung mod_auth_ldap AuthLDAPAuthoritative AuthLDAPBindDN AuthLDAPPassword AuthLDAPCharsetConfig AuthLDAPCompareDNOnServer AuthLDAPDereferenceAliases AuthLDAPEnabled AuthLDAPFrontPageHack AuthLDAPGroupAttribute AuthLDAPGroupAttributelsDN AuthLDAPRemoteUserlsDN AuthLDAPURL Lars Gelbke Inf03
Authentifizierung Require-Direktive in mod_core valid-user user group User im LDAP vorhanden user nur speziell definierte User group nur Gruppenmitglieder dn auf distinguished name basierende Authentifizierung ldap-attribut es muss ein bestimmtes LDAP-Attribut erfüllt sein Lars Gelbke Inf03
Authentifizierung Beispiel 01 LoadModule ldap_module modules/mod_ldap.so 02 LoadModule auth_ldap_module modules/mod_auth_ldap.so 03 04 <Directory /> 05 Options None 06 AllowOverride all 07 Order deny,allow 08 Deny from all 09 AuthName "eDirectory Identifikation" 10 AuthType Basic 11 AuthLDAPURL ldap://192.168.123.6/ou=people,dc=n0s,dc=de 12 require valid-user 13 </Directory> Lars Gelbke Inf03
Authentifizierung LDAP-Grundkonfiguration Grundkonfiguration in der slapd.conf stets versuchen Client an Server anzupassen und nicht Server an Client slapd.conf lese/schreib geschützt Verschiede Hilfs-Tools ldapadd ldapsearch … Lars Gelbke Inf03
Authentifizierung LDAP-Konfiguration include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/inetorgperson.schema database bdb suffix "dc=n0s,dc=de“ # ACL1 access to attr=userpassword by self write by anonymous auth by group.exact="cn=itpeople,ou=groups,dc=n0s,dc=de" write by * none rootdn "cn=admin,dc=n0s,dc=de“ rootpw nene_so_einfach_nicht Lars Gelbke Inf03
Authentifizierung ldapadd ldapadd -f example.ldif -x -D "cn=admin,dc=n0s,dc=de" -w so_einfach_net Lars Gelbke Inf03
Authentifizierung Beispiel Lars Gelbke Inf03
Authentifizierung .htaccess AuthName "spezUser-dir Login“ AuthType Basic AuthLDAPURL ldap://192.168.123.6/dc=n0s,dc=de?cn require user "Robert Smith“ AuthName "Admin-dir Login" AuthLDAPURL ldap://192.168.123.6/dc=n0s,dc=de?uid require group cn=admin,ou=groups,dc=n0s,dc=de AuthName "spezAttr-Dir Login" AuthLDAPURL ldap://192.168.123.6/dc=n0s,dc=de?uid?sub require ldap-attribute ou="Sales" Lars Gelbke Inf03
Authentifizierung Lars Gelbke Inf03
Resümee Apache sehr einfach konfigurierbar aber dennoch stark anpassungsfähig LDAP benötigt viel Einarbeitungszeit, was jedoch an der Komplexität der Thematik und nicht an der Software liegt generell stellt es eine elegante und ausgereifte Lösung der Nutzeranmeldung dar Lars Gelbke Inf03
Quellen http://www.mitlinx.de/ldap/index.html Sehr gute Einführung in das Thema LDAP jedoch leider nicht vollständig http://www.zytrax.com/books/ldap/ Seite über LDAP und sehr gute einführende Beispiele http://www.apache.org/ (Apache Dokumentaion) wie bei den meisten OpenSource Projekten sehr ausführlich gehalten http://www.openldap.org/ (LDAP Dokumentation) bietet gute Hilfe bei der Grundinstallation http://de.wikipedia.org/wiki/Hauptseite gute Allgemeininformationen Lars Gelbke Inf03