Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

27
Lars Gelbke Lars Gelbke Inf03 Inf03 Apache Apache Authentifizierung Authentifizierung am LDAP-Server am LDAP-Server

Transcript of Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Page 1: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars GelbkeLars Gelbke

Inf03Inf03

Apache Apache Authentifizierung am Authentifizierung am

LDAP-ServerLDAP-Server

Page 2: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

ÜbersichtÜbersicht

► 1. Einführung1. Einführung► 2. Apache2. Apache

Allgemein und Allgemein und AufbauAufbau

► 3. LDAP3. LDAP EinführungEinführung Verzeichnis / Verzeichnis /

DatenbankDatenbank VerzeichnisstrukturVerzeichnisstruktur MechanismenMechanismen

► 4. Authentifizierung4. Authentifizierung allgemeiner Ablaufallgemeiner Ablauf Apache Apache

KonfigurationKonfiguration LDAP KonfigurationLDAP Konfiguration BeispielBeispiel

► 5. Resümee5. Resümee► 6. Quellen6. Quellen

Page 3: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

EinführungEinführung

►Warum? Wieso? Weshalb?Warum? Wieso? Weshalb? LDAP was ist das ?LDAP was ist das ? LDAP Allheilmittel ?LDAP Allheilmittel ?

Apache Flexibel wie immer ?Apache Flexibel wie immer ? Apache standardkonform ?Apache standardkonform ?

Page 4: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

ApacheApache

► AllgemeinAllgemein Produkt der Apache Software FoundationProdukt der Apache Software Foundation

OpenSource ProjektOpenSource Projekt

meist verbreiteter Web-Servermeist verbreiteter Web-Server

entstanden aus dem NCSA http-Serverentstanden aus dem NCSA http-Server

serverseitige Unterstützung von Scriptsprachenserverseitige Unterstützung von Scriptsprachen

Page 5: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

ApacheApache

► AufbauAufbau modularer Aufbaumodularer Aufbau

hohe Plattformunabhängigkeit durch APR hohe Plattformunabhängigkeit durch APR (Apache Portable Runtime) seit Version 2.0(Apache Portable Runtime) seit Version 2.0

Vielzahl an verschiedenen Vielzahl an verschiedenen AuthentifizierungsmodulenAuthentifizierungsmodulen

verschiedene Securitykonzepte verschiedene Securitykonzepte

Page 6: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

LDAPLDAP

► EinführungEinführung Lightweight Directory Access ProtocolLightweight Directory Access Protocol

Entwicklung an der Universität von Michigan und Entwicklung an der Universität von Michigan und erstmal 1993 in einem RFC vorgeschlagenerstmal 1993 in einem RFC vorgeschlagen

Weiterentwicklung/Vereinfachung des DAP Weiterentwicklung/Vereinfachung des DAP (Directory Access Protocol) auch als X.500 (Directory Access Protocol) auch als X.500 Standard bekanntStandard bekannt

LDAP setzt im Gegensatz zu DAP nicht auf OSI-LDAP setzt im Gegensatz zu DAP nicht auf OSI-Stack sondern auf TCP/IP-Stack aufStack sondern auf TCP/IP-Stack auf

Page 7: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

LDAPLDAP

► Verzeichnis / DatenbankVerzeichnis / Datenbank Verzeichnisse sind auf Lesezugriff optimiert und Verzeichnisse sind auf Lesezugriff optimiert und

bieten nur eingeschränkte Schreibfunktionenbieten nur eingeschränkte Schreibfunktionen

verbesserte Suchfunktionenverbesserte Suchfunktionen

von vornherein standortunabhängig konzipiertvon vornherein standortunabhängig konzipiert

kann viele gleichzeitige Zugriffe meisternkann viele gleichzeitige Zugriffe meistern

Bsp.: PasswortdateiBsp.: Passwortdatei

Page 8: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

LDAPLDAP

► LDAP-VerzeichnisstrukturLDAP-Verzeichnisstruktur hierarchische Baumstrukturhierarchische Baumstruktur root-Objektroot-Objekt Verwendung von Standardisierten SchemenVerwendung von Standardisierten Schemen

