wolli: X-Forwarded-For

guten morgen,

ich versuche verzweifelt in der httpd.conf den X-Forwarded-For sofern vorhanden anstatt der übergebenen client IP %h zu loggen.

Aber irgendwie klappt das nicht

Hier meine Ansätze

<IfModule log_config_module>
SetEnv xproxy "%h"
SetEnvIf X-Forwarded-For "^.+" xproxy=%{X-Forwarded-For}i

LogFormat "%{xproxy}i %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
    CustomLog logs/access_log common
</IfModule>

Kann mir bitte jemand einen Tipp geben was ich falsch mache
Danke
wolli

  1. Hallo Wolli,

    mod_log_config kann mit %{FOOBAR}e auch Variablen des environment aufzeichnen. SetEnvIf kann diese bereitstellen. Unterstellt, dass jede Anfrage einen X-Forwarded-For-Header hat, sollte aber %{X-Forwarded-For}i genügen.

    LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" neuformat  
    CustomLog logs/access_log neuformat
    

    Gruß aus Berlin!
    eddi

    --
    Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!
    1. Hallo Wolli,

      mod_log_config kann mit %{FOOBAR}e auch Variablen des environment aufzeichnen. SetEnvIf kann diese bereitstellen. Unterstellt, dass jede Anfrage einen X-Forwarded-For-Header hat, sollte aber %{X-Forwarded-For}i genügen.

      LogFormat "%{X-Forwarded-For}i %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" neuformat

      CustomLog logs/access_log neuformat

      
      >   
      >   
      > Gruß aus Berlin!  
      > eddi  
        
      Das ist ja gerade mein Problem  
      der X-Forwarded-For soll überprüft werden ob er vorhanden ist  
      wenn ja soll die IP anstatt %h geloggt werden
      
      1. Hi,

        bitte zitiere vernünftig, nicht einfach alles.

        Das ist ja gerade mein Problem
        der X-Forwarded-For soll überprüft werden ob er vorhanden ist
        wenn ja soll die IP anstatt %h geloggt werden

        Na dann schreib zunächst die "normale" IP in eine Umgebungsvariable, und wenn X-Forwarded-For vorhanden ist, überschreibe sie damit. Und dann lasse diese Umgebungsvariable ins Log schreiben.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. Hello,

          bitte zitiere vernünftig, nicht einfach alles.

          Das ist ja gerade mein Problem
          der X-Forwarded-For soll überprüft werden ob er vorhanden ist
          wenn ja soll die IP anstatt %h geloggt werden

          Na dann schreib zunächst die "normale" IP in eine Umgebungsvariable, und wenn X-Forwarded-For vorhanden ist, überschreibe sie damit. Und dann lasse diese Umgebungsvariable ins Log schreiben.

          Damit würde ihm aber eine wichtige Information verloren gehen.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
        2. Na dann schreib zunächst die "normale" IP in eine Umgebungsvariable, und wenn X-Forwarded-For vorhanden ist, überschreibe sie damit.

          Hallo Chris,

          genau das versuche ich umzusetzen was nicht funktioniert
          und auch meine ursprünliche Frage war

          <IfModule log_config_module>
          SetEnv xproxy "%h"
          SetEnvIf X-Forwarded-For "^.+" xproxy=%{X-Forwarded-For}i

          LogFormat "%{xproxy}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
              CustomLog logs/access_log common
          </IfModule>

          Wo liegt mein Fehler

          wolli

          1. Re:

            LogFormat "%{xproxy}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
                CustomLog logs/access_log common
            Wo liegt mein Fehler

            Ich dachte, das sei bereits klar geworden, dass zwischen %{foobar}i und %{foobar}e ein Unterschied besteht. Weiterhin benennst Du ein LogFormat "combined", zeichnest dann aber LogFormat "common" auf. Wie soll man jemanden Helfen, der bei seinem Problemvortrag so offensichtlich schlampt?

            Zeichen sowohl den Header mit %{X-Forwarded-For}i auf, als auch remote host, der direkt den Server kontaktiert, mittels %h, und lass den Umweg über SetEnvIf sein! Aufschlüsseln kannst Du dies nur durch ein Script/Programm, was das Log ausliest.

            Gruß aus Berlin!
            eddi

            --
            Könnte bitte jemand mal langsam dafür sorgen, dass da draußen nicht dauernd die Filmrolle "Planet der Affen" abgedudelt wird? Danke!
      2. Hello,

        Das ist ja gerade mein Problem
        der X-Forwarded-For soll überprüft werden ob er vorhanden ist
        wenn ja soll die IP anstatt %h geloggt werden

        MWn ist das Logformat statisch und wird beim Hochfahren des Servers eingelesen.
        Loggen könntest Du also bestenfalls die Client-IP[1] UND die forwarded-for-IP.
        Die Auswertung machst Du dann nachher beim Lesen des Logs.

        [1] ist entweder die des Proxies oder die des vermeintlichen Clients,
            je nachdem, ob die X-IP auch vorhanden ist.

        Verlassen kann man sich auf die Weiterleitung der X-IP sowie nicht. Sie ist für das Routing unerheblich. Sie schützt nur den Dienst (Proxy) etwas vor nicht nachprüfbarer Benutzung.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de