Zum Inhalt springen
Marketing Factory Digital GmbH
Kontakt
Logo Marketing Factory Digital GmbH
  • Agentur
    • Aktuelles
    • Über uns
    • Geschichte
  • Leistungen
    • Beratung, Analyse und Strategie
    • Programmierung und Entwicklung
      • Schnittstellen
      • PIM-/ERP-Anbindungen
      • Individualentwicklungen
      • Seamless CMS Integration
    • Hosting und Betreuung
      • Cloud-Strategien
      • Hosting Partner der Marketing Factory
    • Leistungen mit Dritten
  • Technologie
    • TYPO3
      • Aktuelle TYPO3-Versionen
    • Shopware
    • IT-Sicherheit
      • DDoS-Protection
      • Continuous Upgrading
      • Privacy First
    • Tech Stack
      • Bekenntnis zu Open Source
      • Technologieauswahl
      • PHP-Ökosystem
      • Containerisierung & Clustering
      • Content Delivery Networks
      • Suchtechnologien
  • Referenzen
    • Projekte
    • Kunden
      • Kundenliste
    • Screenshot der Homepage der neuen Maxion Wheels WebsiteNEU: Relaunch der Corporate Website von Maxion Wheels
  • Community
    • Community-Initiativen
  • Blog
  • Kontakt
  • Deutsch
  • English

Sie sind here:

  1. Blog
  2. Kurz notiert: Mit Forensik dem Apachen auf die Finger geschaut
#TechnikerIstInformiert
  • Development
  • Tutorial
29.01.2021

Kurz notiert: Mit Forensik dem Apachen auf die Finger geschaut


Heute habe ich eine elegante Lösung für ein in der Praxis immer wieder­kehrendes Problem gefunden, die ich euch nicht vorenthalten möchte:

Am Anfang war das Problem

Bei der Einrichtung von Geolokalisierung in einer TYPO3-Instanz hatte ich das Problem, dass ich die Vermutung hatte, dass TYPO3 in den einlaufenden Requests nicht die korrekte Client-IP zu sehen bekommt. Dazu muss man wissen, dass die fragliche Instanz unter Kubernetes läuft. Hierbei werden ankommende Requests – stark vereinfacht gesagt – über einen Proxy (sog. Ingress) zur Applikation geleitet. Damit das klappt, muss die Applikation darauf vorbereitet sein, Standard-Proxy-Header wie X-Forwarded-For und X-Forwarded-Host auszuwerten.

Normalerweise ist das in TYPO3 kein größeres Problem. Unterhalb von $GLOBALS['TYPO3_CONF_VARS']['SYS'] existieren die Konfigurations­optionen reverseProxyHeaderMultiValue, reverseProxyIP, reverseProxySSL und trustedHostsPattern. Richtig gesetzt, wertet TYPO3 die Header korrekt aus und erkennt, dass nicht die IP des anfragenden Proxys, sondern die des Clients dahinter die interessante ist.

In diesem Fall wurde als Ingress-Provider ein Google-Load-Balancer unter GKE (Google Kubernetes Engine) benutzt. Dieser hat die Eigenheit, in X-Forwarded-For ausschließlich die IP des Clients zu übergeben. Leider hat sich die standard­konforme Variante aus RFC 7239 (Forwarded-Header) bislang nicht durchgesetzt. Daher kann man Google hier noch nicht mal einen Vorwurf machen. Wo kein Standard ist, kann ich auch keinen verletzen.

Wie habe ich jetzt gemerkt, dass das so ist? Grundsätzlich kann ich natürlich ins TYPO3-Backend gehen und dort unter „Admin Tools -> Environment -> PHP Info“ schauen, was PHP an HTTP-Headern sieht. Der Ansatz birgt aber zwei Probleme:

  1. Das funktioniert logischerweise nur im Backend. Frontend-Probleme kann ich so nicht nachvollziehen. Erst recht nicht, wenn Front- und Backend nicht den selben Weg im Webserver nehmen (z.B. verschiedene vHosts).
  2. Ins Backend muss ich dazu erst einmal kommen. Wenn ich beispielsweise ein Problem mit der Referrer-Konfiguration debuggen möchte, komme ich ohne [SYS][features][security.backend.enforceReferrer] = false gar nicht ins Backend, um die Header zu sehen. Unschön.