Page 9: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

LDAPLDAP

►SchemenSchemen ähnelt einer Klasse welche für ein daraus ähnelt einer Klasse welche für ein daraus

entstandenes Objekt Attribute bereitstelltentstandenes Objekt Attribute bereitstellt

dient der Client-Standardisierungdient der Client-Standardisierung

abgeleitete Klassen möglichabgeleitete Klassen möglich

Page 10: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

LDAPLDAP► BeispielBeispiel

# this is a comment dc=example,dc=comdc: exampledescription: My wonderful company objectClass: dcObjectobjectClass: organizationo: Example, Inc.

## FIRST Level hierarchy - people ## uses mixed upper and lower case for objectclassou=people, dc=example,dc=comou: peopledescription: All people in organisationobjectclass: 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 namedn: cn=Robert Smith,ou=people,dc=example,dc=comobjectclass: inetOrgPersoncn: Robert Smithcn: Robert J Smithsn: smithuid: rjsmithuserpassword: rJsmitHcarlicense: HISCAR 123homephone: 555-111-2222mail: [email protected]: swell guyou: Human Resources

Page 11: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

LDAPLDAP

►MechanismenMechanismen 2 Phasen2 Phasen

►Authentication Phase / bind phaseAuthentication Phase / bind phase Anmeldung des Clients am VerzeichnisAnmeldung des Clients am Verzeichnis AnonymAnonym SimpleSimple Protected (Simpel über SSL)Protected (Simpel über SSL) StrongStrong

►Authorization Phase / compare phase Authorization Phase / compare phase Abfrage der übergebenen ParameterAbfrage der übergebenen Parameter

Page 12: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

LDAPLDAPStärkenStärken SchwächenSchwächen

ermöglicht zentralisierte ermöglicht zentralisierte Datenhaltung Datenhaltung

kein fixer Primärschlüssel kein fixer Primärschlüssel

vereinfachte Security vereinfachte Security Policen Policen

nur schwere nur schwere Implementierung in SQL-Implementierung in SQL-Systemen Systemen

offener Standard und somit offener Standard und somit kostenfreie Integration kostenfreie Integration möglich möglich

wenig aussage kräftige wenig aussage kräftige Literatur Literatur

optimiert auf Lesezugriff optimiert auf Lesezugriff nicht alle Systeme nicht alle Systeme unterstützen LDAP unterstützen LDAP

verteiltes verteiltes Verzeichnissystem möglich Verzeichnissystem möglich

generalisierte generalisierte Schemen(Klassen) Schemen(Klassen)

Page 13: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

► AllgemeinAllgemein

Page 14: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

►SystemSystem Betriebssystem: Betriebssystem: Suse 9.2Suse 9.2 Apache: Apache: Teil des XAMPP for Linux Teil des XAMPP for Linux

Paketes 1.4.13Paketes 1.4.13 Apache-Version: Apache-Version: 2.0.532.0.53 LDAP:LDAP: OpenLDAP Version: OpenLDAP Version:

2.3.272.3.27 Datenbank:Datenbank: BerkeleyDB Version: BerkeleyDB Version:

4.5.204.5.20

Page 15: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

► ApacheApache modularer Aufbaumodularer Aufbau

Hauptkonfiguration inHauptkonfiguration in httpd.conf httpd.conf Zugriffsrechte können in httpd.conf oder Zugriffsrechte können in httpd.conf oder

in .htaccess konfiguriert werdenin .htaccess konfiguriert werden .htaccess muss in dem zu schützenden .htaccess muss in dem zu schützenden

Verzeichnis liegenVerzeichnis liegen Vielzahl an Parametern die durch die Vielzahl an Parametern die durch die

Module bereitgestellt werdenModule bereitgestellt werden

LoadModule auth_module LoadModule auth_module modules/mod_auth.somodules/mod_auth.so

Page 16: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

► Apache-ModuleApache-Module mod_authmod_auth

Grundfunktionalitäten zur DateibasiertenGrundfunktionalitäten zur DateibasiertenAuthentifizierungAuthentifizierung

