apache

x-forwarded-for

Written by  on Mai 9, 2022

httpd.conf:

...
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
LogFormat "%h %l %u %t \"%r\" %>s %b" common
...
CustomLog "logs/access_log" combined env=!forwarded
CustomLog "logs/access_log" proxy env=forwarded


Quelle: Log Client IP AND X-Forwarded-For IP in Apache

MS IIS Server Header

Written by  on Februar 21, 2016

Im IIS den Server Header zu deaktivieren ist nicht leicht. Es finden sich jede Menge Anleitungen dazu – aber nichts funktioniert.
Im Apache verändert man diesen Header über eine Zeile in einem Textfile (ServerTokens Prod). Eigentlich erwarte ich da, dass Microsoft für den IIS ein Häkchen oder ein Dropdown im GUI anbietet, mit dem man das ändern kann. Gibt es das nicht, würde ich einen Wert in der Registry erwarten – den gibt es aber auch nicht wirklich.

Eine einfache Möglichkeit bietet EASILY REMOVE UNWANTED HTTP HEADERS IN IIS 7.0 TO 8.5. Einfach das .msi Paket herunterladen, installieren, fertig.
Das ist natürlich gleichzeitig der Nachteil – man muss dazu ein MSI Paket installieren.
Das Paket ist laut Virustotal sauber. Ob jemand das auf einem produktiven Server installieren will, muss aber jeder für sich selbst entscheiden.

Apache AllowEncodedSlashes

Written by  on Januar 27, 2016

Webserver zeigen manchmal ein ganz lustiges Verhalten, etwa wenn ein URL encoded Base64 String übergeben wird.
Benutzt wird das zum Beispiel beim Aufruf eines OCSP Responders wo die Information über das zu prüfende Zertifikat als urlencodetes Base64 übergeben wird.
Ein Beispiel in Base64

jA0EAxMcxamDRMfOGV5/gyZPnyX1BBPOQAE4BHbh7=

Und urlencoded

jA0EAxMcxamDRMfOGV5%2FgyZPnyX1BBPOQAE4BHbh7%3D

Wird jetzt der String „jA0EAwMCxamDRMfOGV5%2FgyZPnyX1BBPOQAE4BHbh7%3D“ z.B. als http://example.com/test/jA0EAwMCxamDRMfOGV5%2FgyZPnyX1BBPOQAE4BHbh7%3D aufgerufen, macht ein Apache draus wieder den Schrägstrich und meldet einen „404 File not found“ zurück, weil das als Pfad und Datei interpretiert wird. Eigentlich sollte das aber wie alle URLs unter /test/ an ein Backend übergeben werden.
Lösung: Per Default ist die Option AllowEncodedSlashes auf Off, wird die Option gesetzt, wird der String sauber durchgereicht.

Die Beispiele sind übrigens Kauderwelsch und haben keine tatsächliche Bedeutung.