Client IP-Adressen hinter Reverse-Proxy durchreichen (X-Forwarded-For) mit Apache-Webserver
Vorwort
Diese Dokumentation beschreibt den Installationsvorgang von Apache-Modul mod_remoteip und dessen Einrichtung.
Bitte vergewissern Sie sich, dass Ihr System über die nötigen Voraussetzungen verfügt, wie in der Infobox beschrieben. Weiterhin sind Grundkenntnisse im Umgang mit Linux erforderlich, da die Vorgehensweise, wie sie hier beschrieben ist, in manchen Teilen abweichen kann. Kein System ist wie das Andere. Die Dokumentation wurde sorgfältig von mir geprüft. Dennoch kann ich keinerlei Haftung für Schäden an Ihrem System oder eine Gewährleistung übernehmen. Bitte verwenden Sie diese Dokumentation auf eigene Gefahr.
Verwendete Software:
Voraussetzungen:
- Apache-Webserver (fertig eingerichtet)
Weitere, empfohlene Dokumentationen:
Was soll erreicht werden?
Wird ein Webserver hinter einem Reverse-Proxy oder Load-Balancer betrieben, werden nicht die IP-Adressen der tatsächlichen Clients protokolliert, sondern die des Reverse-Proxys bzw. Load-Balancers. Abhilfe schafft hier das HTTP-Header-Feld X-Forwarded-For. Es wird dazu verwendet die IP-Adresse des tatsächlichen Clients zu identifizieren und zwar unabhängig davon, ob die Verbindung über einen Reverse-Proxy oder Load-Balancer hergestellt wird.
Diese Dokumentation beschreibt die Einrichtung des Apache-WebServers, entsprechend des oben beschriebenen Soll-Zustands.
Server vorbereiten
Root-Rechte einräumen
Während der gesamten Dokumentation werden Root-Rechte benötigt. Um auf das Voranstellen von sudo
zu verzichten, verschaffen Sie sich für die gesamte Sitzung erhöhte Rechte mit:
# sudo -i
Apache konfigurieren
Modul mod_remoteip aktivieren und einrichten
Aktivieren Sie das Modul mod_remoteip
:
# a2enmod remoteip
Erstellen Sie eine neue Datei remoteip.conf
mit folgendem Inhalt.
Ersetzen Sie 192.0.2.42
durch die IP-Adresse Ihres Reverse-Proxys bzw. Load-Balancers.
# nano /etc/apache2/conf-available/remoteip.conf
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 192.0.2.42
RemoteIPTrustedProxy
berücksichtigt nur IP-Adressen aus dem öffentlichen Adressraum.
Sollen zusätzlich auch lokale IP-Adressen berücksichtigt werden, verwenden Sie stattdessen den Paramaeter RemoteIPInternalProxy
.
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 192.0.2.42
Aktivieren Sie die Konfiguration:
# a2enconf remoteip
Log-Format auf X-Forward-For anpassen
Editieren Sie die Datei apache.conf
und ändern Sie folgende Parameter:
# nano /etc/apache2/apache2.conf
# apache2.conf
[...]
#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
[...]
Apache neustarten
Starten Sie den Dienst apache2
neu, damit die Konfiguration angewendet wird:
# service apache2 restart