mod_accessmod_accessGrundfunktionalitäten zur AdressbasiertenGrundfunktionalitäten zur AdressbasiertenAuthentifizierungAuthentifizierung

mod_ldapmod_ldapstellt Cache und SSL Funktionen zur Verfügungstellt Cache und SSL Funktionen zur Verfügung

mod_auth_ldapmod_auth_ldapwichtigstes Modul zur LDAP- Authentifizierungwichtigstes Modul zur LDAP- Authentifizierung

mod_coremod_corebietet Grundlegende Funktionalitäten welche vonbietet Grundlegende Funktionalitäten welche vonallen Modulen genutzten werden könnenallen Modulen genutzten werden können

Page 17: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

►mod_auth_ldapmod_auth_ldap

AuthLDAPAuthoritativeAuthLDAPAuthoritative AuthLDAPBindDNAuthLDAPBindDN AuthLDAPPasswordAuthLDAPPassword AuthLDAPCharsetConfigAuthLDAPCharsetConfig AuthLDAPCompareDNOnServAuthLDAPCompareDNOnServerer AuthLDAPDereferenceAliasesAuthLDAPDereferenceAliases

AuthLDAPEnabledAuthLDAPEnabled AuthLDAPFrontPageHackAuthLDAPFrontPageHack AuthLDAPGroupAttributeAuthLDAPGroupAttribute AuthLDAPGroupAttributelsDNAuthLDAPGroupAttributelsDN AuthLDAPRemoteUserlsDNAuthLDAPRemoteUserlsDN AuthLDAPURLAuthLDAPURL

Page 18: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

► Require-Direktive in mod_coreRequire-Direktive in mod_core valid-uservalid-user

User im LDAP vorhandenUser im LDAP vorhanden useruser

nur speziell definierte Usernur speziell definierte User groupgroup

nur Gruppenmitgliedernur Gruppenmitglieder dndn

auf distinguished name basierende Authentifizierungauf distinguished name basierende Authentifizierung ldap-attributldap-attribut

es muss ein bestimmtes LDAP-Attribut erfüllt seines muss ein bestimmtes LDAP-Attribut erfüllt sein

Page 19: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

► BeispielBeispiel

01 LoadModule ldap_module modules/mod_ldap.so01 LoadModule ldap_module modules/mod_ldap.so

02 LoadModule auth_ldap_module modules/mod_auth_ldap.so02 LoadModule auth_ldap_module modules/mod_auth_ldap.so

03 03

04 <Directory />04 <Directory />

05 Options None05 Options None

06 AllowOverride all06 AllowOverride all

07 Order deny,allow07 Order deny,allow

08 Deny from all08 Deny from all

09 AuthName "eDirectory Identifikation"09 AuthName "eDirectory Identifikation"

10 AuthType Basic10 AuthType Basic

11 AuthLDAPURL 11 AuthLDAPURL ldap://192.168.123.6/ou=people,dc=n0s,dc=deldap://192.168.123.6/ou=people,dc=n0s,dc=de

12 require valid-user12 require valid-user

13 </Directory>13 </Directory>

Page 20: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

►LDAP-GrundkonfigurationLDAP-Grundkonfiguration Grundkonfiguration in der slapd.confGrundkonfiguration in der slapd.conf stets versuchen Client an Server stets versuchen Client an Server

anzupassen und nicht Server an Clientanzupassen und nicht Server an Client slapd.conf lese/schreib geschütztslapd.conf lese/schreib geschützt Verschiede Hilfs-ToolsVerschiede Hilfs-Tools

►ldapaddldapadd►ldapsearchldapsearch►……

Page 21: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

► LDAP-KonfigurationLDAP-Konfiguration

include /usr/local/etc/openldap/schema/core.schemainclude /usr/local/etc/openldap/schema/core.schema

include include /usr/local/etc/openldap/schema/inetorgperson.schema/usr/local/etc/openldap/schema/inetorgperson.schema

database bdbdatabase bdb

suffix "dc=n0s,dc=de“suffix "dc=n0s,dc=de“

