Artikel mit ‘http’ getagged

Apache - Server Signatur verändern

Sonntag, 07. September 2008

Nach der Installation “out of the box” ist der Apache Webserver recht “gesprächig”.

Auf den Fehlerseiten, wie etwa 404 - Nicht gefunden, oder im HTTP Header finden sich Angaben wie die folgende:

Apache/2.2.8 (Ubuntu) mod_auth_kerb/5.3 PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch Server at foobar.de Port 80

Sowohl Module, Scriptinterpreter und Betriebssystem werden mit allen Versionsangaben und teilweise noch mit Hinweisen auf angewandte Patches ausgegeben. Mit dieser Standardeinstellung erleichtern wir potentiellen Angreifern und Einbrechern die Arbeit erheblich, da diese genau wissen, nach welchen exploits sie suchen müssen.

Mit dem folgenden Kommando:

 gksudo gedit /etc/apache2/apache2.conf

starten Sie einen Editor mit der Apache Konfigurationsdatei. Ändern Sie im folgenden Abschnitt:

#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of:  Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Full

den Wert

ServerTokens Full

auf

ServerTokens Prod

Speichern Sie die Datei und beenden Sie den Editor.
Starten Sie mit:

sudo /etc/init.d/apache2 restart

den Apache Webserver neu.
Danach sollte der Webserver nur noch die folgende Ausgabe liefern: Apache Server at foobar.de Port 80

Weitere mögliche Werte für ServerTokens

  • # ServerTokens Major
    Ausgabe: Apache/2
  • # ServerTokens Minor
    Ausgabe: Apache/2.2
  • # ServerTokens Minimal
    Ausgabe: Apache/2.2.8
  • # ServerTokens Os
    Ausgabe: Apache/2.2.8 (Ubuntu)

Ruft man nicht existierende URL’s ab, wird in der 404 Fehlermeldung nur noch die minimalste Ausgabe erzeugt. Solange man HTML Seiten abruft sieht auch die Ausgabe im HTTP Header sauber aus. Wird jedoch ein PHP Script aufgerufen, erhält man folgenden HTTP Header:

HTTP/1.x 200 OK
Date: Sun, 07 Sep 2008 20:32:52 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5.3
Content-Length: 414
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

PHP fügt dem HTTP Header bei der Ausgabe eines Scriptes selbstständig diese Informationen hinzu. Um dies zu ändern muss die Datei php.ini geändert werden.
Geben Sie folgenden Befehl ein:

gksudo gedit /etc/php5/apache2/php.ini

Etwa ab Zeile 254 findet sich folgender Abschnitt:

; Misc
;
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
expose_php = On

Ändern Sie

expose_php = On

in

expose_php = Off

Damit die Änderungen wirksam werden müssen Sie selbstverständlich auch den Webserver mit:

sudo /etc/init.d/apache2 restart

noch einmal neu starten. Nun sollte auch der Hinweis aus PHP beim ausführen von Scripten aus dem Header verschwunden sein.

Links:
http header online auslesen