Die Sicherheit von Webservern
II. Die Auswahl des richtigen Systems
Die grundlegende Entscheidung für spätere Sicherheitsfragen liegt bei der Auswahl des richtigen Webservers. Von vielen hundert Varianten, welche auf dem Markt existieren, kristallisieren sich zwei Produkte heraus: der Microsoft Internet Information Services (IIS) Webserver mit 30% und der Apache Webserver mit 60% Marktanteil.
2.1. Der IIS Webserver und ASP
Das US-Amerikanische Unternehmen Microsoft Corporation, im folgenden "Microsoft" genannt, verkauft ausschließlich binäre Programme. Ein Einblick in die Quelltexte ist Außenstehenden nicht erlaubt. (Closed Source) Der Webserver von Microsoft zeichnet sich durch eine einfache Installation, eingebauten Administrationstools und verständliche Hilfsprogramme (wizards) aus.
Aufgrund der aggressiven Marktpolitik von Microsoft wird der Webserver nur in einem geschlossenem Paket, bestehend aus dem Betriebssystem Windows und dem Konzept "Internet Information Services", ausgeliefert. Auf anderen Betriebsystem-Plattformen steht er somit nicht zur Verfügung.
Serverseitig kann man mit VBScript oder JScript programmieren. Um diese Scripte in HTML einzubetten, benutzt man die ASP Technik (Active Server Pages). Da die beiden Scriptsprachen einen zu kleinen Funktionsumfang besitzen, werden komplexere Aufgaben in COM- oder ActiveX- Komponenten verlagert. Aufgrund der Kompliziertheit von nicht einheitlichen Funktionsbibliotheken, entwickelt Microsoft seit neuestem das .NET Framework ("dotnet").
2.1.1. Die Programm-Sicherheit
Der IIS (Internet Information Services) ist das alleinige Server-Konzept von Microsoft. In der einfachsten Form ist der IIS ein Web- und FTP Server. Durch weitere Module kann man das Aufgabenfeld erweitern. Der IIS ist dabei tief mit dem Betriebssystem verwurzelt und arbeitet mit dessen Teilen, wie der Benutzerverwaltung, den Script-Engines oder dem Logging Modul zusammen. Die ASP-Engine ist im IIS standardmäßig integriert.
Die Sicherheitskonzepte für Windows 2000/XP und den IIS wirken auf den ersten Blick sehr ausgeklügelt. Es gibt ISAPI-Filter, Benutzerprivilegien und ACL's (Access Control Lists), die auf Dateien (bekannt als NTFS Zugriffsberechtigungen) oder in der Registrierdatenbank wirken können.
Jedoch wurden diese Sicherheitskonzepte in der Vergangenheit oft durchbrochen, da extrem viele Programmfehler vorhanden waren. Dieses wurde verstärkt durch mangelhafte Standardkonfigurationen des Webservers, wie automatisch installierte Script Mappings, gefährliche Beispiel-Scripte und weitere unnötige Dienste.
Um für mehr Vertrauen zu werben, wurde eine öffentliche Stellungnahme von Bill Gates (Firmengründer) wie folgt gegeben: "Wenn wir vor der Wahl stehen, ob wir eine neue Funktion hinzufügen oder ein Sicherheitsproblem lösen können, müssen wir uns für die Sicherheit entscheiden." (Zitat: Heise News-Ticker: Microsoft: Entwicklungspause für die Software-Sicherheit;
http://www.heise.de/newsticker/data/wst-17.01.02-002)
Doch solange die Quelltexte verschlossen bleiben, kann kein Außenstehender erkennen wie viele Bugs (Programmfehler) in diesen Programmen noch schlummern. Die Sicherheit der Microsoft Produkte ist somit nicht einschätzbar.
2.1.2. Die Programmfehler-Beseitigung
Die Fehlerbeseitigung (Patch) bei Microsoft kann drei verschiedene Namen haben.
Wird ein Programmfehler in einem Produkt entdeckt, so reagiert Microsoft mit einem "Update", um ihn zu beheben. Oft gibt es auch ein "Cumulative Update", welches gleich mehrere Updates einer Serie beinhaltet. Zusätzlich erscheint einmal im Jahr ein "Service Pack", welches sich nur auf das Betriebsystem bezieht. Es beinhaltet alle bis dahin erschienen Updates, sowie allgemeine Programmverbesserungen.
Bei Microsoft verdienen diese Fehlerbehebungen wirklich die Bezeichnung Patches (dt. Flicken). Zwischen den verschiedenen Patches entstehen manchmal Versionskonflikte und teilweise werden Patches von Microsoft sogar wieder zurückgezogen - aufgrund fehlerhafter Fehlerbehebungen.
Englischsprachige Patches sind oft inkompatibel mit anderssprachigen Systemen. Trotz akuter Bedrohung müssen deutsche Anwender deshalb oftmals mehrere Tage auf ihren aktuellen Patch warten. Deshalb sollte immer ein englischsprachiges Betriebsystem benutzt werden.
Die zentrale Anlaufstelle für Informationen über Sicherheitslücken bzw. Sicherheitsupdates sind die Microsoft-Security-Bulletin Webseiten.
http://www.microsoft.com/technet/security/current.asp
2.2. Der Apache Webserver und Perl/PHP
Der Apache Webserver ist ein Open-Source Produkt, d.h. der Quelltext ist für jedermann einsehbar. Er steht nahezu jedem Betriebsystem zur Verfügung und ist bekannt für eine hohe Performance bei geringer Hardwareauslastung. Im "Baukastensystem" können neue Funktionen hinzugefügt werden (modulares Konzept).
Zur Geschichte:
1994 gerieten die Entwicklungen des NCSA Webservers ins Stocken. (National Center for Supercomputing Applications, University of Illinois)
Ein Jahr später reagierten einige Benutzer auf diese mangelnde Entwicklung und koordinierten selbst die Fehlerbeseitigungen und Funktionserweiterungen (Patches). Ein neuer Webserver entstand, der Apache. Der Name basiert auf dem Wortspiel "a patchy server" (dt. ein Flickenserver). Bereits 1996 überholte der Apache den Marktanteil des alten NCSA Servers und nimmt bis heute den 1. Platz ein.
Die Scriptsprache Perl steht für "Practical Extraction and Report Language".Bereits 1987 wurde die erste Version veröffentlicht.
Perl ist das Werk des Studenten Larry Wall, welcher auch heute noch die Entwicklung steuert. Der Syntax von Perl gilt als eigenwillig und lässt sich schwer mit anderen Sprachen vergleichen. Perl ist ebenfalls ein Open-Source Produkt und steht unter der "Perl's Artistic Licence". Diese Scriptsprache ist seit Jahren der Standard für CGI. Modulversionen für den Apachen oder den MS IIS sind vorhanden.
Perl hat sich ebenfalls als Shell-Script sowie als Werkzeug für graphische Oberflächen fest etabliert. Perl ist definitiv die am stärksten gefestigte Scriptsprache mit den meisten Supportmöglichkeiten und Experten.
Ebenso gibt es die Scriptsprache PHP. Die 1995 erschienene Sprache steht für die rekursive Abkürzung "PHP: Hypertext Preprocessor". Diese, als PHP/FI 1.0, durch Rasmus Lerdorf ins Leben gerufen, ist eine in HTML eingebettete Scriptsprache. Der Syntax basiert hauptsächlich auf der Programmierersprache C, sowie Elementen aus Java und Perl und eigenen Erweiterungen. Auch PHP ist ein Open-Source Produkt und steht unter der "PHP License".
PHP kann als CGI-Programm auf jedem kompatiblen Webserver laufen. Es existieren natürlich auch Modulversionen für den Apachen oder den MS IIS.
PHP zeichnet sich besonders durch leichte Erlernbarkeit, ausgezeichnete Datenbank-anbindungen und zahlreiche zusätzliche Funktionsbibliotheken aus.
2.2.1. Die Programm-Sicherheit
Der Apache gilt als grundsolide. Er kann durch eine einzige Textdatei konfiguriert werden. Diese Textdatei hat einen einfachen und trotzdem flexiblen Syntax. Eine Dokumentation erklärt alle Instruktionen.
Die Sicherheitsphilosophie für alle Dateien und Verzeichnisse ist grundsätzlich so geregelt, dass man für den entsprechenden Server nur das freischaltet, was tatsächlich gebraucht wird.
Durch ein Unix Betriebssystem genießt der Apache zusätzlich ein in Jahren gereiftes Benutzerkonzept, in dem er nur begrenzte Rechte durch das Betriebsystem besitzt. (Der IIS läuft dagegen als "Enterprise Service".)
CGI Programme, wie Perl und PHP, sind getrennte Projekte. Ihr Entwicklung geschieht unabhängig vom Apachen. Ein CGI- Programm startet normalerweise mit denselben eingeschränkten Rechten des Webservers. Durch den Apache suEXEC Support kann ein CGI Programm sogar noch zusätzlich kontrolliert werden.
2.2.2. Die Programmfehler-Beseitigung
In Bezug auf Bugs sorgen die Open Source Alternativen für ein deutlich besseres Gefühl von Sicherheit. So ist es üblich, dass ein Produkt mehrere Zyklen durchläuft, bis es als stabil gekennzeichnet wird. Hunderte von Entwicklern können den Quelltext lesen und Fehler schon im Keim ersticken. Kommt es dennoch zu einem ernsthaften Sicherheitsloch, so wird, in einer Rekordzeit von der Gemeinschaft der Benutzer, ein Patch zu Verfügung gestellt.
Die Apache Bug Database findet sich unter:
http://nagoya.apache.org/bugzilla/
Die PHP Bug Seite ist auf http://bugs.php.net/ zuhause.
Perl besitzt Perlbug, das WWW Interface gibt es auf http://bugs.perl.org/
Bei allen Open Source Programmen wird sehr transparent mit den Bugs umgegangen. Wirklich grobe Schnitzer wie bei Microsoft passieren sehr selten.
2.3. Fazit
In der Zeitschrift "IX" 3/2002 las man:
"Bemerkenswert: Zum ersten Mal seit Beginn dieser Reihe (Anmerkung: Windows Security) vor einem guten Jahr gibt es diesen Monat keine neuen Sicherheitslöcher in Microsoft-Produkten zu beklagen und keine Patches anzukündigen - zumindest bis zum Redaktionsschluss dieser Ausgabe, der heuer recht früh lag."(Zitat: Christian Segor: Windows Security; in IX 3/2002; hrsg. von Christian Heise; Verlag Heinz Heise GmbH & Co KG, Hannover, 2002)
Ein Administrator muss sich darauf verlassen können, dass er vier Wochen Jahresurlaub nehmen darf, ohne durch seine Abwesenheit ein Sicherheitsrisiko darzustellen.
Zusätzlich müssen die Standardeinstellungen so sicher sein, dass auch der unprofessionelle Serverbetreiber eine solide Installation vorfindet.
Microsoft hat wie dargestellt, keinen ausreichenden Sicherheitsstandard zu bieten. Wer dennoch unabwendbar einen IIS Webserver benutzen muss, wird auf Kapitel VI verwiesen.
Eine zu erwartende Sicherheit kann zwangsläufig nur ein Apache Webserver gewährleisten, auf dem im folgenden Kapitel hauptsächlich eingegangen wird. Als Betriebsystem ist zusätzlich ein Unix (FreeBSD, OpenBSD, Linux...) zu empfehlen.