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