HAProxy X-Forwarded-For funktioniert nicht mehr

Started by MiRei, Today at 01:26:51 PM

Previous topic - Next topic
Hallo,



es gelingt mir nicht mehr, mit Opensense 25.7.10 oder 11 beim HAProxy
die Client-IP an den Server zu senden.
Alle Konfigurations-Varianten im Backend, die ich im Forum oder Internet
finden konnte, habe ich ausprobiert. Immer mit dem selben Ergebnis,
es wird nur die Proxy-Adresse angezeigt. Somit können fail2ban
oder crowdsec nicht differenzieren.

Bei einem System mit Version 25.1.x funktioniert es einwandfrei.
Dort kann ich mit tcpdump die Clientadresse sehen.
(Ich habe das System noch parallel im Zugriff.)

Über eine gute Idee wäre sehr dankbar!

Hallo,

Quote from: MiRei on Today at 01:26:51 PMAlle Konfigurations-Varianten im Backend, die ich im Forum oder Internet
finden konnte, habe ich ausprobiert.
Keine Ahnung, welche Optionen du da entdeckt hast. In 25.10. habe ich im Backend Pool die Option "X-Forwarded-For header" angehakt und die macht, was sie soll.

Als Backend habe ich IIS und Apache, beide loggen die Client IP.
Auf einem dieser läuft auch Nextcloud, die die Info ebenfalls für Brute-Force SChutz auswertet.

Kann es sein, dass dein Backendserver den Header gar nicht auswertet, oder nicht den richtigen?

Vielen Dank für Deine Antwort.

Aber eigentlich müsste ich doch per tcpdump das
in den Pakete sehen können. Ich habe das nun an
mehreren Systemen beobachten können, so auch 25.7.3_7.
Dort hat ein Freund genau das gleiche Phänomen.

Im Backend steht derzeit unter options passthrough:

option forwardfor
http-request replace-value X-Forwarded-for ^ "%[hdr(x-forwarded-for)], %[src]"

Quote from: MiRei on Today at 04:37:45 PMAber eigentlich müsste ich doch per tcpdump das
in den Pakete sehen können.
Ich habe hier allen Backend-Zugriff verschlüsselt und kann es damit nicht nachprüfen. Aber ja, wenn du die anderen Header siehst, müsste X-Forwarded-For auch zu sehen sein.

Quote from: MiRei on Today at 04:37:45 PMIm Backend steht derzeit unter options passthrough:

option forwardfor
http-request replace-value X-Forwarded-for ^ "%[hdr(x-forwarded-for)], %[src]"

Bei mir sehe ich nur die erste Zeile.
Mir ist auch nicht klar, was die zweite machen soll. Den Wert im Header ersetzen, obwohl dieser eh korrekt ist?

Bei mir läuft übrigens die HAproxy Version 3.0.12-21a355d. Hast du eine andere?

Bei mir ist Version 3.0.12-21a355d installiert.

Dann sollte dieselbe Zeile in der Konfig auch dasselbe Ergebnis produzieren.

Wie gesagt, woher deine zweite Zeile bez. X-Forwarded-For kommt, weiß ich nicht, glaube aber auch nicht, dass sie den Header eliminieren könnte.

Hast du im Frontend auch X-Forwarded-For aktiviert? Bei mir ist es nicht.

Hier auf meiner Heim-OPNsense habe ich unverschlüsselten Traffic zum Backend und kann bestätigen, dass der X-Forwarded-For Header im pcap zu sehen ist. Allerdings läuft hier Caddy davor.
Aber wie gesagt, hinter HAproxy bekomme ich den Header auch am Backendserver.

Läuft bei mir ohne Probleme, auch mit den aktuellen Versionen. Allerdings gab es da schon vor einigen Versionen mal Änderungen.

Man kann im Backend aktuell folgende Mechanismen setzen:

Forwarded header (RFC7239)
Forwarded header parameters (z.B. host und proto)
X-Forwarded-For header

Ich nutze dann im echten Server (nginx) etwa so etwas:

# Because of reverse proxy
set_real_ip_from        192.168.173.1;
real_ip_header          X-Forwarded-For;
real_ip_recursive       on;
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+