Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Tali Smith
Einführung
Die Empfehlung zum Isolieren von Websites in einer gemeinsamen Hostingumgebung entspricht allen allgemeinen Sicherheitsisolationsempfehlungen für Internetinformationsdienste 7 (IIS 7) und höhere Versionen. Insbesondere wird Folgendes empfohlen:
- Verwenden eines Anwendungspools pro Website
- Verwenden eines dedizierten Benutzerkontos als Identität für den Anwendungspool
- Konfigurieren der anonymen Benutzeridentität für die Verwendung der Anwendungspoolidentität
- Sicherstellen, dass der Identitätswechsel von FastCGI in der Datei „Php.ini“ aktiviert ist
Die folgende Abbildung bietet eine Architekturansicht von Anwendungspools.
Abbildung 1: Anwendungspools
Erstellen von Anwendungspools
Sie können Anwendungspools über die Benutzeroberfläche oder über die Befehlszeile erstellen.
- Navigieren Sie im IIS-Manager zum Bereich Verbindungen.
- Wählen Sie die Option Anwendungspools aus, und klicken Sie dann auf Anwendungspool hinzufügen, um das Dialogfeld „Anwendungspool hinzufügen“ zu öffnen.
- Geben Sie einen eindeutigen Namen für den Anwendungspool ein.
- Wählen Sie ggf. die Microsoft® .NET Framework-Version für den zu verwendenden Anwendungspool aus, und wählen Sie dann den Pipelinemodus aus.
Sobald ein Pool erstellt wurde, können Sie die Einstellungen bei Bedarf ändern.
- Wählen Sie im Bereich Verbindungen die Option Anwendungspools aus.
- Wählen Sie im Bereich Arbeit den Anwendungspool aus, den Sie konfigurieren möchten.
- Wählen Sie im Bereich Aktionen, die Option Grundeinstellungen aus. Beachten Sie, dass die Dialogfelder „Standardeinstellungen“ und „Anwendungspool hinzufügen“ mit Ausnahme des Dialogfeldtitels identisch aussehen.
Sie können auch die Befehlszeile verwenden. Verwenden Sie:
appcmd add apppool /name:string
Beachten Sie, dass die Zeichenfolge der Name des Anwendungspools ist.
Im Dialogfeld „Anwendungspool bearbeiten“ können Sie konfigurieren, wie IIS 7 und höhere Versionen das Recycling von Arbeitsprozessen für den Anwendungspool behandeln.
Abbildung 2: „Anwendungspool bearbeiten“
Anwendungspoolidentitäten
Anwendungspoolidentitäten stellen ein neues Sicherheitsfeature dar, mit dem Sie Anwendungspools unter einem eindeutigen Konto ausführen können, ohne Domänenkonten oder lokale Konten erstellen und verwalten zu müssen. Der Name des Anwendungspoolkontos entspricht dem Namen des Anwendungspools. Die folgende Abbildung zeigt einen IIS-Arbeitsprozess (w3wp.exe), der als DefaultAppPool-Identität ausgeführt wird.
Abbildung 3: Anwendungspool-Identitätskonten
Anwendungspool-Identitätskonten
Arbeitsprozesse in IIS 6 und IIS 7 sowie höheren Versionen werden standardmäßig als NETZWERKDIENST ausgeführt. Beim NETZWERKDIENST handelt es sich um eine integrierte Identität von Windows®. Der NETZWERKDIENST erfordert kein Kennwort und verfügt nur über Benutzerberechtigungen (relativ niedrige Berechtigungen). Die Ausführung als Konto mit geringen Rechten ist eine bewährte Sicherheitspraxis, da dadurch böswillige Benutzer daran gehindert werden, Softwarefehler auszunutzen, um die Kontrolle über das System zu gewinnen.
Im Laufe der Zeit wurden jedoch immer mehr Windows-Systemdienste als NETZWERKDIENST ausgeführt, und diese Dienste können andere Dienste manipulieren, die unter derselben Identität ausgeführt werden. Da IIS-Arbeitsprozesse standardmäßig Drittanbietercode (PHP-Code, klassischen ASP-Code und Microsoft® ASP.NET-Code) ausführen, wurde es notwendig, IIS-Arbeitsprozesse von anderen Windows-Systemdiensten zu isolieren und IIS-Arbeitsprozesse unter eindeutigen Identitäten auszuführen. Das Windows-Betriebssystem bietet ein Feature namens Virtuelle Konten, mit dem IIS eindeutige Identitäten für jeden einzelnen Anwendungspool erstellen können.
Wenn ein neuer Anwendungspool erstellt wird, erstellt der IIS-Verwaltungsprozess eine Sicherheits-ID (SID), die den Namen des Anwendungspools selbst darstellt. Wenn Sie beispielsweise einen Anwendungspool mit dem Namen „MyNewAppPool“ erstellen, wird eine SID mit dem Namen „MyNewAppPool“ im Windows-Sicherheitssystem erstellt. Ressourcen können mithilfe dieser Identität geschützt werden. Beachten Sie, dass die Identität jedoch kein echtes Benutzerkonto ist. Sie wird nicht als Benutzer in der Windows-Benutzerverwaltungskonsole angezeigt.
Versuchen Sie, eine Datei im Windows-Explorer® auszuwählen und die Identität „DefaultAppPool“ zur Zugriffssteuerungsliste (Access Control List, ACL) hinzuzufügen:
- Starten Sie den Windows-Explorer.
- Wählen Sie eine Datei oder ein Verzeichnis aus.
- Klicken Sie mit der rechten Maustaste auf den Dateinamen, und klicken Sie dann auf Eigenschaften.
- Klicken Sie auf die Registerkarte Sicherheit .
- Klicken Sie zunächst auf Bearbeiten und dann auf Hinzufügen.
- Klicken Sie auf Speicherorte, und wählen Sie Ihren Computer aus.
- Geben Sie iis apppool\defaultapppool im Textfeld Geben Sie die auszuwählenden Objektnamen ein ein.
- Klicken Sie auf Namen überprüfenund anschließend auf OK.
Die Datei oder das Verzeichnis, die bzw. das Sie jetzt ausgewählt haben, ermöglicht auch den DefaultAppPool-Identitätszugriff.
Abbildung 4: Auswählen von Benutzern oder Gruppen
Sie können auch die Befehlszeile mit dem Tool „Icacls.exe“ verwenden. Mit dem folgenden Code erhalten Sie Vollzugriff auf die DefaultAppPool-Identität:
ICACLS test.txt /grant "IIS AppPool\DefaultAppPool":F
Unter den Betriebssystemen Windows® 7 und Windows Server® 2008 R2 werden standardmäßig Anwendungspools als diese Sicherheitsbezeichner (Anwendungspoolidentität) ausgeführt. Ein neuer Identitätstyp mit dem Namen „AppPoolIdentity“ ist verfügbar. Wenn der Identitätstyp „AppPoolIdentity“ ausgewählt ist (Standardeinstellung unter Windows 7 und Windows Server 2008 R2), führen IIS Arbeitsprozesse als Anwendungspoolidentität aus. Bei jedem anderen Identitätstyp wird die Sicherheits-ID nur in das Zugriffstoken des Prozesses eingefügt. Wenn der Bezeichner eingefügt wird, kann der Inhalt weiterhin der Zugriffssteuerungsliste für die AppPool-Identität hinzugefügt werden, die Besitzer des Tokens sind jedoch wahrscheinlich nicht eindeutig. Weitere Informationen finden Sie im folgenden Abschnitt Isolieren von Anwendungspools.
Zugreifen auf das Netzwerk
Die Verwendung des NETZWERKDIENST-Kontos in einer Domänenumgebung hat einen großen Vorteil. Der Arbeitsprozess, der als NETZWERKDIENST ausgeführt wird, kann als Computerkonto auf das Netzwerk zugreifen. Computerkonten werden generiert, wenn ein Computer einer Domäne beigetreten ist:
<domainname>\<machinename>$,
Zum Beispiel:
mydomain\machine1$
Netzwerkressourcen wie Dateifreigaben oder Microsoft® SQL Server-Datenbanken® können der Zugriffssteuerungsliste hinzugefügt werden, um den Zugriff auf dieses Computerkonto zu ermöglichen. Anwendungspoolidentitäten verwenden auch das Computerkonto, um auf Netzwerkressourcen zuzugreifen. Es sind keine Änderungen erforderlich.
Kompatibilitätsprobleme mit Anwendungspoolidentitäten
Eine Herausforderung bei Anwendungspoolidentitäten besteht darin, dass in Anleitungsdokumenten explizit ACL-Ressourcen für den NETZWERKDIENST empfohlen werden (Standardidentität von „DefaultAppPool“ in IIS 6.0 und 7.0). Benutzer müssen ihre Skripts für „IIS AppPool\DefaultAppPool“ in ACL ändern, wenn sie unter IIS 7.5 oder höheren Versionen ausgeführt werden.
IIS laden das Windows-Benutzerprofil nicht, aber bestimmte Anwendungen wie Microsoft® SQL Server® 2008 Express können es trotzdem verwenden (z. B. zum Speichern temporärer Daten). Das Benutzerprofil muss erstellt werden, um temporäre Daten im Profilverzeichnis oder in der Registrierungsstruktur zu speichern. Das Benutzerprofil für das NETZWERKDIENST-Konto wurde vom System erstellt und war immer verfügbar. Beim Wechsel zu eindeutigen Anwendungspoolidentitäten wird vom System jedoch kein Benutzerprofil erstellt. Nur die Standardanwendungspools („DefaultAppPool“ und „Classic .NET AppPool“) verfügen über Benutzerprofile auf dem Datenträger. Wenn Administratoren einen neuen Anwendungspool erstellen, wird kein Benutzerprofil erstellt.
Beachten Sie, dass IIS-Anwendungspools so konfiguriert werden können, dass das Benutzerprofil geladen wird, indem die Einstellung „LoadUserProfile“ auf „true“ festgelegt wird.
Isolieren von Anwendungspools
Durch das Trennen von Anwendungen in mehrere Anwendungspools kann nicht nur die Leistung verbessert, sondern auch die Server- und Standortsicherheit optimiert werden. In früheren Versionen von IIS war es jedoch manchmal schwierig, Webanwendungspools voneinander zu isolieren. Wenn mehrere Anwendungspools für die Ausführung mit derselben Identität konfiguriert sind, kann der in einem Anwendungspool ausgeführte Code Dateisystemobjekte (File System Objects, FSOs) verwenden, um auf zusammengehörige Ressourcen zuzugreifen.
In IIS 7 verfügt jeder Anwendungspool über eine Konfigurationsdatei, die beim Starten des Anwendungspools generiert wird. Diese Dateien werden standardmäßig im Ordner %systemdrive%\inetpub\temp\AppPools
gespeichert.
Jeder Anwendungspool verfügt außerdem über eine Sicherheits-ID (SID), die dem relevanten w3wp.exe-Prozess hinzugefügt wird. Die Konfigurationsdatei des Anwendungspools wird der Zugriffssteuerungsliste (ACL) hinzugefügt, um nur den Zugriff auf diese SID zuzulassen.
Sie können das Tool „Icacls.exe“ verwenden, um die SID zu identifizieren, die auf die Konfigurationsdatei eines beliebigen Anwendungspools angewendet wurde:
icacls.exe %systemdrive%\inetpub\temp\appPools\appPool.config /save output.txt
Benutzer können die Anwendungspool-SID verwenden, um Ihren Inhalt der Zugriffssteuerungsliste hinzuzufügen und Ihre Website zu schützen. Dies ist nützlich für Webhoster, die Inhalte aus verschiedenen externen Quellen akzeptieren müssen.
- Konfigurieren Sie jede Website (oder Webanwendung), die in einem eigenen Webanwendungspool ausgeführt werden soll.
- Konfigurieren Sie die anonyme Authentifizierung, um die Anwendungspoolidentität anstelle des IUSR-Kontos (Industry Usability Reporting) zu verwenden, indem Sie die Eigenschaften der anonymen Authentifizierung bearbeiten.
- Entfernen Sie NTFS-Berechtigungen für die IUSRS-Gruppe und das IUSR-Konto aus den Dateien und Ordnern der Website.
- Verwenden Sie das Tool „Icacls.exe“, um der SID des Anwendungspools Lesezugriff (und optional Ausführungs- und Schreibberechtigungen) für die Dateien und Ordner der Website zu gewähren. Sie können „IIS APPPOOL\ApplicationPoolName“ als Benutzer zum Erteilen von Leseberechtigungen verwenden.
Nach dem Konfigurieren der NTFS-Berechtigungen kann nur die SID den Inhalt der Website lesen, die in einen bestimmten w3wp.exe-Prozess eingefügt wurde. Der gesamte Code, der in anderen w3wp.exe-Prozessen ausgeführt wird (auch bei Ausführung mit derselben Identität), kann nicht auf die Inhalte dieser Website zugreifen.
Hinweis
Dieser Artikel basiert auf dem Inhalt des Artikels zu Anwendungspoolidentitäten, der vom IIS-Team geschrieben und am 27. Mai 2009 veröffentlicht wurde.