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
Letzte ÜberarbeitungBeide Seiten der Revision
centos:ldaps-auth-nginx [18.07.2015 18:24. ] – [Konfiguration] djangocentos:ldaps-auth-nginx [21.07.2015 16:34. ] – [Test] django
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!
 +
 +~~AUTOTWEET:~~
  
- */ 
  
  
-FIXME 
  
  • centos/ldaps-auth-nginx.txt
  • Zuletzt geändert: 22.07.2019 14:52.
  • von 127.0.0.1