Das muss doch auch einfacher gehen!

Schön wäre doch, wenn man direkt sehen könnte, welche Header der Webserver (hier Apache) vom Client bzw. Proxy bekommen hat. Im Prinzip genauso, als würde ich einer Varnish-Instanz per varnishlog zuschauen. Und genau hier kommt das Apache-Modul mod_log_forensic ins Spiel!

In der einfachsten Konfiguration setzt man etwa Folgendes im vHost, nachdem man das Modul per a2enmod log_forensic aktiviert hat:

<IfModule log_forensic_module>
  ForensicLog /var/log/apache2/forensic_log
</IfModule>

Apache schreibt dann z.B. Folgendes in die Datei /var/log/apache2/forensic_log:

+28:5fb2fb02:1d|GET / HTTP/1.1|Host:www.pfmmedical.de.feature-french-layer.pfm-corporate.review.web-factory.de|X-Request-ID:f038a5c9ef22f01276e4aafd790b346d|X-Real-IP:83.135.142.198|X-Forwarded-For:83.135.142.198|X-Forwarded-Proto:https|X-Forwarded-Host:www.pfmmedical.de.feature-french-layer.pfm-corporate.review.web-factory.de|X-Forwarded-Port:443|X-Scheme:https|accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8|accept-encoding:gzip, deflate, br|user-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15|accept-language:de-de
-28:5fb2fb02:1d
+25:5fb2fb0a:1f|GET /robots.txt HTTP/1.1|Host:feature-french-layer.pfm-corporate.review.web-factory.de|User-Agent:kube-probe/1.17+|Accept-Encoding:gzip|Connection:close
-25:5fb2fb0a:1f

Man sieht sehr schön, dass hier zwei Requests eingelaufen sind, einer von einem Mac und eine von kube-probe (hier die readiness probe der Applikation). Das Praktische ist, dass auch die vollständigen Request-Header auftauchen, sodass man (vermeintliche) Proxy-Probleme nun wesentlich einfacher einkreisen kann.

Denn letzten Endes stellte sich heraus, dass das ursprüngliche Problem überhaupt nicht an der TYPO3-Konfiguration lag, sondern an einem schnöden Bug in der Geolokalisierungs-Logik. Naja, so kanns manchmal eben auch gehen.

Christian Spoo

"Mr. Fix-It" zwingt Soft- und Hardware gerne seinen Willen auf. Spricht fließend Meme und Picdump. Bei der Marketing Factory für die Bereiche Entwicklung und technische Konzeption zuständig.

Weitere Beiträge dieses Autors

Blog als RSS-Feed abonnieren

Verwandte Beiträge

  • Anwenderfreundliche Individualisierungen des TYPO3-Backends
  • Container-Elemente sinnvoll erweitern
  • UTF-8 und die Frage, wie Unicode in den Rechner kommt
  • Unicode, ISO-8859-1 und noch mehr Zeichensalat

Wir freuen uns, wenn Ihr diesen Beitrag teilt.


Kommentare

Keine Kommentare gefunden.

Kommentar verfassen.

Ich bin darauf hingewiesen worden, dass die Verarbeitung meiner Daten auf freiwilliger Basis erfolgt und dass ich mein Einverständnis ohne für mich nachteilige Folgen verweigern bzw. jederzeit gegenüber der Marketing Factory Digital GmbH per Post (Marienstraße 14, D-40212 Düsseldorf) oder E-Mail (info@marketing-factory.de) widerrufen kann.

Mir ist bekannt, dass die oben angegebenen Daten so lange gespeichert werden, wie ich die Kontaktaufnahme durch Marketing Factory wünsche. Nach meinem Widerruf werden meine Daten gelöscht. Eine weitergehende Speicherung kann im Einzelfall erfolgen, wenn dies gesetzlich vorgeschrieben ist.

  • Datenschutzerklärung
  • Impressum

© Marketing Factory Digital GmbH

Bildnachweise
  1. "#TechnikerIstInformiert": © Sebastian Klein / Marketing Factory Digital GmbH