Apache Authentifizierung am LDAP-Server
description
Transcript of Apache Authentifizierung am LDAP-Server
Lars GelbkeLars Gelbke
Inf03Inf03
Apache Apache Authentifizierung am Authentifizierung am
LDAP-ServerLDAP-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
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 ?
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
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
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
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
Lars Gelbke
Inf03
LDAPLDAP
► LDAP-VerzeichnisstrukturLDAP-Verzeichnisstruktur hierarchische Baumstrukturhierarchische Baumstruktur root-Objektroot-Objekt Verwendung von Standardisierten SchemenVerwendung von Standardisierten Schemen
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
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
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
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)
Lars Gelbke
Inf03
AuthentifizierungAuthentifizierung
► AllgemeinAllgemein
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
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
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
Lars Gelbke
Inf03
AuthentifizierungAuthentifizierung
►mod_auth_ldapmod_auth_ldap
AuthLDAPAuthoritativeAuthLDAPAuthoritative AuthLDAPBindDNAuthLDAPBindDN AuthLDAPPasswordAuthLDAPPassword AuthLDAPCharsetConfigAuthLDAPCharsetConfig AuthLDAPCompareDNOnServAuthLDAPCompareDNOnServerer AuthLDAPDereferenceAliasesAuthLDAPDereferenceAliases
AuthLDAPEnabledAuthLDAPEnabled AuthLDAPFrontPageHackAuthLDAPFrontPageHack AuthLDAPGroupAttributeAuthLDAPGroupAttribute AuthLDAPGroupAttributelsDNAuthLDAPGroupAttributelsDN AuthLDAPRemoteUserlsDNAuthLDAPRemoteUserlsDN AuthLDAPURLAuthLDAPURL
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
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>
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►……
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
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
Lars Gelbke
Inf03
AuthentifizierungAuthentifizierung
► BeispielBeispiel
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"
Lars Gelbke
Inf03
AuthentifizierungAuthentifizierung
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
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