# ACL1# ACL1

access to attr=userpasswordaccess to attr=userpassword

by self writeby self write

by anonymous authby anonymous auth

by group.exact="cn=itpeople,ou=groups,dc=n0s,dc=de" by group.exact="cn=itpeople,ou=groups,dc=n0s,dc=de" write write

by * noneby * none

rootdn "cn=admin,dc=n0s,dc=de“rootdn "cn=admin,dc=n0s,dc=de“

rootpw nene_so_einfach_nichtrootpw nene_so_einfach_nicht

Page 22: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

► ldapaddldapaddldapadd -f example.ldif -x -D "cn=admin,dc=n0s,dc=de" -w ldapadd -f example.ldif -x -D "cn=admin,dc=n0s,dc=de" -w

so_einfach_netso_einfach_net

Page 23: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

► BeispielBeispiel

Page 24: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung.htaccess.htaccess

AuthName "spezUser-dir Login“AuthName "spezUser-dir Login“

AuthType BasicAuthType Basic

AuthLDAPURL ldap://192.168.123.6/dc=n0s,dc=de?cnAuthLDAPURL ldap://192.168.123.6/dc=n0s,dc=de?cn

require user "Robert Smith“require user "Robert Smith“

AuthName "Admin-dir Login"AuthName "Admin-dir Login"

AuthType BasicAuthType Basic

AuthLDAPURL ldap://192.168.123.6/dc=n0s,dc=de?uidAuthLDAPURL ldap://192.168.123.6/dc=n0s,dc=de?uid

require group cn=admin,ou=groups,dc=n0s,dc=derequire group cn=admin,ou=groups,dc=n0s,dc=de

AuthName "spezAttr-Dir Login"AuthName "spezAttr-Dir Login"

AuthType BasicAuthType Basic

AuthLDAPURL ldap://192.168.123.6/dc=n0s,dc=de?uid?subAuthLDAPURL ldap://192.168.123.6/dc=n0s,dc=de?uid?sub

require ldap-attribute ou="Sales"require ldap-attribute ou="Sales"

Page 25: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

AuthentifizierungAuthentifizierung

Page 26: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

ResümeeResümee

► Apache sehr einfach konfigurierbar aber Apache sehr einfach konfigurierbar aber dennoch stark anpassungsfähigdennoch stark anpassungsfähig

► LDAP benötigt viel Einarbeitungszeit, was LDAP benötigt viel Einarbeitungszeit, was jedoch an der Komplexität der Thematik und jedoch an der Komplexität der Thematik und nicht an der Software liegtnicht an der Software liegt

► generell stellt es eine elegante und generell stellt es eine elegante und ausgereifte Lösung der Nutzeranmeldung darausgereifte Lösung der Nutzeranmeldung dar

Page 27: Lars Gelbke Inf03 Apache Authentifizierung am LDAP-Server.

Lars Gelbke

Inf03

QuellenQuellen► http://http://www.mitlinx.dewww.mitlinx.de//ldapldap//index.htmlindex.html

Sehr gute Einführung in das Thema LDAP jedoch leider nicht Sehr gute Einführung in das Thema LDAP jedoch leider nicht vollständigvollständig

► http://www.zytrax.com/books/ldap/http://www.zytrax.com/books/ldap/ Seite über LDAP und sehr gute einführende BeispieleSeite über LDAP und sehr gute einführende Beispiele

► http://www.apache.org/ (Apache Dokumentaion)http://www.apache.org/ (Apache Dokumentaion) wie bei den meisten OpenSource Projekten sehr ausführlich wie bei den meisten OpenSource Projekten sehr ausführlich

gehaltengehalten

► http://www.openldap.org/ (LDAP Dokumentation)http://www.openldap.org/ (LDAP Dokumentation) bietet gute Hilfe bei der Grundinstallationbietet gute Hilfe bei der Grundinstallation

► http://de.wikipedia.org/wiki/Hauptseitehttp://de.wikipedia.org/wiki/Hauptseite gute Allgemeininformationengute Allgemeininformationen