Was sind alle Benutzerkonten für IIS / ASP.NET und wie unterscheiden sie sich?

282

Unter Windows Server 2008 mit installiertem ASP.NET 4.0 gibt es eine ganze Reihe verwandter Benutzerkonten, und ich kann nicht verstehen, welches welches ist, wie sie sich unterscheiden und welches WIRKLICH das ist, unter dem meine App ausgeführt wird. Hier ist eine Liste:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • NETZWERKDIENST
  • SERVICE VOR ORT.

Was ist was?

Vilx-
quelle
Und Windows Server 2012 mit ASP.NET 4.0 oder höher verwenden?
Kiquenet

Antworten:

432

Dies ist eine sehr gute Frage, und leider stellen viele Entwickler nicht genügend Fragen zur IIS / ASP.NET-Sicherheit, wenn sie Webentwickler sind und IIS einrichten. Also los geht's ....

So decken Sie die aufgeführten Identitäten ab:

IIS_IUSRS:

Dies ist analog zur alten IIS6- IIS_WPGGruppe. Es handelt sich um eine integrierte Gruppe, deren Sicherheit so konfiguriert ist, dass jedes Mitglied dieser Gruppe als Anwendungspoolidentität fungieren kann.

IUSR:

Dieses Konto entspricht dem alten IUSR_<MACHINE_NAME>lokalen Konto, das der standardmäßige anonyme Benutzer für IIS5- und IIS6-Websites war (dh das Konto, das über die Registerkarte Verzeichnissicherheit der Eigenschaften einer Site konfiguriert wurde).

Weitere Informationen zu IIS_IUSRSund IUSRsiehe:

Grundlegendes zu integrierten Benutzer- und Gruppenkonten in IIS 7

DefaultAppPool:

Wenn ein Anwendungspool für die Ausführung mit der Funktion "Anwendungspoolidentität" konfiguriert ist, wird im laufenden Betrieb ein "synthetisiertes" Konto IIS AppPool\<pool name>erstellt, das als Poolidentität verwendet wird. In diesem Fall wird ein synthetisiertes Konto IIS AppPool\DefaultAppPoolerstellt, das für die Lebensdauer des Pools erstellt wird. Wenn Sie den Pool löschen, ist dieses Konto nicht mehr vorhanden. Wenn Sie Berechtigungen auf Dateien und Ordner anwenden, müssen diese mit hinzugefügt werden IIS AppPool\<pool name>. Sie sehen diese Poolkonten auch nicht im Benutzermanager Ihres Computers. Weitere Informationen finden Sie im Folgenden:

Anwendungspoolidentitäten

ASP.NET v4.0: - -

Dies ist die Anwendungspoolidentität für den ASP.NET v4.0-Anwendungspool. Siehe DefaultAppPooloben.

NETWORK SERVICE: - -

Das NETWORK SERVICEKonto ist eine in Windows 2003 eingeführte integrierte Identität. Es NETWORK SERVICEhandelt sich um ein Konto mit geringen Berechtigungen, unter dem Sie Ihre Anwendungspools und Websites ausführen können. Eine Website, die in einem Windows 2003-Pool ausgeführt wird, kann sich weiterhin als anonymes Konto der Website ausgeben (IUSR_ oder was auch immer Sie als anonyme Identität konfiguriert haben).

In ASP.NET vor Windows 2008 konnte ASP.NET (normalerweise NETWORK SERVICE) Anforderungen unter dem Anwendungspoolkonto ausführen . Alternativ können Sie ASP.NET so konfigurieren, dass es sich über die <identity impersonate="true" />Einstellung in der web.configDatei lokal als anonymes Konto der Site ausgibt (wenn diese Einstellung gesperrt ist, muss dies von einem Administrator in der machine.configDatei vorgenommen werden).

Die Einstellung <identity impersonate="true">ist in gemeinsam genutzten Hosting-Umgebungen üblich, in denen gemeinsam genutzte Anwendungspools verwendet werden (in Verbindung mit teilweisen Vertrauenseinstellungen, um das Auflösen des imitierten Kontos zu verhindern).

In IIS7.x / ASP.NET wird die Identitätswechselsteuerung jetzt über die Authentifizierungskonfigurationsfunktion einer Site konfiguriert. Sie können also konfigurieren, dass es als Poolidentität IUSRoder als ein bestimmtes benutzerdefiniertes anonymes Konto ausgeführt wird.

LOCAL SERVICE:

