Wer kennt es nicht? Man ruft eine Seite auf, die es nicht (mehr) gibt und erhält eine Fehlermeldung wie zum Beispiel Not Found. Zusammen mit dieser Meldung auch gleich noch jede Menge an Informationen über den Webserver sowie die verwendeten Erweiterungen.

404 Meldung eines “gesprächigen” Apache Webservers

Diese Angaben können für potentielle Angreifer wichtige Informationen sein und auf mögliche Bugs hinweisen. Aus diesem Grund sollte man die Ausgabe des Servers deaktivieren oder zumindest einschränken.

Hierfür gibt es zwei Einstellungen in der Konfiguration des Apache-Webservers:

  • ServerSignature On | Off – Bestimmt ob die Serversignatur angezeigt wird.
  • ServerTokens Full | OS | Minimal | Minor | Major | Prod – Bestimmt die Art der Serversignatur, wobei Full die meisten und Prod die wenigsten Informationen ausgibt. Es empfiehlt sich die Standardeinstellung Full auf Prod zu ändern.

Bei Ubuntu Linux sind diese beiden Einstellungen in der Datei /etc/apache2/conf-available/security.conf zu finden. Je nach System können sie aber auch in den Dateien /etc/apache2/conf.d/security, /etc/apache2/apache2.conf oder /etc/apache2/httpd.conf enthalten sein.

Nachdem die Konfiguration wunschgemäß angepasst ist, reicht dem Apache ein kurzer reload um die Änderungen zu übernehmen: systemctl reload apache2.service bzw. service apache2 reload

Anschließend sollte die Fehlerseite (bei der Einstellung ServerTokens Prod) nun so aussehen:

404 Meldung eines “ruhigen” Apache Webservers

 

Der Header X-Powered-By

Der Apache ist schon mal ruhig gestellt. Wenn man sich nun aber die HTTP-Header, die der Webserver bei einer PHP-Datei mitliefert, ansieht, dann fällt der Eintrag X-Powered-By: PHP/5.x.y-... auf.

Dieser Header von PHP selbst eingefügt und kann in der php.ini über die Einstellung expose_php deaktiviert werden. Je nach System befindet sich die Datei an verschiedenen Orten wie zum Beispiel /etc/php5/apache2/php.ini oder /etc/php.ini. Bei Verwendung von ISP Config existiert ggf. für jede Webseite eine eigene Datei unter /var/www/conf/webX/php.ini

In der php.ini sucht man einfach nach expose_php On (was die Standardeinstellung ist) und ersetzt diese Zeile dann durch expose_php Off.

Nach einem reload vom Apache sollte der Header dann verschwunden sein.