Inhaltsverzeichnis
Apache HTTP Server CentOS 6 - mod_ldap - LDAP-Authentifizierung
Das Apache HTTP Server-Modul mod_ldap
und mod_authnz_ldap
sind i.d.R. bereits im Apache HTTP Server-RPM-Paket der meisten Linux-Distributionen enthalten.
Diese beiden Module
mod_ldap
mod_authnz_ldap
werden benötigt um den Zugriff auf einen LDAP-Server, hier in dieser Beschreibung der OpenLDAP, zu realisieren um z.B. im Einsatz in Kombination mit
.htaccess
Dateien Verwendung zu finden.
Eine Beschreibung zur Installation und den Einsatz von OpenLDAP unter CentOS ist ebenfalls hier in diesem DokuWiki unter –> LDAP CentOS 5 enthalten.
WICHTIG - Um LDAPS TLS/SSL verwenden zu können wird eine eigene CA bzw. ein mind. Self-Signed-Certificate benötigt !!!
HINWEIS - Zur Einrichtung einer eigenen CA sind Informationen in diesem DokuWiki unter –> Postfix TLS einsetzen enthalten.
LDAP
Im folgenden wird die Einrichtung eines Zugriffs auf einen LDAP-Server via DNS-Adresse und Port dargestellt. Folgende Rahmenbedingungen sollen dabei gegeben sein:
- LDAP-Server-DNS:
ldap.tachtler.net
- Port:
389
Konfiguration: /etc/httpd/conf/httpd.conf
Nachfolgende Module müssen in der Konfigurationsdatei des Apache HTTP Server geladen werden, was in der Konfigurationsdatei
/etc/httpd/conf/httpd.conf
wie folgt konfiguriert werden muss (nur relevanter Ausschnitt):
... # # Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you # have to place corresponding `LoadModule' lines at this location so the # directives contained in it are actually available _before_ they are used. # Statically compiled modules (those listed by `httpd -l') do not need # to be loaded here. # # Example: # LoadModule foo_module modules/mod_foo.so # # Tachtler # LDAP configuration LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so ...
Konfiguration: /etc/httpd/conf.d/vhost.conf
Im Nachfolgenden wird ein einfacher vhost im Apache HTTP Server angelegt und eine Authentifizierung für das DocumentRoot dieses vhosts gegen LDAP realisiert.
Nachfolgende Konfigurationen sind in der Konfigurationsdatei
/etc/httpd/conf.d/vhost.conf
durchzuführen (nur relevanter Ausschnitt):
# # tachtler.net # <VirtualHost *:80> ServerAdmin webmaster@tachtler.net ServerName tachtler.net ServerAlias www.tachtler.net ServerPath / DocumentRoot "/var/www/html" <Directory "/var/www/html"> Options FollowSymLinks AllowOverride None # Tachtler - LDAP AuthType Basic AuthName "LDAP Zugriff" AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL "ldap://ldap.tachtler.net:389/dc=tachtler,dc=net?uid" Require ldap-user klaus # Next two lines for NON-Anonymous-BIND to LDAP-Server AuthLDAPBindDN "cn=Ersatzauthentifizierer,dc=tachtler,dc=net" AuthLDAPBindPassword "geheim" Order allow,deny Allow from all </Directory> DirectoryIndex index.html ErrorLog logs/error.log CustomLog logs/access.log combined </VirtualHost>
HINWEIS - Nachfolgende Zeilen
... AuthLDAPBindDN "cn=Ersatzauthentifizierer,dc=tachtler,dc=net" AuthLDAPBindPassword "geheim" ...
sind NUR erforderlich, wenn eine NON-Anonymous-LDAP-Server im Einsatz ist, d.h. keine unauthorisierten Anfragen gegen den LDAP-Server gestattet sind, sondern NUR Anfragen mit Authorisierung !!!
Neustart Apache HTTP Server
Ein erneuter oder erster Start des Apache HTTP Server mit folgenden Befehl für eine erstmaligen Start
# service httpd start
oder einen erneuten Start des Apache HTTP Server mit folgendem Befehl
# service httpd restart
macht die oben beschriebenen Konfigurationen für den Apache HTTP Server wirksam.
LDAPS
Im folgenden wird die Einrichtung eines Zugriffs auf einen LDAPS-Server via DNS-Adresse und Port dargestellt. Folgende Rahmenbedingungen sollen dabei gegeben sein:
- LDAP-Server-DNS:
ldap.tachtler.net
- Port:
636
Konfiguration: /etc/httpd/conf/httpd.conf
Nachfolgende Module müssen in der Konfigurationsdatei des Apache HTTP Server geladen werden, was in der Konfigurationsdatei
/etc/httpd/conf/httpd.conf
wie folgt konfiguriert werden muss (nur relevanter Ausschnitt):
... # # Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you # have to place corresponding `LoadModule' lines at this location so the # directives contained in it are actually available _before_ they are used. # Statically compiled modules (those listed by `httpd -l') do not need # to be loaded here. # # Example: # LoadModule foo_module modules/mod_foo.so # # Tachtler # LDAP and LDAPS configuration LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so # LDAPS extended configuration LDAPTrustedGlobalCert CA_BASE64 /etc/pki/tls/certs/CAcert.pem LDAPVerifyServerCert Off ...
LDAPTrustedGlobalCert CA_BASE64 /etc/pki/tls/certs/CAcert.pem
Definiert für den Apache HTTP Server
- in welchem Format das ROOT-Zertifikat der CA (CertificateAuthority) vorliegt –>
CA_BASE64
- in welchem Speicherort im Dateisystem das ROOT-Zertifikat der CA (CertificateAuthority) vorliegt –>
/etc/pki/tls/certs/CAcert.pem
LDAPVerifyServerCert Off
Definiert für den Apache HTTP Server
- das keine Überprüfung des Self-Signed-Certificat erfolgt, da dieses ja „selbst signiert“ ist und von keiner „offiziellen“ CA ausgestellt bzw. signiert wurde
- und verhindert so die Anlehnung des Zertifikats durch den Apache HTTP Server
Konfiguration: /etc/httpd/conf.d/vhost.conf
Im Nachfolgenden wird ein einfacher vhost im Apache HTTP Server angelegt und eine Authentifizierung für das DocumentRoot dieses vhosts gegen LDAPS realisiert.
Nachfolgende Konfigurationen sind in der Konfigurationsdatei
/etc/httpd/conf.d/vhost.conf
durchzuführen (nur relevanter Ausschnitt):
# # tachtler.net # <VirtualHost *:80> ServerAdmin webmaster@tachtler.net ServerName tachtler.net ServerAlias www.tachtler.net ServerPath / DocumentRoot "/var/www/html" <Directory "/var/www/html"> Options FollowSymLinks AllowOverride None # Tachtler - LDAPS AuthType Basic AuthName "LDAPS Zugriff" AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL "ldaps://ldap.tachtler.net:636/dc=tachtler,dc=net?uid" Require ldap-user klaus # Next two lines for NON-Anonymous-BIND to LDAP-Server AuthLDAPBindDN "cn=Ersatzauthentifizierer,dc=tachtler,dc=net" AuthLDAPBindPassword "geheim" Order allow,deny Allow from all </Directory> DirectoryIndex index.html ErrorLog logs/error.log CustomLog logs/access.log combined </VirtualHost>
HINWEIS - Nachfolgende Zeilen
... AuthLDAPBindDN "cn=Ersatzauthentifizierer,dc=tachtler,dc=net" AuthLDAPBindPassword "geheim" ...
sind NUR erforderlich, wenn eine NON-Anonymous-LDAPS-Server im Einsatz ist, d.h. keine unauthorisierten Anfragen gegen den LDAPS-Server gestattet sind, sondern NUR Anfragen mit Authorisierung !!!
Neustart Apache HTTP Server
Ein erneuter oder erster Start des Apache HTTP Server mit folgenden Befehl für eine erstmaligen Start
# service httpd start
oder einen erneuten Start des Apache HTTP Server mit folgendem Befehl
# service httpd restart
macht die oben beschriebenen Konfigurationen für den Apache HTTP Server wirksam.