Mehr Sicherheit für das Web
Artikel erschienen in Swiss IT Magazine 2002/07
Die Internetinformationsdienste von Windows NT und Windows 2000 sind neben dem Apache Webserver die führende Serverplattform im Internet und in Intranets. Gleichzeitig sind sie aber durch die Integration mit ASP (Active Server Pages) und zukünftig der gesamten .Net-Entwicklungsumgebung die Grundlage für leistungsfähige Web-basierende Anwendungen. Microsoft hat seit dem ersten Release des damals noch als Internet Information Server bezeichneten Produkts die Funktionalität wesentlich ausgebaut und auch intensiv an der Sicherheit und Skalierbarkeit des Produkts gearbeitet. Dennoch gab es immer wieder Sicherheitsprobleme, die durch Patches behoben werden mussten, und auch Stabilitätsprobleme, wenn eine fehlerhafte Anwendung auf dem System ausgeführt wurde. Typischerweise zeigen sich die Sicherheitsprobleme auch in Denial-of-Service-Angriffen, die üblicherweise das Ziel haben, den Server zum Absturz zu bringen.
Microsoft hat schon mit der aktuellen Version 5, die mit Windows 2000 geliefert wird, getrennte Ausführungsräume für verschiedene auf dem Webserver ausgeführte ASP-Anwendungen bereitgestellt. Durch die Architektur, die in ihren Grundzügen noch auf die ersten Versionen des Produkts zurückgeht, führt die Nutzung dieses dedizierten Anwendungsmodus aber zu Performance-Problemen.
Bei den IIS 6 hat Microsoft nun die Architektur deutlich verändert. Unterhalb des w3svc, des bisherigen Serverdienstes für die IIS, gibt es nun mit http.sys einen Kernel-Mode-Treiber, der die http-Anforderungen empfängt und in einem URI-Cache (Uniform Resource Identifier) zwischenspeichert.
Inetinfo.exe, in dessen Kontext w3svc bisher ausgeführt wurde, hat damit nicht mehr die zentrale Rolle wie bisher. Diese Anwendung konnte nämlich beispielsweise durch fehlerhafte ISAPI-Anwendungen oder andere Fehler in Anwendungen bisher relativ leicht lahmgelegt werden.
Dagegen beschränkt sich http.sys auf das reine Empfangen, Zwischenspeichern und Weiterleiten von Anforderungen und ist für diese Aufgabe auch optimiert. Applikationen werden neu in Anwendungspools ausgeführt. Den Pools ist jeweils ein URI-Namensraum zugeordnet, so dass Anforderungen an bestimmte Adressen an definierte Pools weitergeleitet werden. Da diese Anforderungen aber von http.sys zwischengespeichert werden, wirkt sich der kurzzeitige Ausfall eines Pools nicht kritisch aus. W3svc wiederum kümmert sich darum, dass Pools korrekt ausgeführt werden, und startet diese bei Bedarf neu.
Diese Funktion wird vom WAS (Web Administration Service) als einer neuen Komponente im w3svc übernommen. Darüber hinaus kann der WAS aber auch Prozesse bei einem Aufruf der URI durch einen Benutzer gezielt starten und nach definierten Leerlaufzeiten beenden, um die Last auf dem Server zu optimieren.
Mit dieser Änderung in der Architektur hat Microsoft einen wichtigen Schritt in Richtung einer höheren Skalierbarkeit, Sicherheit und Verfügbarkeit der IIS getan. Die Länge der Warteschlangen, in denen http-Anforderungen zwischengespeichert werden, ist dabei flexibel konfigurierbar.
Ein interessanter Nebeneffekt sind die sogenannten Web-Gardens, die sich mit der neuen Architektur realisieren lassen. Für eine Website können so mehrere Anwendungspools definiert werden, die verschiedene Funktionen abdecken. Diese lassen sich auf Multiprozessor-Systemen auf verschiedene Prozessoren verteilen. Ausserdem können Teilprozesse keine Probleme mehr in anderen Bereichen der Website verursachen.
Die Änderungen bei den IIS 6 beschränken sich aber nicht auf die neue Architektur. Microsoft hat auch einiges an Arbeit investiert, um den Umgang mit der Metabase zu erleichtern. In der Metabase werden die Konfigurationsinformationen zu ASP-Anwendungen gespeichert. Diese können nun im laufenden Betrieb bearbeitet und gesichert werden. Die Änderungen sind in einer Metabase-History protokolliert, über die auch ein Rollback zu einem früheren Zustand erfolgen kann. Die wichtigste Änderung ist aber zweifelsohne, dass die Metabase nicht mehr in einem binären Format gespeichert wird, sondern in zwei XML-Dateien abgelegt ist. Damit lässt sie sich einfach bearbeiten.
Die IIS 6 machen deutlich, dass es bei Webservern heute nicht mehr um die grossen Funktionssprünge geht. Dafür ist die Technologie zu einfach. Bei der Optimierung gibt es aber noch viel Potential, um insbesondere eine höhere Sicherheit zu erreichen. Microsoft hat die Schwachstellen der Internetinformationsdienste durch die neue Architektur konsequent adressiert.
Wie gut das in der Praxis auch auf sehr grossen Sites funktioniert, muss sich noch zeigen. Ein Problem haben die IIS 6 aber weiterhin: Es ist eine reine Microsoft-Lösung für Microsoft-Betriebssysteme und -Anwendungsarchitekturen - mit allen Vor- und Nachteilen.