
Apache + PHP
Bei einer kürzlichen Kontrolle
des Apache-Logfiles fielen mir massenweise folgender Meldungen auf:
[Sat Nov 07 12:00:49 2009] [error] [client xxx.xxx.xxx.xxx] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
Da man Anfragen an einen Server ja in der Regel nicht ohne Grund stellt, ist natürlich die Frage: Was gibt denn der Server für Infos als Header raus, wenn ein HTTP-Request gestellt wird?
Wie ich feststellen musste, sind das in der Standard-Konfiguration jede Menge Infos! Darunter unter Anderem:
- verwendetes Betriebssystem
- verwendeter HTTP-Server mit Versionsnummer
- installierte Mods, wie z. B. Python, SSL, Perl, etc. sowie die jeweilige Version
- bei Aufruf einer PHP-Seite auch die PHP-Version
Kurz darüber nachgedacht… Wen gehen diese Daten etwas an? Tja, aus Sicherheitsgründen eigentlich niemanden, der nicht direkt aus Verwaltungsgründen oder Programmierfragen etwas mit dem Server zu tun hat. Also – wie bringe ich Apache und PHP bei, nicht so zu tratschen?
Die Lösung
sind zwei Einträge in den Konfigurationsdateien von Apache und PHP.
Zuerst der Eintrag für den Apache – wieviele Infos der Apache preisgeben darf legt man über den Eintrag “ServerTokens” fest. Den kann man z. B. einfach ganz in die letzte Zeile der Datei /etc/apache2/apache2.conf schreiben.
Fünf Einstellungen stehen dabei zur Auswahl:
- Kein Eintrag oder auskommentiert = Produktname + Version, Betriebssystem und Module
- OS = Produktname + Version und Betriebssystem
- Min = Nur Produktname + Version
- ProductOnly = Nur Produktname
- Major = Nur Produktname + Haupt-Versionsnummer
Also würde bspw. ein Eintrag in der Form “ServerTokens ProductOnly” dafür sorgen, dass im Header nur noch die Info “Server = Apache” mitgesendet wird.
Die zweite Änderung betrifft die Datei /etc/php5/apache2/php.ini – hier sucht man sich den Eintrag “expose_php =” und setzt diesen auf den Wert “Off“.
Abschließend
folgt noch ein Neustart des Apache-Servers über den Befehl “/etc/init.d/apache2 restart” und schon hat das Getratsche – wie im Bild zu sehen – ein Ende.

ScreenShot Antwort-Header