Ldap
Nginx kann mit LDAP (also auch Active Directory) kommunizieren.
Es gibt allerdings aktuell kein offizielles LDAP-Modul für Nginx.
Hier habe ich es mit einem Drittanbieter Modul dargestellt, wie man
den Webserver dazu bringt dennoch gegen ADS zu Authentifizieren.
Install
Zunächst benötigt man die Nginx und die Modul Quelle.
Diese Quellen werden dann kompiliert und schließlich installiert.
(Dies kann auch erfolgen wenn der Nginx bereits per „apt-get“ installiert wurde)
cd /usr/local/src apt-get install libldap2-dev wget http://nginx.org/download/nginx-<VERSION>.tar.gz git clone https://github.com/kvspb/nginx-auth-ldap.git
Die Nginx Quellen entpacken und kompilieren (Pfade sind auf die Ubuntu Installation ausgelegt)
tar xfz nginx-<VERSION>.tar.gz cd nginx-<VERSION> ./configure --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log --user=www-data --group=www-data --add-module=../nginx-auth-ldap --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --http-scgi-temp-path=/var/lib/nginx/scgi --with-debug --with-http_ssl_module make
Nach dem Kompilieren schließlich die Nginx Binary installieren
service nginx stop cp /usr/local/src/nginx-1.2.5/objs/nginx /usr/sbin service nginx start
Wenn Nginx soweit gut startet, dann kann fortgefahren werden.
LDAP-Anbindung
Das LDAP-Modul fragt den LDAP Server nach verschiedenen Informationen.
Dies können wir auch einfach in der Konsole testen.
apt-get install ldap-utils
Nun einfach einen Suchbefehl ausführen.
ldapsearch -x -H ldap://<FQDN_DES_DOMAINCONTROLLERS> -D <DOMAINUSER>@<DOMAINNAME.TLD> -W -b OU=<DES_USERS_OU,dc=<DOMAIN>,dc=<TLD> "(sAMAccountname=<DOMAINUSER>)"
Hier sollten nun div. Informationen, über den angegebenen Domänen-Benutzer angezeigt werden.
Nginx-config
Hier nun eine einfach Konfiguration des Nginx.
server { access_log <PFAD_ZUM_ACCESS-LOG>; error_log <PFAD_ZUM_ERROR-LOG>; #Hier evtl. noch hinter dem Pfad 'debug' setzten root /var/www; index index.html index.htm index.php; server_name .<SERVERNAME>; auth_ldap_url ldap://<FQDN_DES_DOMAINCONTROLLERS/OU=<OU_IN_DER_GESUCHT_WIRD>,DC=<DOMAIN>,DC=<TLD>?sAMAccountName?sub?(objectClass=*); auth_ldap_binddn CN=<DOMAIN-BENUTZER_ZUM_VERBINDEN>,OU=<OU_DES_DOMAIN-BENUTZERS>,DC=<DOMAIN>,DC=<TLD>; auth_ldap_binddn_passwd <PASSWORD_DES_DOMAIN-BENUTZERS>; auth_ldap_group_attribute uniquemember; # default 'member' auth_ldap_group_attribute_is_dn on; # default on location / { auth_ldap "Closed content"; #auth_ldap_require valid_user; #auth_ldap_require user 'cn=Super User,ou=user,dc=example,dc=com'; #auth_ldap_require group 'cn=admins,ou=group,dc=example,dc=com'; #auth_ldap_require group 'cn=user,ou=group,dc=example,dc=com'; auth_ldap_require user 'CN=<ANZEIGENAME_DES_GUELTIGEN_DOMÄNEN-BENUTZERS>,OU=<OU_DES_DOMÄNEN-BENUTZERS>,DC=<DOMAIN>;DC=<TLD>'; auth_ldap_satisfy any; index index.html index.htm; } }
Jetzt einfach den Webserver neu starten und sich anmelden.