Das LOCAL SERVICEKonto ist ein integriertes Konto, das vom Service Control Manager verwendet wird. Es verfügt über Mindestrechte auf dem lokalen Computer. Es hat einen ziemlich begrenzten Anwendungsbereich:

LocalService-Konto

LOCAL SYSTEM:

Sie haben nicht danach gefragt, aber ich füge der Vollständigkeit halber hinzu. Dies ist ein lokal integriertes Konto. Es hat ziemlich umfangreiche Privilegien und Vertrauen. Sie sollten niemals eine Website oder einen Anwendungspool so konfigurieren, dass sie unter dieser Identität ausgeführt werden.

LocalSystem-Konto

In der Praxis:

In der Praxis wird der bevorzugte Ansatz zum Sichern einer Website (wenn die Site über einen eigenen Anwendungspool verfügt - dies ist die Standardeinstellung für eine neue Site in der MMC von IIS7) darin ausgeführt Application Pool Identity. Dies bedeutet, dass die Identität der Site in den erweiterten Einstellungen des Anwendungspools auf Folgendes festgelegt wird Application Pool Identity:

Geben Sie hier die Bildbeschreibung ein

Auf der Website sollten Sie dann die Authentifizierungsfunktion konfigurieren:

Geben Sie hier die Bildbeschreibung ein

Klicken Sie mit der rechten Maustaste und bearbeiten Sie den Eintrag Anonyme Authentifizierung:

Geben Sie hier die Bildbeschreibung ein

Stellen Sie sicher, dass "Anwendungspoolidentität" ausgewählt ist:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie Datei- und Ordnerberechtigungen anwenden, erteilen Sie der Anwendungspoolidentität alle erforderlichen Rechte. Wenn Sie beispielsweise die Identität des Anwendungspools für die ASP.NET v4.0Poolberechtigungen erteilen, können Sie dies entweder über den Explorer tun:

Geben Sie hier die Bildbeschreibung ein

Klicken Sie auf die Schaltfläche "Namen überprüfen":

Geben Sie hier die Bildbeschreibung ein

Oder Sie können dies mit dem ICACLS.EXEDienstprogramm tun :

icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ ASP.NET v4.0" :( CI) (OI) (M)

... oder ... wenn der Anwendungspool Ihrer Site aufgerufen wird, BobsCatPicBlogdann:

icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ BobsCatPicBlog" :( CI) (OI) (M)

Ich hoffe, das hilft, die Dinge zu klären.

Aktualisieren:

Ich bin gerade auf diese hervorragende Antwort aus dem Jahr 2009 gestoßen, die eine Reihe nützlicher Informationen enthält, die es wert sind, gelesen zu werden:

Der Unterschied zwischen dem Konto "Lokales System" und dem Konto "Netzwerkdienst"?

Kev
quelle
Stimmen Sie nicht zu, denselben Benutzer für die anonyme Authentifizierung und die Identität des App-Pools zu verwenden ... wenn Sie der Apppoolidentität eine Schreibberechtigung für einen Ordner
erteilen müssen
1
@ Giammin - warum nicht? Sofern Sie keinen Sonderfall haben, ist die Verwendung von Anwendungspoolidentitäten der sicherste Ansatz, vorausgesetzt, jeder Standort befindet sich in einem eigenen Anwendungspool. Ich hasse es, den "Appell an die Autorität" zu machen, bin aber seit 15 Jahren ein gemeinsamer Webhost-Ingenieur und Sicherheitsmann. Dieser Ansatz ist für IIS7 + ein Kinderspiel.
Kev
@ Kevin einfach ich mag es nicht, dem anonymen Benutzer
Schreibberechtigung
1
Ihre Anwendungspools können mithilfe von IIS AppPool \ <Name_des_Apppools> noch spezifischer werden. In einem ähnlichen Zusammenhang funktioniert IIS Express nur mit IIS AppPool \ ASP.NET v4.0, da die virtuellen Konten des App-Pools nicht erstellt werden.
Kevindaub
@ daub815 - IIS Express funktioniert anders, da es unter Ihrem Windows-Login und -Start ausgeführt und beim Entwickeln und Debuggen nach Bedarf heruntergefahren werden sollte. In Wirklichkeit werden keine Full Fat IIS-Anwendungspools oder -Infrastrukturen verwendet oder sind von diesen abhängig. Die Absicht von IIS Express war es, Entwicklern so viel Verhalten, Geschmack und Konfiguration wie der Realität zu vermitteln, da der Spielzeug-Webserver von VS stark eingeschränkt war ...
Kev