IP basierte Authentifizierung beim Apache hinten dem Proxy.
Hallo, mein Apache-1.3.29 authentifiziert auf Basis von IP Adressen. Der Bereich des LAN kriegt "redirect" auf das Verzeichnis /auth/ , wo NTLM-basierte Authentifikation stattfindet, alle anderen kriegen ein Anmeldefenster von der Applikation. Ich habe den Apache geclustert, vorne einen Pound als Load Balancer platziert und somit die Unterscheidung nach "source IP" bei dem Apache verloren (die source IP ist jetzt immer der Adresse der load Balancer Maschine gleich). Das einzige um die Verbindungen nach den Ursprungsnetzwerken zu sortieren und somit die unterschiedliche Authentifikation Methoden aufzubewahren, was mir noch zur Verfügung steht, ist der zusätzliche http-Header "X-Forwarded-For", den Load Balancer an jede Verbindung anklebt. Der zweite Bug: ich kann meine Apache-Logs nicht mehr auswerten, was irritierend, aber nicht kritisch im Vergleich zu dem Verlust der Steuerung der Authentifikation Anhang der Netzwerkadresse ist. Wie kann ich jetzt Apache umstellen, damit er Redirection Anhang des http-Headers "X-Forwarded-For" statt der "source IP" ausführt ? Gruss, im Voraus für die Hilfe und/oder einen Gedankenschubs dankbar, mpr. -- Marcin Przyczyna it/org http://www.citiworks.de/ +49 89 9925 75356 mpr@citiworks.de
Hi, ich schreib mein Halbwissen nur, weil sonst keiner geantwortet hat :) * Marcin Przyczyna wrote on Fri, Dec 23, 2005 at 10:25 +0100:
Der Bereich des LAN kriegt "redirect" auf das Verzeichnis /auth/ , wo NTLM-basierte Authentifikation stattfindet, alle anderen kriegen ein Anmeldefenster von der Applikation.
Ich habe den Apache geclustert, vorne einen Pound als Load Balancer platziert
Pound ist sowas wie squid (HTTP proxy) oder ne Hardware?
Das einzige um die Verbindungen nach den Ursprungsnetzwerken zu sortieren und somit die unterschiedliche Authentifikation Methoden aufzubewahren, was mir noch zur Verfügung steht, ist der zusätzliche http-Header "X-Forwarded-For", den Load Balancer an jede Verbindung anklebt.
Den kann ein böser Client aber auch selbst in den HTTP Request einbauen, oder?
Der zweite Bug: ich kann meine Apache-Logs nicht mehr auswerten, was irritierend, aber nicht kritisch im Vergleich zu dem Verlust der Steuerung der Authentifikation Anhang der Netzwerkadresse ist.
Andere (vielleicht dumme) Idee: könntest Du Apache zu konfigurieren, dass er nur vom Cache Verbindungen annimmt und am Cache authentifizieren? Obwohl das natürlich davon abhängt, was der Cache/Balancer kann. Wäre IMHO aber etwas sauberer (der, der die Clients "sieht", authentifiziert. Nach zweite-Hand-Infos zu authentifizieren klingt suboptimal).
Wie kann ich jetzt Apache umstellen, damit er Redirection Anhang des http-Headers "X-Forwarded-For" statt der "source IP" ausführt ?
Weiss nicht :) Auf den Bereich darf nur von intern zugegriffen werden? Dann erstmal virutal host, macht's einfacher. Wenn nicht geht, aber keine externen Zugriffe, würde ich da ein CGI hinpacken, welches den Header anguckt und bei X-Forwarded-For oder was auch immer ein Location oder Redirect macht (gibt ja "send as it is", so kann das CGI beliebige Header erzeugen). Natürlich könnte man dann die Authentifizierung da mit reinpacken, wird evtl. klarer, keine Ahnung. Wenn externe "etwas anderes sehen" als interne, wird's wohl schwieriger. Dann würde ich mal gucken, ob ich nicht zwei IPs machen kann (intern sollte ja ne andere kein Problem sein), und dann halt vhost über IPs, da gibt's diverse Tricks bis hin zum unsymetrischen DNS, wenn denn alle Stricke reissen (interne Hosts lösen Namen zu anderen IPs auf als externe). Dann hat man zwei vhosts, wo "zufällig" viele URLs gleich sind. Der eine vhost macht redirect (immer), der andere nicht (nie). Des weiteren könnte man auch hier per CGI was machen, im Extremfall ein "cat" auf das requestete File oder ein redirect header - natürlich wieder den Nachteil, dass man sich selbst Header bauen muss (auch für 304 not modified etc!). oki, Steffen -- Dieses Schreiben wurde maschinell erstellt, es trägt daher weder Unterschrift noch Siegel.
participants (2)
-
Marcin Przyczyna
-
Steffen Dettmer