Inhaltsverzeichnis

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.