O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

2 Informationsgewinnung18
Die Verwendung eines Proxys oder Loadbalancers wird dabei ebenso
entdeckt wie auch alle Ports eines Systems, die auf eine Anfrage aus
dem Internet warten. Ein solcher Portscan ist jedoch für den Angreifer
nicht unproblematisch, denn eine Anfrage auf einem nicht geöffneten
Port kann Alarm in einer eventuell vorhandenen Firewall oder einem
Intrusion-Detection-System (IDS) auslösen. Ein solches System, das
den Netzwerkverkehr quasi in Echtzeit analysiert und Verdächtiges an
den Administrator meldet, hilft diesem, das Gefahrenpotenzial einzu-
schätzen und Gegenmaßnahmen einzuleiten. So können wenige variie-
rende Anfragen von ein- und derselben IP-Adresse oft auf das Aus-
kundschaften eines Systems auf bekannte Lücken hindeuten.
Einige dieser Werkzeuge werden Sie bereits in diesem Kapitel, wei-
tere im Kapitel 3 »Parametermanipulation« kennenlernen.
Um einem Angreifer die Informationsgewinnung zu erschweren,
sollte ein Webserversystem so sicher wie möglich konfiguriert werden.
Angefangen bei der Modifikation des Betriebssystems über die sichere
Konfiguration von PHP und Datenbank hinaus muss sich die Auf-
merksamkeit auch verstärkt auf die Webanwendung richten, die meist
das größte Sicherheitsrisiko darstellt. Vor allem Besitzer eines soge-
nannten Root-Servers sollten dieses Kapitel aufmerksam lesen, denn
sie sind in aller Regel allein für ihren Server verantwortlich – ebenso
Administratoren von Firmen- und Projektservern.
Die in diesem Kapitel verwendeten Konfigurationsoptionen und
Tests beziehen sich auf den Apache-Webserver 1.3.40 oder 2.0.63 bzw.
auf den Microsoft Internet Information Server 6.0. Verwendet wurde
PHP in der Version 5.2.5; MySQL 4.1.10 kam als Datenbanksystem
zum Einsatz.
2.2 Webserver erkennen
Es gibt mittlerweile viele freie und auch kommerzielle Webserver; der
am meisten verbreitete ist der Netcraft-Serverstatistik
1
zufolge der
kostenlose Apache-Webserver. So wurden im Dezember 2007 nahezu
50% aller Webserver mit Apache betrieben. Apache, aber auch die
meisten anderen Webserver unterstützen die Skriptsprache PHP in ver-
schiedenen Variationen (CGI, Modul, FastCGI). Jeder dieser Webser-
ver behandelt bestimmte Anfragen anders, und anhand dieser verschie-
denen Verhaltensweisen können Sie einen Webserver fast eindeutig
identifizieren.
1. http://news.netcraft.com/archives/2007/12/29/
december_2007_web_server_survey.html
192.2 Webserver erkennen
2.2.1 Server-Banner erfragen
Ein Server-Banner ist die Visitenkarte des Webservers und wird bei
jeder Antwort an den Client zurückgesendet. In diesem Server-Banner
stehen Informationen über den Server selbst, installierte Module und
die Betriebssystemumgebung, auf der der Webserver installiert ist. Die
folgenden Einstellungen sollten – angepasst an Ihre Webserverkonfigu-
ration – für Produktionssysteme immer gelten, denn das erschwert
einem Angreifer die Informationsgewinnung ungemein und macht eine
Identifikation des Webservers schwieriger.
Was ist ein Server-Banner?
Im Webserver-Banner ist fast immer der Servername und die
Versionsnummer angegeben. Die installierten Module und die verwen-
deten Skriptsprachen werden bei einigen Webservern ebenso mitgesen-
det wie auch noch eine kurze Angabe über das Betriebssystem selbst.
Server: Apache/1.3.33 (Unix) mod_ssl/2.8.16
Ein solches Server-Banner kann mit Werkzeugen wie z.B. telnet oder
netcat erfragt werden, die zum Lieferumfang fast jeder Linux-Distribu-
tion gehören. Telnet ist ein Terminalemulator, der interaktive Verbin-
dungen zu einem entfernten Rechner ermöglicht und dabei die Client-
funktionen übernimmt. Netcat dient dazu, Daten von der Standardein-
bzw. -ausgabe über Netzwerkverbindungen zu transportieren.
Server-Banner des
Apache-Webservers
verstecken
Die Versionsinformationen können in der Konfiguration des Apache-
Webservers mithilfe einer Konfigurationsoption untersagt werden,
sodass dieser kein Server-Banner mehr ausliefert.
ServerTokens Prod|Min|OS|Full
Steht die Option auf Prod, wird nur der Produktname, also »Apache«,
ausgegeben. Bei
Min, also der Minimalausgabe, wird »Apache« und die
Versionsnummer ausgegeben.
OS steht für »Operating System«, gibt
also zusätzlich zu »Apache« und den Versionsinformationen noch eine
Information über das verwendete Betriebssystem aus.
Full zeigt
zusätzlich noch die installierten Module an.
Abb. 2–1
Ausgabe von netcat
2 Informationsgewinnung20
Bei jeder Fehlermeldung, die vom Apache-Webserver kommt, wird
zusätzlich zum eigentlichen Fehler noch eine Unterschriftszeile mit
ausgegeben.
Apache/1.3.33 (Unix) mod_ssl ...
Apache: Serversignatur
unterdrücken
Soll diese Zeile unterdrückt werden, kann in der Konfigurationsdatei
des Apache-Webservers folgende Option geändert werden:
ServerSignature Off
So wird eine Ausgabe der Serverinformationen im Fehlerfall ausge-
schaltet.
Webserverbanner
fälschen
Sollen diese Informationen komplett versteckt oder sollen dem
Angreifer Falschinformationen geliefert werden, können Sie entweder
das Sicherheitsmodul mod_security (siehe auch Kapitel 10) installieren
oder in den Quellcode des Webservers eingreifen.
Das Server-Banner des Apache-Webservers hat folgenden Aufbau:
SERVER_BASEPRODUCT/SERVER_BASEVERSION (OS) Apache modules
Zusätzlich gibt es noch die Konstante SERVER_BASEVENDOR, die den Her-
steller – also die Apache Group – angibt.
In der Datei
version.h stehen folgende Zeilen, die abgeändert wer-
den müssen:
#define SERVER_BASEVENDOR "Apache Group"
#define SERVER_BASEPRODUCT "Apache"
#define SERVER_BASEVERSION "1.3.40"
Diese Konstanten können Sie nach Herzenslust verändern, müssen
danach jedoch den Webserver mit dem so geänderten Quellcode neu
übersetzen und installieren.
Server-Banner des Internet
Information Server
verstecken
Bei Microsofts Internet Information Server kann das Server-Ban-
ner mit dem Tool URLScan verändert werden. Bei URLScan handelt es
sich um einen ISAPI-Filter, der dem Webserver-Administrator weitere
Konfigurationsoptionen zur Verfügung stellt. Diese Veränderung neh-
men Sie wie folgt vor:
1. Beenden des IIS und aller abhängigen Dienste.
2. Im Ordner
%Systemroot%\System32\Inetsrv\Urlscan befindet sich
eine Datei
urlscan.ini. In dieser Datei befindet sich ein Eintrag:
RemoveServerHeader=0 Diesen Eintrag auf 1 ändern.
3. Internet Information Server neu starten.
Nach der nächsten Anfrage an den Webserver erscheint kein Server-
Banner mehr in der Antwort.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required