Standortbasierte Zugriffskontrolle des Apache-Reverse-Proxy funktioniert nicht

Standortbasierte Zugriffskontrolle des Apache-Reverse-Proxy funktioniert nicht

Ich betreibe einen kleinen Webserver mit Ubuntu 12.05.5 LTS und Apache 2.2.22 und bin kürzlich auf dieses Problem gestoßen:

Für einen IIS-Server auf einer virtuellen Maschine habe ich die folgende Reverse-Proxy-Konfiguration:

<VirtualHost *:443>

    SSLEngine on

    DocumentRoot /var/www/

    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
        allow from 192.168.
        allow from 10.8.0
    </Directory>

    ...

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia On

    SSLProxyEngine on
    <Location /AutodeskDM>
        Order Deny,Allow
        Deny from all
        Allow from 192.168.
        ProxyPass https://10.8.0.131/AutodeskDM
        ProxyPassReverse https://10.8.0.131/AutodeskDM
    </Location>

    <Location /autodeskdm>
        Order Deny,Allow
        Deny from all
        Allow from 192.168.
        ProxyPass https://10.8.0.131/autodeskdm
        ProxyPassReverse https://10.8.0.131/autodeskdm
    </Location>

....

</VirtualHost>

Dies funktioniert einwandfrei und lässt wie erwartet nur Verbindungen aus dem Subnetz 192.168 zu.

Wenn ich jetzt die gleiche Konfiguration abzüglich SSLProxyEngine und http statt https in den ProxyPass-Direktiven verwende, erhalte ich die folgende Fehlermeldung:

[error] [client 127.0.0.1] client denied by server configuration: proxy:http://10.8.0.131/AutodeskDM/

Wenn ich hinzufüge

Allow from 127.0.

es funktioniert natürlich, aber der Zugriff ist von überall aus gestattet.

Das Spielen mit der Proxy-Direktive, wie anderswo vorgeschlagen (z. B.Apache Reverse-Proxy-Zugriffskontrolle) hat ebenfalls keine Wirkung.

<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 192.168.
</Proxy>

Ermöglicht weiterhin den Zugriff von überall.

Was übersehe ich hier? Ist das das erwartete Verhalten? Wenn ja, warum ist es mit und ohne SSL unterschiedlich?

Antwort1

Wie immer war ein anderes Programm im Weg. Ich habe OpenVPN auf Port 80 lauschen lassen und HTTP-Anfragen an Apache auf Port 8080 weiterleiten lassen. Daher sehen HTTP-Anfragen natürlich so aus, als kämen sie vom lokalen Host an Apache.

verwandte Informationen