Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| centos:ldaps-auth-nginx [17.07.2015 21:44. ] – django | centos:ldaps-auth-nginx [18.11.2024 19:09. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| In der Regel haben wir zur Verwaltung der Nutzerdaten ein Backendsystem zur Verwaltung im Einsatz. Im folgendem Konfigurationsbeispiel werden wir uns nun gegen einen vorhandenen **[[centos: | In der Regel haben wir zur Verwaltung der Nutzerdaten ein Backendsystem zur Verwaltung im Einsatz. Im folgendem Konfigurationsbeispiel werden wir uns nun gegen einen vorhandenen **[[centos: | ||
| - | Der Webserver **[[http:// | + | Der Webserver **[[http:// | 
| - |   * **http:// | + |   * **http:// | 
| <WRAP center round important 85%> | <WRAP center round important 85%> | ||
| **WICHTIG**: | **WICHTIG**: | ||
| - | Im Gegensatz zur **[[centos: | + | Im Gegensatz zur **[[centos: | 
| + | |||
| + | Dies ist beim Einsatz von **NGiNX** im sicherheitskritischen Umfeld zu beachten!  | ||
| </ | </ | ||
| - | FIXME | + | ===== Konfiguration ===== | 
| + | Die Konfiguration der LDAPs Authentifikation beim Webserver [[http:// | ||
| + | |||
| + | Sehen wir uns das an folgendem Beispiel genauer an. | ||
| + |    # vim / | ||
| + | |||
| + | <file apache / | ||
| + | # Definition für die Anbindung unseres nginx Servers an den | ||
| + | # OpenLDAP-Server für die Authentifikation des Users django | ||
| + | |||
| + | ldap_server ldap_group_1 { | ||
| + |   url ldaps:// | ||
| + |   binddn " | ||
| + |   binddn_passwd " | ||
| + |   group_attribute uniquemember; | ||
| + | group_attribute_is_dn on; | ||
| + |   # | ||
| + |   require user " | ||
| + |   require user " | ||
| + | } | ||
| + | |||
| + | # Definition für die Anbindung unseres nginx Servers an den | ||
| + | # OpenLDAP-Server für die Authentifikation des Users michael | ||
| + | ldap_server ldap_group_2 { | ||
| + |   url ldaps:// | ||
| + |   binddn " | ||
| + |   binddn_passwd " | ||
| + |   group_attribute uniquemember; | ||
| + | group_attribute_is_dn on; | ||
| + |   require user " | ||
| + | }</ | ||
| + | |||
| + | <WRAP center round important 99%> | ||
| + | **Wichtig**: | ||
| + | |||
| + | Der Name der Konfigurationsdatei **1st_ldap.conf** wurde mit Absicht so gewählt, da **nginx** beim Starten die Dateien in alphabetischer Reihenfolge einliest. Die Definition des **ldap_server** **__muss__** vor dem verweisen der Serverkonfiguration erfolgen, andernfalls würde bei einem Test der Konfiguration, | ||
| + | # nginx -t | ||
| + | |||
| + |   nginx: [emerg] http_auth_ldap: | ||
| + |   nginx: configuration file / | ||
| + | |||
| + | </ | ||
| + | |||
| + | Nun können wir in der Serverkonfiguration auf die gerade eben angelegten **ldap_server** rückverweisen. | ||
| + |    # vim / | ||
| + | |||
| + | <file apache / | ||
| + | # Django : 2015-05-28 | ||
| + | # auf welchem Port soll der Server lauschen (HTTP: 80)? | ||
| + |         listen  | ||
| + | |||
| + |                                 # auf welchen Servernamen (vHOST) soll der Server reagieren? | ||
| + |         server_name  | ||
| + | |||
| + | # Welches Access- und Error-Logfile soll beschrieben werden? | ||
| + |         access_log  | ||
| + |         error_log  | ||
| + | |||
| + |                                 # HTTP auf HTTPS mit Statuscode 301 "moved permanently" | ||
| + |         return  | ||
| + | } | ||
| + | |||
| + | |||
| + | server { | ||
| + | # Django : 2015-05-28 | ||
| + | # auf welchem Port soll der Server lauschen (HTTPS: 443)? | ||
| + |                                 # neben TLS soll auch SPDY (http:// | ||
| + | # angeboten werden. | ||
| + |         listen  | ||
| + | |||
| + |                                 # auf welchen Servernamen (vHOST) soll der Server reagieren? | ||
| + |         server_name  | ||
| + | |||
| + | # Welches Access- und Error-Logfile soll beschrieben werden? | ||
| + |         access_log  | ||
| + |         error_log  | ||
| + | |||
| + | # Standard-Parameter für TLS-Verschlüsselung inkludieren | ||
| + |         include  | ||
| + | # Zertifikatsdatei inkl. ggf. notwendiger Zwischen- und Root-Zertifikaten | ||
| + |                                 # 1) Server-Zertifikat, | ||
| + | # 3) Root-Zertifikat der CA | ||
| + |         ssl_certificate  | ||
| + |                                 # Schlüsseldatei, | ||
| + |         ssl_certificate_key  | ||
| + | |||
| + | # Zugriffe erst nach erfolreicher Authentifizierung gestatten | ||
| + | # Authentifikation des Benutzers django gegen den zentralen | ||
| + | # OpenLDAP-Verzeichnisdienst | ||
| + |         auth_ldap  | ||
| + |         auth_ldap_servers  | ||
| + | |||
| + | # Welcher Inhalt soll angezeigt bzw. auf welchen Server sollen | ||
| + | # die HTTP-Requests | ||
| + | # weitergeleitet werden? | ||
| + |         root                    / | ||
| + |         index                    | ||
| + | |||
| + | location ~ \.php { | ||
| + |                                 fastcgi_split_path_info ^(.+\.php)(/ | ||
| + |                                 fastcgi_index  | ||
| + |                                 fastcgi_param  | ||
| + |                                 include  | ||
| + | } | ||
| + | |||
| + |         location ~* ^/ | ||
| + |                                 expires  | ||
| + |                                 root                    / | ||
| + |                                 allow                    | ||
| + | } | ||
| + | |||
| + | location ~ icons { | ||
| + |                                 allow                    | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <WRAP center round tip 99%> | ||
| + | **Achtung**: | ||
| + | |||
| + | Prüft man mit Hilfe des Befehls **nginx -t** die Konfiguration, | ||
| + | # nginx -t | ||
| + | |||
| + |   nginx: [emerg] http_auth_ldap: | ||
| + |   nginx: [emerg] http_auth_ldap: | ||
| + |   nginx: [emerg] http_auth_ldap: | ||
| + |   nginx: the configuration file / | ||
| + |   nginx: configuration file / | ||
| + | |||
| + | Dies ist ein __[[https:// | ||
| + | </ | ||
| + | |||
| + | Damit unsere Änderungen aktiv werden bedarf es noch eines reloads unseres HTTP-Deamon. | ||
| + | # systemctl reload nginx.service | ||
| + | |||
| + | <WRAP center round important> | ||
| + | **WICHTIG: | ||
| + | Damit die Anmeldedaten nicht von Dritten mitgelesen und abgefischt werden können, nutzen wir natürlich einen SSL-geschützten vHOST! | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Test ===== | ||
| + | Der Webserver wird nun den Zugang erst gestatten, sobald die Daten richtig eingegeben wurden. | ||
| + | {{ : | ||
| + | |||
| + | Wird über den Menüpunkt **[ __C__ancel ]** die Eingabe abgebrochen, | ||
| + | |||