centos:ldaps-auth-nginx

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:ldaps-auth-nginx [18.07.2015 18:24. ] – [Konfiguration] djangocentos: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:ldap_c7:start|LDAP-Server]]** authentifizieren. 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:ldap_c7:start|LDAP-Server]]** authentifizieren.
  
-Der Webserver **[[http://nginx.org/|NGiNX]]** stellt von Haus aus keine Möglichkeit zur LDAP-Authentifikation zur Verfügung. Mit Hilfe der Erweiterung **[[https://github.com/kvspb/nginx-auth-ldap|nginx-auth-ldap]]** von //**[[komarov@valerka.net|Valery Komarov]]**// kann diese aber nachgerüstet werden. Eine entsprechende aktuell Version von NGiNX mit LDAP-Authentifizierungsunterstützung ist im Repository **[[centos:mailserver.guru|mailserver.guru]]** enthalten:  +Der Webserver **[[http://nginx.org/|NGiNX]]** stellt von Haus aus keine Möglichkeit zur LDAP-Authentifikation zur Verfügung. Mit Hilfe der Erweiterung **[[https://github.com/kvspb/nginx-auth-ldap|nginx-auth-ldap]]** von //**[[komarov@valerka.net|Valery Komarov]]**// kann diese aber nachgerüstet werden. Eine entsprechende aktuell Version von NGiNX mit LDAP-Authentifizierungsunterstützung ist im Repository **[[centos:nausch.org|nausch.org]]** enthalten:  
-  * **http://repo.mailserver.guru/7/os/x86_64/repoview/nginx.html**+  * **http://repo.nausch.org/7/os/x86_64/repoview/nginx.html**
  
 <WRAP center round important 85%> <WRAP center round important 85%>
Zeile 14: Zeile 14:
  
 ===== Konfiguration ===== ===== Konfiguration =====
 +Die Konfiguration der LDAPs Authentifikation beim Webserver [[http://nginx.org|NGiNX]] ist aufgeteilt, in zwei Abschnitte. Der erste Abschnitt definiert den Zugang zum LDAP-Server, der zweite Teil ist dann im Abschnitt **server** der NGiNX-Konfiguration und verweist dann auf einen Eiintrag des "ersten Abschnitts".
  
-/*+Sehen wir uns das an folgendem Beispiel genauer an. 
 +   # vim /etc/nginx/conf.d/1st_ldap.conf
  
-/etc/nginx/ +<file apache /etc/nginx/conf.d/1st_ldap.conf># Django : 2015-07-18 
-├── conf.d +# Definition für die Anbindung unseres nginx Servers an den 
-│   ├── 1st_ldap.conf +# OpenLDAP-Server für die Authentifikation des Users django
-│   ├── default.conf +
-│   ├── default.conf.geht +
-│   └── ldap.conf.test +
-├── fastcgi_params +
-├── koi-utf +
-├── koi-win +
-├── mime.types +
-├── nginx.conf +
-├── scgi_params +
-├── uwsgi_params +
-└── win-utf+
  
 +ldap_server ldap_group_1 {
 +  url ldaps://openldap.dmz.nausch.org:636/ou=People,dc=nausch,dc=org?uid?sub?(objectClass=posixAccount);
 +  binddn "cn=Technischeruser,dc=nausch,dc=org";
 +  binddn_passwd "e1n531f!D4xIi57n393I1354u!";
 +  group_attribute uniquemember;
 +  group_attribute_is_dn on;
 +  #parse_require user "uid=django,ou=People,dc=nausch,dc=org";
 +  require user "uid=django,ou=People,dc=nausch,dc=org";
 +  require user "uid=icinga2_checkuser,ou=Daemon,dc=nausch,dc=org";
 +}
  
-[root@vml000200 conf.d]# nginx -t +Definition für die Anbindung unseres nginx Servers an den 
-nginx[emerg] http_auth_ldap: Using "auth_ldap_servers" when no "ldap_server" has been previously defined (make sure that "auth_ldap_servers" goes after "ldap_server"s in your configuration file) in /etc/nginx/conf.d/default.conf:29 +# OpenLDAP-Server für die Authentifikation des Users michael 
-nginx: configuration file /etc/nginx/nginx.conf test failed +ldap_server ldap_group_2 { 
-[root@vml000200 conf.d]# systemctl restart nginx +  url ldaps://10.0.0.37:636/ou=People,dc=nausch,dc=org?uid?sub?(objectClass=posixAccount); 
-Job for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details. +  binddn "cn=Technischeruser,dc=nausch,dc=org"; 
-[root@vml000200 conf.d]# mv ../1st_ldap.conf . +  binddn_passwd "e1n531f!D4xIi57n393I1354u!"; 
-[root@vml000200 conf.d]#  +  group_attribute uniquemember; 
-[root@vml000200 conf.d]# nginx -t +  group_attribute_is_dn on; 
-nginx: [emerg] http_auth_ldap: parse_require in /etc/nginx/conf.d/1st_ldap.conf:+  require user "uid=michael,ou=People,dc=nausch,dc=org"; 
-nginx: the configuration file /etc/nginx/nginx.conf syntax is ok +}</file>
-nginx: configuration file /etc/nginx/nginx.conf test is successful+
  
 +<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, z.B. folgender Fehler auftreten:
 +   # nginx -t
  
 +  nginx: [emerg] http_auth_ldap: Using "auth_ldap_servers" when no "ldap_server" has been previously defined (make sure that "auth_ldap_servers" goes after "ldap_server"s in your configuration file) in /etc/nginx/conf.d/default.conf:29
 +  nginx: configuration file /etc/nginx/nginx.conf test failed
  
 +</WRAP>
 +
 +Nun können wir in der Serverkonfiguration auf die gerade eben angelegten **ldap_server** rückverweisen. 
 +   # vim /etc/nginx/conf.d/betterawstats.conf
 +
 +<file apache /etc/nginx/conf.d/betterawstats.conf>server {
 +                                # Django : 2015-05-28
 +                                # auf welchem Port soll der Server lauschen (HTTP: 80)?
 +        listen                  80;
 +
 +                                # auf welchen Servernamen (vHOST) soll der Server reagieren?
 +        server_name             betterawstats.nausch.org;
 +
 +                                # Welches Access- und Error-Logfile soll beschrieben werden?
 +        access_log              /var/log/nginx/betterawstats_access.log;
 +        error_log               /var/log/nginx/betterawstats_errors.log;
 +
 +                                # HTTP auf HTTPS mit Statuscode 301 "moved permanently" umleiten
 +        return                  301     https://$server_name$request_uri;
 +}
 +
 +
 +server {
 +                                # Django : 2015-05-28
 +                                # auf welchem Port soll der Server lauschen (HTTPS: 443)?
 +                                # neben TLS soll auch SPDY (http://de.wikipedia.org/wiki/SPDY) 
 +                                # angeboten werden.
 +        listen                  443 ssl spdy;
 +
 +                                # auf welchen Servernamen (vHOST) soll der Server reagieren?
 +        server_name             betterawstats.nausch.org;
 +
 +                                # Welches Access- und Error-Logfile soll beschrieben werden?
 +        access_log              /var/log/nginx/betterawstats_access.log;
 +        error_log               /var/log/nginx/betterawstats_errors.log;
 +
 +                                # Standard-Parameter für TLS-Verschlüsselung inkludieren
 +        include                 /etc/nginx/ssl_params;
 +                                # Zertifikatsdatei inkl. ggf. notwendiger Zwischen- und Root-Zertifikaten
 +                                # 1) Server-Zertifikat, 2) Intermediate-Root-Zertifikat und 
 +                                # 3) Root-Zertifikat der CA
 +        ssl_certificate         /etc/pki/tls/certs/betterawstats.nausch.org.certificatechain_150113.pem;
 +                                # Schlüsseldatei, mit der der CSR erstellt wurde
 +        ssl_certificate_key     /etc/pki/tls/private/betterawstats.nausch.org.serverkey.pem;
 +
 +                                # Zugriffe erst nach erfolreicher Authentifizierung gestatten
 +                                # Authentifikation des Benutzers django gegen den zentralen
 +                                # OpenLDAP-Verzeichnisdienst
 +        auth_ldap               "gesperrter Bereich bei nausch.org";
 +        auth_ldap_servers       ldap_group_2;
 +
 +                                # Welcher Inhalt soll angezeigt bzw. auf welchen Server sollen 
 +                                # die HTTP-Requests
 +                                # weitergeleitet werden?
 +        root                    /usr/share/betterawstats/;
 +        index                   index.php index.html;
 +
 +        location ~ \.php {
 +                                fastcgi_split_path_info ^(.+\.php)(/.+)$;
 +                                fastcgi_index           index.php;
 +                                fastcgi_param           SCRIPT_FILENAME         $document_root$fastcgi_script_name;
 +                                include                 fastcgi_params;
 +        }
 +
 +        location ~* ^/(.+\.(gif|jp?eg|png|css|js|cgi|pl|ico|swf|flv|s?html|php|xap|py|xml|txt))$ {
 +                                expires                 1y;
 +                                root                    /usr/share/betterawstats;
 +                                allow                   all;
 +        }
 +
 +        location ~ icons {
 +                                allow                   all;
 +        }
 +}
 +</file>
 +
 +<WRAP center round tip 99%>
 +**Achtung**:
 +
 +Prüft man mit Hilfe des Befehls **nginx -t** die Konfiguration, wird der folgende Fehler angezeigt.
 +   # nginx -t
 +
 +  nginx: [emerg] http_auth_ldap: parse_require in /etc/nginx/conf.d/1st_ldap.conf:12
 +  nginx: [emerg] http_auth_ldap: parse_require in /etc/nginx/conf.d/1st_ldap.conf:13
 +  nginx: [emerg] http_auth_ldap: parse_require in /etc/nginx/conf.d/1st_ldap.conf:24
 +  nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 +  nginx: configuration file /etc/nginx/nginx.conf test is successful
 +
 +Dies ist ein __[[https://github.com/kvspb/nginx-auth-ldap/issues/88|bekannter Fehler]]__((Stand: Juli 2015)). NGiNX kann aber wie gewohnt ge(re)startet werden!
 +</WRAP>
 +
 +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!
 +</WRAP>
  
  
 +===== Test =====
 +Der Webserver wird nun den Zugang erst gestatten, sobald die Daten richtig eingegeben wurden. 
 +{{ :centos:nginx_ldaps_auth.png?direct&600 |Bild: Eingabe-Fenster bei einer zugriffsgeschützten WEB-Anwendung}}
  
- */+Wird über den Menüpunkt **[ __C__ancel ]** die Eingabe abgebrochen, verweigert der Webserver den Zutritt zur betreffenden Anwendung!
  
  
-FIXME 
  
  • centos/ldaps-auth-nginx.1437243890.txt.gz
  • Zuletzt geändert: 18.07.2015 18:24.
  • von django