Apache Reverse Proxy mit LDAP absichern

Apache als Reverse Proxy hatten wir jetzt ja schon öfter, jedoch immer nur als 1:1-Druchlass. Ab und an möchte man jedoch Systeme nur einem beschränken Nutzerkreis verfügbar machen. Der Vorteil einer Filterung auf dem Proxy selbst: Dieser ist meist sicherer als die nachgeschalteten Systeme und hat durch seine Position innerhalb der DMZ bei einem Einbruch weniger Zugriffe auf die internen Systeme als die endgültig erreichten Systeme. Als Nutzerdatenbank ist LDAP, z.B. bei der Nutzung von Microsofts „Active Directory“ sehr verbreitet.

Um den Ordner /test abzusichern lässt sich folgender Codeblock nutzen, welcher das vorherige ProxyPass/ProxyPassReverse ersetzt. Ohne Proxy ist der Block natürlich auch zur Absicherungen „normaler“ Webseiten nutzbar.

 #Test LDAP
<Location /testldap>
    Require all denied
    ProxyPass http://intern.adlerweb.info/test
    ProxyPassReverse http://intern.adlerweb.info/test
    AuthLDAPBindDN "CN=apacheuser,OU=Systemaccounts,OU=Intern,DC=Adlerweb;DC=info"
    AuthLDAPBindPassword "1234"
    AuthLDAPURL "ldap://dc1.intern.adlerweb.info/ou=Intern,dc=Adlerweb,dc=info?sAMAccountName?sub?(objectClass=*)"
    AuthType Basic
    AuthName "Adlerweb ADS Auth"
    AuthBasicProvider ldap
    # Important, otherwise "(9)Bad file descriptor: Could not open password file: (null)"
    AuthUserFile /dev/null
    require valid-user
</Location>

Hiermit dürfen alle Nutzer in der Organisationseinheit „Intern“ der Domäne „Adlerweb.info“ auf die Ressourcen zutreffen (valid-user).

Es sind auch spezifischere Zuweisungen möglich – über den Nutzernamen:

Require ldap-user "adlerweb"

…über die DN

Require ldap-dn CN=adlerweb,OU=Intern,dc=Adlerweb,dc=info

Für Gruppen gibt es mehrere Möglichkeiten:

Require ldap-group CN=Testgruppe,OU=Intern,dc=Adlerweb,dc=info

ist die klassische Methode, macht jedoch mit Active Directory Probleme: Nutzer in der genannten Gruppe haben fehlerfrei Zugriff, sind jedoch rekursive Gruppen vorhanden schlägt die Authentifizierung fehl. Als Ausweg kann man hier einen LDAP-Filter verwenden – nicht ganz so schön, dafür funktionierend:

Require ldap-filter memberof:1.2.840.113556.1.4.1941:=CN=Testgruppe,OU=Intern,dc=Adlerweb,dc=info

Quellen:
http://serverfault.com/a/424706

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert